ca-components 1.3.96 → 1.3.98

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.
@@ -7,7 +7,17 @@ import { MapSvgRoutes } from '../svg-routes';
7
7
  export class MapMarkerIconHelper {
8
8
  static { this.getRoutingMarkerElement = (stopNumber, stopType, isStopChecked, isLightMode, labelName) => {
9
9
  const markerElement = document.createElement('div');
10
- const markerSvg = MapMarkerIconHelper.getRoutingMarkerIcon(stopNumber, stopType, isStopChecked, isLightMode);
10
+ let markerSvg = '';
11
+ if ([
12
+ MapMarkerStringEnum.DEADHEAD,
13
+ MapMarkerStringEnum.REPAIR,
14
+ MapMarkerStringEnum.FUEL,
15
+ MapMarkerStringEnum.TOWING,
16
+ MapMarkerStringEnum.PARKING,
17
+ ].includes(stopType))
18
+ markerSvg = this.getRoutingMarkerIconSvg(stopType);
19
+ else
20
+ markerSvg = MapMarkerIconHelper.getRoutingMarkerIcon(stopNumber, stopType, isStopChecked, isLightMode);
11
21
  markerElement.innerHTML = markerSvg;
12
22
  if (labelName) {
13
23
  const markerLabelElement = document.createElement('div');
@@ -29,12 +39,14 @@ export class MapMarkerIconHelper {
29
39
  }; }
30
40
  static { this.getRoutingMarkerSvg = (stopNumber, stopType, isLightMode) => {
31
41
  const markerColor = isLightMode
32
- ? MapOptionsConstants.routingMarkerLightColors[stopType]
33
- : MapOptionsConstants.routingMarkerDarkColors[stopType];
34
- const markerOutlineColor = MapOptionsConstants.routingMarkerOutlineColors[isLightMode
42
+ ? MapOptionsConstants.ROUTING_MARKER_LIGHT_COLORS[stopType]
43
+ : MapOptionsConstants.ROUTING_MARKER_DARK_COLORS[stopType];
44
+ const markerOutlineColor = MapOptionsConstants.ROUTING_MARKER_OUTLINE_COLORS[isLightMode
35
45
  ? MapMarkerStringEnum.WHITE
36
46
  : stopType];
37
- const markerDotColor = MapOptionsConstants.routingMarkerDotColors[isLightMode ? MapMarkerStringEnum.LIGHT : MapMarkerStringEnum.DARK];
47
+ const markerDotColor = MapOptionsConstants.ROUTING_MARKER_DOT_COLORS[isLightMode
48
+ ? MapMarkerStringEnum.LIGHT
49
+ : MapMarkerStringEnum.DARK];
38
50
  const markerSvg = `<svg xmlns="http://www.w3.org/2000/svg" width="30" height="33" viewBox="0 0 30 33" fill="none">
39
51
  <circle cx="15" cy="29" r="3" fill="${markerColor}" stroke="${markerDotColor}" stroke-width="2"/>
40
52
  <g filter="url(#filter0_d_24060_59090)">
@@ -63,12 +75,14 @@ export class MapMarkerIconHelper {
63
75
  }; }
64
76
  static { this.getRoutingCheckedMarkerSvg = (stopType, isLightMode) => {
65
77
  const checkedMarkerColor = isLightMode
66
- ? MapOptionsConstants.routingMarkerLightColors[stopType]
67
- : MapOptionsConstants.routingMarkerDarkColors[stopType];
68
- const checkedMarkerOutlineColor = MapOptionsConstants.routingMarkerOutlineColors[isLightMode
78
+ ? MapOptionsConstants.ROUTING_MARKER_LIGHT_COLORS[stopType]
79
+ : MapOptionsConstants.ROUTING_MARKER_DARK_COLORS[stopType];
80
+ const checkedMarkerOutlineColor = MapOptionsConstants.ROUTING_MARKER_OUTLINE_COLORS[isLightMode
69
81
  ? MapMarkerStringEnum.WHITE
70
82
  : stopType];
71
- const checkedMarkerDotColor = MapOptionsConstants.routingMarkerDotColors[isLightMode ? MapMarkerStringEnum.LIGHT : MapMarkerStringEnum.DARK];
83
+ const checkedMarkerDotColor = MapOptionsConstants.ROUTING_MARKER_DOT_COLORS[isLightMode
84
+ ? MapMarkerStringEnum.LIGHT
85
+ : MapMarkerStringEnum.DARK];
72
86
  const checkedMarkerSvg = `<svg width="30" height="33" viewBox="0 0 30 33" fill="none" xmlns="http://www.w3.org/2000/svg">
73
87
  <circle cx="15" cy="29" r="3" fill="${checkedMarkerColor}" stroke="${checkedMarkerDotColor}" stroke-width="2"/>
74
88
  <g filter="url(#filter0_d_18055_34238)">
@@ -93,6 +107,33 @@ export class MapMarkerIconHelper {
93
107
  </svg>`;
94
108
  return checkedMarkerSvg;
95
109
  }; }
110
+ static { this.getRoutingMarkerIconSvg = (stopType) => {
111
+ const markerSvgPath = MapOptionsConstants.ROUTING_MARKER_ICON_PATHS[stopType];
112
+ const checkedMarkerColor = MapOptionsConstants.ROUTING_MARKER_LIGHT_COLORS[stopType];
113
+ const checkedMarkerOutlineColor = MapOptionsConstants.ROUTING_MARKER_OUTLINE_COLORS[MapMarkerStringEnum.WHITE];
114
+ const checkedMarkerDotColor = MapOptionsConstants.ROUTING_MARKER_DOT_COLORS[MapMarkerStringEnum.LIGHT];
115
+ const routingMarkerSvg = `<svg width="30" height="33" viewBox="0 0 30 33" fill="none" xmlns="http://www.w3.org/2000/svg">
116
+ <circle cx="15" cy="29" r="3" fill="${checkedMarkerColor}" stroke="${checkedMarkerDotColor}" stroke-width="2"/>
117
+ <g filter="url(#filter0_d_9268_79834)">
118
+ <path d="M26 14.9732C25.9991 16.7715 25.5554 18.542 24.708 20.1289C23.8606 21.7157 22.6355 23.0702 21.1405 24.0732C21.1165 24.0912 20.7609 24.3102 20.6207 24.4022C17.2485 26.5422 15.8954 27.9872 15.3505 28.8022C15.2859 28.8991 15.1854 28.9665 15.0712 28.9897C14.9569 29.0129 14.8381 28.9901 14.7406 28.9262C14.6916 28.8932 14.6494 28.8511 14.6164 28.8022C14.0716 27.9912 12.7135 26.5462 9.34626 24.4022C9.19302 24.3072 8.8515 24.0912 8.82646 24.0732C7.25656 23.0103 5.9886 21.5601 5.14572 19.8635C4.30285 18.1669 3.91368 16.2815 4.01603 14.3904C4.11837 12.4993 4.70874 10.6667 5.72981 9.0707C6.75088 7.47466 8.16796 6.16936 9.84342 5.28155C11.5189 4.39375 13.3958 3.95361 15.292 4.00387C17.1881 4.05413 19.039 4.5931 20.6649 5.56842C22.2908 6.54374 23.6365 7.92228 24.5713 9.57017C25.5062 11.2181 25.9983 13.0793 26 14.9732Z" fill="white"/>
119
+ </g>
120
+ <circle cx="15" cy="15" r="9" fill="${checkedMarkerColor}"/>
121
+ <path d="${markerSvgPath}" fill="white"/>
122
+ <defs>
123
+ <filter id="filter0_d_9268_79834" x="0" y="0" width="30" height="32.9985" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
124
+ <feFlood flood-opacity="0" result="BackgroundImageFix"/>
125
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
126
+ <feOffset/>
127
+ <feGaussianBlur stdDeviation="2"/>
128
+ <feComposite in2="hardAlpha" operator="out"/>
129
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0"/>
130
+ <feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_9268_79834"/>
131
+ <feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_9268_79834" result="shape"/>
132
+ </filter>
133
+ </defs>
134
+ </svg>`;
135
+ return routingMarkerSvg;
136
+ }; }
96
137
  static getMapMarker(isFavorite, isClosed) {
97
138
  let markerIconRoute = MapSvgRoutes.defaultMarkerIcon;
98
139
  if (isClosed)
@@ -150,4 +191,4 @@ export class MapMarkerIconHelper {
150
191
  return markerSvg;
151
192
  }
152
193
  }
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW1hcmtlci1pY29uLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW1hcC91dGlscy9oZWxwZXJzL21hcC1tYXJrZXItaWNvbi5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRCxRQUFRO0FBQ1IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxELGFBQWE7QUFDYixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLE1BQU0sT0FBTyxtQkFBbUI7YUFDdkIsNEJBQXVCLEdBQUcsQ0FDL0IsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsYUFBdUIsRUFDdkIsV0FBcUIsRUFDckIsU0FBa0IsRUFDTCxFQUFFO1FBQ2YsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRCxNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FDeEQsVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsV0FBVyxDQUNaLENBQUM7UUFFRixhQUFhLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUVwQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pELGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDakQsa0JBQWtCLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2RCxhQUFhLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQs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QkFBZ0IsQ0FBQyxLQUFhLEVBQUUsVUFBb0I7UUFDekQsTUFBTSxTQUFTLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7d0NBZ0JrQixLQUFLOzs7d25MQUliLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUMzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCQXdCQyxDQUFDO1FBRTVCLE1BQU0sZUFBZSxHQUNuQiwwQ0FBMEMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvbnN0YW50c1xuaW1wb3J0IHsgTWFwT3B0aW9uc0NvbnN0YW50cyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbi8vIEVudW1zXG5pbXBvcnQgeyBNYXBNYXJrZXJTdHJpbmdFbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuXG4vLyBTdmcgUm91dGVzXG5pbXBvcnQgeyBNYXBTdmdSb3V0ZXMgfSBmcm9tICcuLi9zdmctcm91dGVzJztcblxuZXhwb3J0IGNsYXNzIE1hcE1hcmtlckljb25IZWxwZXIge1xuICBzdGF0aWMgZ2V0Um91dGluZ01hcmtlckVsZW1lbnQgPSAoXG4gICAgc3RvcE51bWJlcjogbnVtYmVyLFxuICAgIHN0b3BUeXBlOiBzdHJpbmcsXG4gICAgaXNTdG9wQ2hlY2tlZD86IGJvb2xlYW4sXG4gICAgaXNMaWdodE1vZGU/OiBib29sZWFuLFxuICAgIGxhYmVsTmFtZT86IHN0cmluZ1xuICApOiBIVE1MRWxlbWVudCA9PiB7XG4gICAgY29uc3QgbWFya2VyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgY29uc3QgbWFya2VyU3ZnID0gTWFwTWFya2VySWNvbkhlbHBlci5nZXRSb3V0aW5nTWFya2VySWNvbihcbiAgICAgIHN0b3BOdW1iZXIsXG4gICAgICBzdG9wVHlwZSxcbiAgICAgIGlzU3RvcENoZWNrZWQsXG4gICAgICBpc0xpZ2h0TW9kZVxuICAgICk7XG5cbiAgICBtYXJrZXJFbGVtZW50LmlubmVySFRNTCA9IG1hcmtlclN2ZztcblxuICAgIGlmIChsYWJlbE5hbWUpIHtcbiAgICAgIGNvbnN0IG1hcmtlckxhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgbWFya2VyTGFiZWxFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ21hcmtlci1sYWJlbCcpO1xuICAgICAgbWFya2VyTGFiZWxFbGVtZW50LmlubmVySFRNTCA9IGxhYmVsTmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgbWFya2VyRWxlbWVudC5hcHBlbmRDaGlsZChtYXJrZXJMYWJlbEVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXJrZXJFbGVtZW50O1xuICB9O1xuXG4gIHN0YXRpYyBnZXRSb3V0aW5nTWFya2VySWNvbiA9IChcbiAgICBzdG9wTnVtYmVyOiBudW1iZXIsXG4gICAgc3RvcFR5cGU6IHN0cmluZyxcbiAgICBpc1N0b3BDaGVja2VkPzogYm9vbGVhbixcbiAgICBpc0xpZ2h0TW9kZT86IGJvb2xlYW5cbiAgKTogc3RyaW5nID0+IHtcbiAgICBpZiAoIWlzU3RvcENoZWNrZWQpIHtcbiAgICAgIGNvbnN0IG1hcmtlclN2ZyA9IHRoaXMuZ2V0Um91dGluZ01hcmtlclN2ZyhcbiAgICAgICAgc3RvcE51bWJlcixcbiAgICAgICAgc3RvcFR5cGUsXG4gICAgICAgIGlzTGlnaHRNb2RlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gbWFya2VyU3ZnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjaGVja2VkTWFya2VyU3ZnID0gdGhpcy5nZXRSb3V0aW5nQ2hlY2tlZE1hcmtlclN2ZyhcbiAgICAgICAgc3RvcFR5cGUsXG4gICAgICAgIGlzTGlnaHRNb2RlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gY2hlY2tlZE1hcmtlclN2ZztcbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGdldFJvdXRpbmdNYXJrZXJTdmcgPSAoXG4gICAgc3RvcE51bWJlcjogbnVtYmVyLFxuICAgIHN0b3BUeXBlOiBzdHJpbmcsXG4gICAgaXNMaWdodE1vZGU/OiBib29sZWFuXG4gICk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgbWFya2VyQ29sb3IgPSBpc0xpZ2h0TW9kZVxuICAgICAgPyBNYXBPcHRpb25zQ29uc3RhbnRzLnJvdXRpbmdNYXJrZXJMaWdodENvbG9yc1tcbiAgICAgICAgICBzdG9wVHlwZSBhcyBrZXlvZiB0eXBlb2YgTWFwT3B0aW9uc0NvbnN0YW50cy5yb3V0aW5nTWFya2VyTGlnaHRDb2xvcnNcbiAgICAgICAgXVxuICAgICAgOiBNYXBPcHRpb25zQ29uc3RhbnRzLnJvdXRpbmdNYXJrZXJEYXJrQ29sb3JzW1xuICAgICAgICAgIHN0b3BUeXBlIGFzIGtleW9mIHR5cGVvZiBNYXBPcHRpb25zQ29uc3RhbnRzLnJvdXRpbmdNYXJrZXJEYXJrQ29sb3JzXG4gICAgICAgIF07XG5cbiAgICBjb25zdCBtYXJrZXJPdXRsaW5lQ29sb3IgPVxuICAgICAgTWFwT3B0aW9uc0NvbnN0YW50cy5yb3V0aW5nTWFya2VyT3V0bGluZUNvbG9yc1tcbiAgICAgICAgaXNMaWdodE1vZGVcbiAgICAgICAgICA/IE1hcE1hcmtlclN0cmluZ0VudW0uV0hJVEVcbiAgICAgICAgICA6IChzdG9wVHlwZSBhcyBrZXlvZiB0eXBlb2YgTWFwT3B0aW9uc0NvbnN0YW50cy5yb3V0aW5nTWFya2VyT3V0bGluZUNvbG9ycylcbiAgICAgIF07XG5cbiAgICBjb25zdCBtYXJrZXJEb3RDb2xvciA9XG4gICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLnJvdXRpbmdNYXJrZXJEb3RDb2xvcnNbXG4gICAgICAgIGlzTGlnaHRNb2RlID8gTWFwTWFya2VyU3RyaW5nRW51bS5MSUdIVCA6IE1hcE1hcmtlclN0cmluZ0VudW0uREFSS1xuICAgICAgXTtcblxuICAgIGNvbnN0IG1hcmtlclN2ZyA9IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzNcIiB2aWV3Qm94PVwiMCAwIDMwIDMzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMjlcIiByPVwiM1wiIGZpbGw9XCIke21hcmtlckNvbG9yfVwiIHN0cm9rZT1cIiR7bWFya2VyRG90Q29sb3J9XCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI0MDYwXzU5MDkwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjYgMTQuOTczMkMyNS45OTkxIDE2Ljc3MTUgMjUuNTU1NCAxOC41NDIgMjQuNzA4IDIwLjEyODlDMjMuODYwNiAyMS43MTU3IDIyLjYzNTUgMjMuMDcwMiAyMS4xNDA1IDI0LjA3MzJDMjEuMTE2NSAyNC4wOTEyIDIwLjc2MDkgMjQuMzEwMiAyMC42MjA3IDI0LjQwMjJDMTcuMjQ4NSAyNi41NDIyIDE1Ljg5NTQgMjcuOTg3MiAxNS4zNTA1IDI4LjgwMjJDMTUuMjg1OSAyOC44OTkxIDE1LjE4NTQgMjguOTY2NSAxNS4wNzEyIDI4Ljk4OTdDMTQuOTU2OSAyOS4wMTI5IDE0LjgzODEgMjguOTkwMSAxNC43NDA2IDI4LjkyNjJDMTQuNjkxNiAyOC44OTMyIDE0LjY0OTQgMjguODUxMSAxNC42MTY0IDI4LjgwMjJDMTQuMDcxNiAyNy45OTEyIDEyLjcxMzUgMjYuNTQ2MiA5LjM0NjI2IDI0LjQwMjJDOS4xOTMwMiAyNC4zMDcyIDguODUxNSAyNC4wOTEyIDguODI2NDYgMjQuMDczMkM3LjI1NjU2IDIzLjAxMDMgNS45ODg2IDIxLjU2MDEgNS4xNDU3MiAxOS44NjM1QzQuMzAyODUgMTguMTY2OSAzLjkxMzY4IDE2LjI4MTUgNC4wMTYwMyAxNC4zOTA0QzQuMTE4MzcgMTIuNDk5MyA0LjcwODc0IDEwLjY2NjcgNS43Mjk4MSA5LjA3MDdDNi43NTA4OCA3LjQ3NDY2IDguMTY3OTYgNi4xNjkzNiA5Ljg0MzQyIDUuMjgxNTVDMTEuNTE4OSA0LjM5Mzc1IDEzLjM5NTggMy45NTM2MSAxNS4yOTIgNC4wMDM4N0MxNy4xODgxIDQuMDU0MTMgMTkuMDM5IDQuNTkzMSAyMC42NjQ5IDUuNTY4NDJDMjIuMjkwOCA2LjU0Mzc0IDIzLjYzNjUgNy45MjIyOCAyNC41NzEzIDkuNTcwMTdDMjUuNTA2MiAxMS4yMTgxIDI1Ljk5ODMgMTMuMDc5MyAyNiAxNC45NzMyWlwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiR7bWFya2VyT3V0bGluZUNvbG9yfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGN4PVwiMTVcIiBjeT1cIjE1XCIgcj1cIjlcIiBmaWxsPVwiJHttYXJrZXJDb2xvcn1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGV4dCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaWQ9XCJfNFwiIGRhdGEtbmFtZT1cIjRcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTUgMTYpXCIgZmlsbD1cIiNmZmZcIiBmb250LXNpemU9XCIxMVwiIGZvbnQtZmFtaWx5PVwiTW9udHNlcnJhdCwgc2Fucy1zZXJpZlwiIGZvbnQtd2VpZ2h0PVwiNzAwXCIgZG9taW5hbnQtYmFzZWxpbmU9XCJtaWRkbGVcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIHk9XCIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRzcGFuPiR7c3RvcE51bWJlciA/PyAwfTwvdHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI0MDYwXzU5MDkwXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMi45OTg1XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPVwiaGFyZEFscGhhXCIgb3BlcmF0b3I9XCJvdXRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjE1IDBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjQwNjBfNTkwOTBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjQwNjBfNTkwOTBcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5gO1xuXG4gICAgcmV0dXJuIG1hcmtlclN2ZztcbiAgfTtcblxuICBzdGF0aWMgZ2V0Um91dGluZ0NoZWNrZWRNYXJrZXJTdmcgPSAoXG4gICAgc3RvcFR5cGU6IHN0cmluZyxcbiAgICBpc0xpZ2h0TW9kZT86IGJvb2xlYW5cbiAgKSA9PiB7XG4gICAgY29uc3QgY2hlY2tlZE1hcmtlckNvbG9yID0gaXNMaWdodE1vZGVcbiAgICAgID8gTWFwT3B0aW9uc0NvbnN0YW50cy5yb3V0aW5nTWFya2VyTGlnaHRDb2xvcnNbXG4gICAgICAgICAgc3RvcFR5cGUgYXMga2V5b2YgdHlwZW9mIE1hcE9wdGlvbnNDb25zdGFudHMucm91dGluZ01hcmtlckxpZ2h0Q29sb3JzXG4gICAgICAgIF1cbiAgICAgIDogTWFwT3B0aW9uc0NvbnN0YW50cy5yb3V0aW5nTWFya2VyRGFya0NvbG9yc1tcbiAgICAgICAgICBzdG9wVHlwZSBhcyBrZXlvZiB0eXBlb2YgTWFwT3B0aW9uc0NvbnN0YW50cy5yb3V0aW5nTWFya2VyRGFya0NvbG9yc1xuICAgICAgICBdO1xuXG4gICAgY29uc3QgY2hlY2tlZE1hcmtlck91dGxpbmVDb2xvciA9XG4gICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLnJvdXRpbmdNYXJrZXJPdXRsaW5lQ29sb3JzW1xuICAgICAgICBpc0xpZ2h0TW9kZVxuICAgICAgICAgID8gTWFwTWFya2VyU3RyaW5nRW51bS5XSElURVxuICAgICAgICAgIDogKHN0b3BUeXBlIGFzIGtleW9mIHR5cGVvZiBNYXBPcHRpb25zQ29uc3RhbnRzLnJvdXRpbmdNYXJrZXJPdXRsaW5lQ29sb3JzKVxuICAgICAgXTtcblxuICAgIGNvbnN0IGNoZWNrZWRNYXJrZXJEb3RDb2xvciA9XG4gICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLnJvdXRpbmdNYXJrZXJEb3RDb2xvcnNbXG4gICAgICAgIGlzTGlnaHRNb2RlID8gTWFwTWFya2VyU3RyaW5nRW51bS5MSUdIVCA6IE1hcE1hcmtlclN0cmluZ0VudW0uREFSS1xuICAgICAgXTtcblxuICAgIGNvbnN0IGNoZWNrZWRNYXJrZXJTdmcgPSBgPHN2ZyB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzNcIiB2aWV3Qm94PVwiMCAwIDMwIDMzXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMjlcIiByPVwiM1wiIGZpbGw9XCIke2NoZWNrZWRNYXJrZXJDb2xvcn1cIiBzdHJva2U9XCIke2NoZWNrZWRNYXJrZXJEb3RDb2xvcn1cIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF8xODA1NV8zNDIzOClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTI2IDE0Ljk3MzJDMjUuOTk5MSAxNi43NzE1IDI1LjU1NTQgMTguNTQyIDI0LjcwOCAyMC4xMjg5QzIzLjg2MDYgMjEuNzE1NyAyMi42MzU1IDIzLjA3MDIgMjEuMTQwNSAyNC4wNzMyQzIxLjExNjUgMjQuMDkxMiAyMC43NjA5IDI0LjMxMDIgMjAuNjIwNyAyNC40MDIyQzE3LjI0ODUgMjYuNTQyMiAxNS44OTU0IDI3Ljk4NzIgMTUuMzUwNSAyOC44MDIyQzE1LjI4NTkgMjguODk5MSAxNS4xODU0IDI4Ljk2NjUgMTUuMDcxMiAyOC45ODk3QzE0Ljk1NjkgMjkuMDEyOSAxNC44MzgxIDI4Ljk5MDEgMTQuNzQwNiAyOC45MjYyQzE0LjY5MTYgMjguODkzMiAxNC42NDk0IDI4Ljg1MTEgMTQuNjE2NCAyOC44MDIyQzE0LjA3MTYgMjcuOTkxMiAxMi43MTM1IDI2LjU0NjIgOS4zNDYyNiAyNC40MDIyQzkuMTkzMDIgMjQuMzA3MiA4Ljg1MTUgMjQuMDkxMiA4LjgyNjQ2IDI0LjA3MzJDNy4yNTY1NiAyMy4wMTAzIDUuOTg4NiAyMS41NjAxIDUuMTQ1NzIgMTkuODYzNUM0LjMwMjg1IDE4LjE2NjkgMy45MTM2OCAxNi4yODE1IDQuMDE2MDMgMTQuMzkwNEM0LjExODM3IDEyLjQ5OTMgNC43MDg3NCAxMC42NjY3IDUuNzI5ODEgOS4wNzA3QzYuNzUwODggNy40NzQ2NiA4LjE2Nzk2IDYuMTY5MzYgOS44NDM0MiA1LjI4MTU1QzExLjUxODkgNC4zOTM3NSAxMy4zOTU4IDMuOTUzNjEgMTUuMjkyIDQuMDAzODdDMTcuMTg4MSA0LjA1NDEzIDE5LjAzOSA0LjU5MzEgMjAuNjY0OSA1LjU2ODQyQzIyLjI5MDggNi41NDM3NCAyMy42MzY1IDcuOTIyMjggMjQuNTcxMyA5LjU3MDE3QzI1LjUwNjIgMTEuMjE4MSAyNS45OTgzIDEzLjA3OTMgMjYgMTQuOTczMlpcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIke2NoZWNrZWRNYXJrZXJPdXRsaW5lQ29sb3J9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMTVcIiByPVwiOVwiIGZpbGw9XCIke2NoZWNrZWRNYXJrZXJDb2xvcn1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMDQ2MiAxOS4wNDc3TDkuNzEyOTEgMTUuNzE0NEM5LjY1NzE4IDE1LjY1ODcgOS42MTI5NyAxNS41OTI1IDkuNTgyOCAxNS41MTk3QzkuNTUyNjQgMTUuNDQ2OSA5LjUzNzExIDE1LjM2ODkgOS41MzcxMSAxNS4yOTAxQzkuNTM3MTEgMTUuMjExMiA5LjU1MjY0IDE1LjEzMzIgOS41ODI4IDE1LjA2MDRDOS42MTI5NyAxNC45ODc2IDkuNjU3MTggMTQuOTIxNCA5LjcxMjkxIDE0Ljg2NTdMMTAuNTYyOSAxNC4wMTg0QzEwLjYxODYgMTMuOTYyNyAxMC42ODQ4IDEzLjkxODQgMTAuNzU3NiAxMy44ODgzQzEwLjgzMDQgMTMuODU4MSAxMC45MDg0IDEzLjg0MjYgMTAuOTg3MiAxMy44NDI2QzExLjA2NjEgMTMuODQyNiAxMS4xNDQxIDEzLjg1ODEgMTEuMjE2OSAxMy44ODgzQzExLjI4OTcgMTMuOTE4NCAxMS4zNTU5IDEzLjk2MjcgMTEuNDExNiAxNC4wMTg0TDEzLjQ3MDIgMTYuMDc3MUwxOC41ODY5IDEwLjk1NzFDMTguNjQyNiAxMC45MDEzIDE4LjcwODggMTAuODU3MSAxOC43ODE2IDEwLjgyNjlDMTguODU0NCAxMC43OTY4IDE4LjkzMjQgMTAuNzgxMiAxOS4wMTEyIDEwLjc4MTJDMTkuMDkwMSAxMC43ODEyIDE5LjE2ODEgMTAuNzk2OCAxOS4yNDA5IDEwLjgyNjlDMTkuMzEzNyAxMC44NTcxIDE5LjM3OTkgMTAuOTAxMyAxOS40MzU2IDEwLjk1NzFMMjAuMjg0MiAxMS44MDU3QzIwLjM0IDExLjg2MTQgMjAuMzg0MiAxMS45Mjc2IDIwLjQxNDQgMTIuMDAwNEMyMC40NDQ1IDEyLjA3MzIgMjAuNDYwMSAxMi4xNTEyIDIwLjQ2MDEgMTIuMjMwMUMyMC40NjAxIDEyLjMwODkgMjAuNDQ0NSAxMi4zODY5IDIwLjQxNDQgMTIuNDU5N0MyMC4zODQyIDEyLjUzMjUgMjAuMzQgMTIuNTk4NyAyMC4yODQyIDEyLjY1NDRMMTMuODk0OSAxOS4wNDUxQzEzLjgzOTIgMTkuMTAwOCAxMy43NzMgMTkuMTQ1IDEzLjcwMDIgMTkuMTc1MkMxMy42Mjc0IDE5LjIwNTMgMTMuNTQ5NCAxOS4yMjA5IDEzLjQ3MDYgMTkuMjIwOUMxMy4zOTE4IDE5LjIyMDkgMTMuMzEzNyAxOS4yMDUzIDEzLjI0MDkgMTkuMTc1MkMxMy4xNjgxIDE5LjE0NSAxMy4xMDIgMTkuMTAwOCAxMy4wNDYyIDE5LjA0NTFWMTkuMDQ3N1pcIiBmaWxsPVwid2hpdGVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWx0ZXIgaWQ9XCJmaWx0ZXIwX2RfMTgwNTVfMzQyMzhcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIzMFwiIGhlaWdodD1cIjMyLjk5ODVcIiBmaWx0ZXJVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPVwic1JHQlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlT2Zmc2V0Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29tcG9zaXRlIGluMj1cImhhcmRBbHBoYVwiIG9wZXJhdG9yPVwib3V0XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMTUgMFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMTgwNTVfMzQyMzhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzE4MDU1XzM0MjM4XCIgcmVzdWx0PVwic2hhcGVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPmA7XG5cbiAgICByZXR1cm4gY2hlY2tlZE1hcmtlclN2ZztcbiAgfTtcblxuICBzdGF0aWMgZ2V0TWFwTWFya2VyKGlzRmF2b3JpdGU/OiBib29sZWFuLCBpc0Nsb3NlZD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGxldCBtYXJrZXJJY29uUm91dGUgPSBNYXBTdmdSb3V0ZXMuZGVmYXVsdE1hcmtlckljb247XG5cbiAgICBpZiAoaXNDbG9zZWQpIG1hcmtlckljb25Sb3V0ZSA9IE1hcFN2Z1JvdXRlcy5jbG9zZWRNYXJrZXJJY29uO1xuICAgIGVsc2UgaWYgKGlzRmF2b3JpdGUpIG1hcmtlckljb25Sb3V0ZSA9IE1hcFN2Z1JvdXRlcy5mYXZvcml0ZU1hcmtlckljb247XG5cbiAgICByZXR1cm4gbWFya2VySWNvblJvdXRlO1xuICB9XG5cbiAgc3RhdGljIGdldENsdXN0ZXJNYXJrZXIoY291bnQ6IG51bWJlciwgaXNTZWxlY3RlZD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIGNvbnN0IG1hcmtlclN2ZyA9IGA8c3ZnIGNsYXNzPVwibWFya2VyLXN2Z1wiIHdpZHRoPVwiNTJcIiBoZWlnaHQ9XCI1MlwiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgZmlsdGVyPVwidXJsKCNmaWx0ZXIwX2RfMjYzMV8yNzQxMDQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjE2XCIgZmlsbD1cIndoaXRlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMTRcIiBmaWxsPVwiI0ZBQjE1Q1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiXzRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1uYW1lPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjYgMjcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjZmZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZT1cIjE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5PVwiTW9udHNlcnJhdCwgc2Fucy1zZXJpZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodD1cIjcwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pbmFudC1iYXNlbGluZT1cIm1pZGRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0c3Bhbj4gJHtjb3VudH0gPC90c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBvcGFjaXR5PVwiMC43XCIgZmlsdGVyPVwidXJsKCNmaWx0ZXIxX2RfMjYzMV8yNzQxMDQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTM2Ljc4MSA3LjY1MDAyTDM1LjQ2MSA5Ljg5MzAyQzM1LjM3MDUgMTAuMDUwMiAzNS4zNDQ2IDEwLjIzNjMgMzUuMzg4NiAxMC40MTIyQzM1LjQzMjYgMTAuNTg4MSAzNS41NDMyIDEwLjc0IDM1LjY5NyAxMC44MzZDMzcuODkxNyAxMi4yNDA5IDM5Ljc1NTUgMTQuMTA1MSA0MS4xNiAxNi4zQzQxLjI1NiAxNi40NTM4IDQxLjQwOCAxNi41NjQ0IDQxLjU4MzggMTYuNjA4NEM0MS43NTk3IDE2LjY1MjQgNDEuOTQ1OCAxNi42MjY1IDQyLjEwMyAxNi41MzZMNDQuMzQ2IDE1LjIxNkM0NC40Mjc1IDE1LjE2OTEgNDQuNDk4OCAxNS4xMDYxIDQ0LjU1NTQgMTUuMDMxQzQ0LjYxMjEgMTQuOTU1OSA0NC42NTMgMTQuODcwMiA0NC42NzU4IDE0Ljc3ODlDNDQuNjk4NiAxNC42ODc2IDQ0LjcwMjcgMTQuNTkyNiA0NC42ODggMTQuNDk5N0M0NC42NzMyIDE0LjQwNjggNDQuNjM5OSAxNC4zMTc4IDQ0LjU5IDE0LjIzOEM0Mi44NDI2IDExLjQ4NjcgNDAuNTEwMyA5LjE1NDM2IDM3Ljc1OSA3LjQwNzAyQzM3LjY3OTIgNy4zNTcwOSAzNy41OTAyIDcuMzIzNzYgMzcuNDk3MyA3LjMwOTAxQzM3LjQwNDQgNy4yOTQyNyAzNy4zMDk0IDcuMjk4NCAzNy4yMTgxIDcuMzIxMThDMzcuMTI2OCA3LjM0Mzk2IDM3LjA0MTEgNy4zODQ5MSAzNi45NjYgNy40NDE1OEMzNi44OTA5IDcuNDk4MjUgMzYuODI3OSA3LjU2ODQ4IDM2Ljc4MSA3LjY1MDAyWk00Ni42MDEgMjAuNjUxTDQ0LjA3MyAyMS4zMDlDNDMuODk4NSAyMS4zNTYyIDQzLjc0OSAyMS40NjkgNDMuNjU1OCAyMS42MjM5QzQzLjU2MjYgMjEuNzc4OCA0My41MzI5IDIxLjk2MzcgNDMuNTczIDIyLjE0QzQ0LjEzNDMgMjQuNjgyNyA0NC4xMzQzIDI3LjMxNzMgNDMuNTczIDI5Ljg2QzQzLjUzMjkgMzAuMDM2MyA0My41NjI2IDMwLjIyMTIgNDMuNjU1OCAzMC4zNzYxQzQzLjc0OSAzMC41MzEgNDMuODk4NSAzMC42NDM5IDQ0LjA3MyAzMC42OTFMNDYuNjAxIDMxLjM0OUM0Ni42OTE3IDMxLjM3MzUgNDYuNzg2NCAzMS4zNzk0IDQ2Ljg3OTUgMzEuMzY2NUM0Ni45NzI1IDMxLjM1MzYgNDcuMDYyMSAzMS4zMjIxIDQ3LjE0MjcgMzEuMjczOEM0Ny4yMjMzIDMxLjIyNTYgNDcuMjkzNCAzMS4xNjE2IDQ3LjM0ODggMzEuMDg1N0M0Ny40MDQxIDMxLjAwOTggNDcuNDQzNyAzMC45MjM1IDQ3LjQ2NSAzMC44MzJDNDguMTczIDI3LjY0OTYgNDguMTczIDI0LjM1MDQgNDcuNDY1IDIxLjE2OEM0Ny40NDM3IDIxLjA3NjUgNDcuNDA0MSAyMC45OTAyIDQ3LjM0ODggMjAuOTE0M0M0Ny4yOTM0IDIwLjgzODQgNDcuMjIzMyAyMC43NzQ0IDQ3LjE0MjcgMjAuNzI2MkM0Ny4wNjIxIDIwLjY3OCA0Ni45NzI1IDIwLjY0NjQgNDYuODc5NSAyMC42MzM1QzQ2Ljc4NjQgMjAuNjIwNiA0Ni42OTE3IDIwLjYyNjYgNDYuNjAxIDIwLjY1MVpNMzAuNjk2IDQ0LjA3OUMzMC42NTAyIDQzLjkwMzcgMzAuNTM3NiA0My43NTMyIDMwLjM4MjMgNDMuNjU5OEMzMC4yMjcgNDMuNTY2MyAzMC4wNDE0IDQzLjUzNzQgMjkuODY1IDQzLjU3OUMyNy4zMTkyIDQ0LjEzOTcgMjQuNjgxOCA0NC4xMzk3IDIyLjEzNiA0My41NzlDMjEuOTU5NyA0My41Mzg5IDIxLjc3NDggNDMuNTY4NiAyMS42MTk5IDQzLjY2MThDMjEuNDY1IDQzLjc1NSAyMS4zNTIxIDQzLjkwNDUgMjEuMzA1IDQ0LjA3OUwyMC42NDcgNDYuNkMyMC42MjI1IDQ2LjY5MDcgMjAuNjE2NiA0Ni43ODU0IDIwLjYyOTUgNDYuODc4NUMyMC42NDI0IDQ2Ljk3MTYgMjAuNjczOSA0Ny4wNjExIDIwLjcyMjIgNDcuMTQxN0MyMC43NzA0IDQ3LjIyMjMgMjAuODM0NCA0Ny4yOTI0IDIwLjkxMDMgNDcuMzQ3OEMyMC45ODYyIDQ3LjQwMzIgMjEuMDcyNSA0Ny40NDI3IDIxLjE2NCA0Ny40NjRDMjQuMzQ3MSA0OC4xNzIgMjcuNjQ2OSA0OC4xNzIgMzAuODMgNDcuNDY0QzMwLjkyMTQgNDcuNDQyNyAzMS4wMDc2IDQ3LjQwMzIgMzEuMDgzNCA0Ny4zNDc5QzMxLjE1OTIgNDcuMjkyNiAzMS4yMjMxIDQ3LjIyMjYgMzEuMjcxNCA0Ny4xNDIxQzMxLjMxOTYgNDcuMDYxNiAzMS4zNTEyIDQ2Ljk3MjIgMzEuMzY0MSA0Ni44NzkyQzMxLjM3NzEgNDYuNzg2MyAzMS4zNzEzIDQ2LjY5MTcgMzEuMzQ3IDQ2LjYwMUwzMC42OTYgNDQuMDc5Wk0xNS4yMSA3LjY0OTAyQzE1LjE2MyA3LjU2NzYyIDE1LjEwMDIgNy40OTY1MSAxNS4wMjUxIDcuNDM5OTNDMTQuOTUwMSA3LjM4MzM1IDE0Ljg2NDQgNy4zNDI0NSAxNC43NzMzIDcuMzE5NjhDMTQuNjgyMSA3LjI5NjkxIDE0LjU4NzMgNy4yOTI3MyAxNC40OTQ1IDcuMzA3MzlDMTQuNDAxNiA3LjMyMjA1IDE0LjMxMjcgNy4zNTUyNiAxNC4yMzMgNy40MDUwMkMxMS40NzQyIDkuMTQ1NDMgOS4xMzg0MiAxMS40Nzk1IDcuMzk1OTkgMTQuMjM3QzcuMzQ2MjMgMTQuMzE2NyA3LjMxMzAzIDE0LjQwNTcgNy4yOTgzNyAxNC40OTg1QzcuMjgzNzEgMTQuNTkxMyA3LjI4Nzg5IDE0LjY4NjEgNy4zMTA2NiAxNC43NzczQzcuMzMzNDMgMTQuODY4NSA3LjM3NDMyIDE0Ljk1NDEgNy40MzA5IDE1LjAyOTJDNy40ODc0OCAxNS4xMDQyIDcuNTU4NTkgMTUuMTY3MSA3LjYzOTk5IDE1LjIxNEw5Ljg4NTk5IDE2LjUzM0MxMC4wNDM2IDE2LjYyNDYgMTAuMjMwOCAxNi42NTExIDEwLjQwNzYgMTYuNjA2OEMxMC41ODQ1IDE2LjU2MjYgMTAuNzM3MSAxNi40NTExIDEwLjgzMyAxNi4yOTZDMTIuMjM3IDE0LjEwMjEgMTQuMTAxIDEyLjIzOTQgMTYuMjk2IDEwLjgzN0MxNi40NTEgMTAuNzQxMSAxNi41NjI1IDEwLjU4ODUgMTYuNjA2OCAxMC40MTE2QzE2LjY1MTEgMTAuMjM0OCAxNi42MjQ2IDEwLjA0NzYgMTYuNTMzIDkuODkwMDJMMTUuMjEgNy42NDkwMlpNNy45MDk5OSAyMS4zMDhMNS4zOTU5OSAyMC42NTJDNS4zMDUyOCAyMC42Mjc0IDUuMjEwNTMgMjAuNjIxMyA1LjExNzQxIDIwLjYzNDFDNS4wMjQyOCAyMC42NDY4IDQuOTM0NjggMjAuNjc4MiA0Ljg1Mzk2IDIwLjcyNjRDNC43NzMyMyAyMC43NzQ2IDQuNzAzMDMgMjAuODM4NSA0LjY0NzU0IDIwLjkxNDNDNC41OTIwNSAyMC45OTAyIDQuNTUyNDIgMjEuMDc2NSA0LjUzMDk5IDIxLjE2OEMzLjgyMyAyNC4zNTA0IDMuODIzIDI3LjY0OTYgNC41MzA5OSAzMC44MzJDNC41NTIzMSAzMC45MjM1IDQuNTkxODQgMzEuMDA5OCA0LjY0NzIxIDMxLjA4NTdDNC43MDI1OCAzMS4xNjE2IDQuNzcyNjcgMzEuMjI1NiA0Ljg1MzMgMzEuMjczOEM0LjkzMzkyIDMxLjMyMjEgNS4wMjM0MyAzMS4zNTM2IDUuMTE2NSAzMS4zNjY1QzUuMjA5NTYgMzEuMzc5NCA1LjMwNDI4IDMxLjM3MzUgNS4zOTQ5OSAzMS4zNDlMNy45MjI5OSAzMC42OTFDOC4wOTc1MSAzMC42NDM5IDguMjQ3MDIgMzAuNTMxIDguMzQwMjIgMzAuMzc2MUM4LjQzMzQyIDMwLjIyMTIgOC40NjMwOCAzMC4wMzYzIDguNDIyOTkgMjkuODZDOC4xMzk5MiAyOC41OTI4IDcuOTk2NzMgMjcuMjk4NCA3Ljk5NTk5IDI2QzcuOTk1OTMgMjQuNzAyNyA4LjEzNDM5IDIzLjQwOSA4LjQwODk5IDIyLjE0MUM4LjQ0OTY2IDIxLjk2NDUgOC40MjAyOCAyMS43NzkgOC4zMjcwMyAyMS42MjM3QzguMjMzNzkgMjEuNDY4MyA4LjA4NDk0IDIxLjM1NTIgNy45MDk5OSAyMS4zMDhaTTkuODg4OTkgMzUuNDY1TDcuNjQ1OTkgMzYuNzg1QzcuNTY0NDYgMzYuODMyIDcuNDkzMjIgMzYuODk0OSA3LjQzNjU1IDM2Ljk3QzcuMzc5ODggMzcuMDQ1MSA3LjMzODkzIDM3LjEzMDkgNy4zMTYxNiAzNy4yMjIyQzcuMjkzMzggMzcuMzEzNSA3LjI4OTI0IDM3LjQwODQgNy4zMDM5OSAzNy41MDEzQzcuMzE4NzQgMzcuNTk0MyA3LjM1MjA3IDM3LjY4MzMgNy40MDE5OSAzNy43NjNDOS4xNDkzMyA0MC41MTQzIDExLjQ4MTcgNDIuODQ2NyAxNC4yMzMgNDQuNTk0QzE0LjMxMjcgNDQuNjQzOSAxNC40MDE3IDQ0LjY3NzMgMTQuNDk0NyA0NC42OTJDMTQuNTg3NiA0NC43MDY4IDE0LjY4MjYgNDQuNzAyNiAxNC43NzM4IDQ0LjY3OTlDMTQuODY1MSA0NC42NTcxIDE0Ljk1MDkgNDQuNjE2MSAxNS4wMjYgNDQuNTU5NUMxNS4xMDExIDQ0LjUwMjggMTUuMTY0IDQ0LjQzMTYgMTUuMjExIDQ0LjM1TDE2LjUzMSA0Mi4xMDdDMTYuNjIxNCA0MS45NDk5IDE2LjY0NzQgNDEuNzYzOCAxNi42MDM0IDQxLjU4NzlDMTYuNTU5NCA0MS40MTIgMTYuNDQ4OCA0MS4yNiAxNi4yOTUgNDEuMTY0QzE0LjEwMDMgMzkuNzU5MiAxMi4yMzY1IDM3Ljg5NSAxMC44MzIgMzUuN0MxMC43MzYgMzUuNTQ2MiAxMC41ODQgMzUuNDM1NyAxMC40MDgxIDM1LjM5MTZDMTAuMjMyMiAzNS4zNDc2IDEwLjA0NjEgMzUuMzc0NiA5Ljg4ODk5IDM1LjQ2NVpNNDEuMTYgMzUuN0MzOS43NTUyIDM3Ljg5NTEgMzcuODkxIDM5Ljc1OTMgMzUuNjk2IDQxLjE2NEMzNS41NDIyIDQxLjI2IDM1LjQzMTYgNDEuNDEyIDM1LjM4NzYgNDEuNTg3OUMzNS4zNDM2IDQxLjc2MzggMzUuMzY5NSA0MS45NDk5IDM1LjQ2IDQyLjEwN0wzNi43OCA0NC4zNUMzNi44MjcgNDQuNDMxNiAzNi44ODk5IDQ0LjUwMjggMzYuOTY1IDQ0LjU1OTVDMzcuMDQwMSA0NC42MTYxIDM3LjEyNTggNDQuNjU3MSAzNy4yMTcxIDQ0LjY3OTlDMzcuMzA4NCA0NC43MDI2IDM3LjQwMzQgNDQuNzA2OCAzNy40OTYzIDQ0LjY5MkMzNy41ODkyIDQ0LjY3NzMgMzcuNjc4MiA0NC42NDM5IDM3Ljc1OCA0NC41OTRDNDAuNTA5MyA0Mi44NDY3IDQyLjg0MTYgNDAuNTE0MyA0NC41ODkgMzcuNzYzQzQ0LjYzODkgMzcuNjgzMyA0NC42NzIyIDM3LjU5NDMgNDQuNjg3IDM3LjUwMTNDNDQuNzAxNyAzNy40MDg0IDQ0LjY5NzYgMzcuMzEzNSA0NC42NzQ4IDM3LjIyMjJDNDQuNjUyMSAzNy4xMzA5IDQ0LjYxMTEgMzcuMDQ1MSA0NC41NTQ0IDM2Ljk3QzQ0LjQ5NzggMzYuODk0OSA0NC40MjY1IDM2LjgzMiA0NC4zNDUgMzYuNzg1TDQyLjEwMiAzNS40NjVDNDEuOTQ0OCAzNS4zNzQ2IDQxLjc1ODcgMzUuMzQ4NiA0MS41ODI4IDM1LjM5MjZDNDEuNDA3IDM1LjQzNjcgNDEuMjU1IDM1LjU0NzIgNDEuMTU5IDM1LjcwMU0yNS45OTYgNC4wMDAwMkMyNC4zNzA3IDMuOTk3OTggMjIuNzUwMSA0LjE3NjA3IDIxLjE2NCA0LjUzMTAyQzIxLjA3MjUgNC41NTI0NCAyMC45ODYyIDQuNTkyMDggMjAuOTEwMyA0LjY0NzU3QzIwLjgzNDQgNC43MDMwNSAyMC43NzA1IDQuNzczMjUgMjAuNzIyNCA0Ljg1Mzk4QzIwLjY3NDIgNC45MzQ3MSAyMC42NDI4IDUuMDI0MzEgMjAuNjMgNS4xMTc0M0MyMC42MTczIDUuMjEwNTYgMjAuNjIzNCA1LjMwNTMgMjAuNjQ4IDUuMzk2MDJMMjEuMzA0IDcuOTEyMDJDMjEuMzUxMSA4LjA4Njk2IDIxLjQ2NDMgOC4yMzY4MSAyMS42MTk2IDguMzMwMDZDMjEuNzc1IDguNDIzMyAyMS45NjA0IDguNDUyNjggMjIuMTM3IDguNDEyMDJDMjMuNDA1IDguMTM3NzUgMjQuNjk4NyA3Ljk5OTYzIDI1Ljk5NiA4LjAwMDAyQzI3LjI5NzEgNy45OTkwNyAyOC41OTQ0IDguMTM5OSAyOS44NjUgOC40MjAwMkMzMC4wNDE0IDguNDYxNjggMzAuMjI3IDguNDMyNjkgMzAuMzgyMyA4LjMzOTI2QzMwLjUzNzYgOC4yNDU4MyAzMC42NTAyIDguMDk1MzYgMzAuNjk2IDcuOTIwMDJMMzEuMzQ3IDUuMzkzMDJDMzEuMzcxMyA1LjMwMjM3IDMxLjM3NzEgNS4yMDc3NiAzMS4zNjQxIDUuMTE0ODFDMzEuMzUxMiA1LjAyMTg2IDMxLjMxOTYgNC45MzI0NyAzMS4yNzE0IDQuODUxOTZDMzEuMjIzMSA0Ljc3MTQ1IDMxLjE1OTIgNC43MDE0NiAzMS4wODM0IDQuNjQ2MTVDMzEuMDA3NiA0LjU5MDg0IDMwLjkyMTQgNC41NTEzNSAzMC44MyA0LjUzMDAyQzI5LjI0MzEgNC4xNzU4MSAyNy42MjE5IDMuOTk4MDYgMjUuOTk2IDQuMDAwMDJaXCIgZmlsbD1cIiR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQgPyAnI0ZBQjE1QycgOiAnI0ZGRkZGRidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI2MzFfMjc0MTA0XCIgeD1cIjZcIiB5PVwiNlwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4xNSAwXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjYzMV8yNzQxMDRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNjMxXzI3NDEwNFwiIHJlc3VsdD1cInNoYXBlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMV9kXzI2MzFfMjc0MTA0XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNTEuOTk2MVwiIGhlaWdodD1cIjUxLjk5NVwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4xNSAwXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjYzMV8yNzQxMDRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNjMxXzI3NDEwNFwiIHJlc3VsdD1cInNoYXBlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPmA7XG5cbiAgICBjb25zdCBtYXJrZXJJY29uUm91dGUgPVxuICAgICAgJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04O2Jhc2U2NCwnICsgYnRvYShtYXJrZXJTdmcpO1xuXG4gICAgcmV0dXJuIG1hcmtlclN2ZztcbiAgfVxufVxuIl19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLW1hcmtlci1pY29uLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW1hcC91dGlscy9oZWxwZXJzL21hcC1tYXJrZXItaWNvbi5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRCxRQUFRO0FBQ1IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxELGFBQWE7QUFDYixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLE1BQU0sT0FBTyxtQkFBbUI7YUFDckIsNEJBQXVCLEdBQUcsQ0FDN0IsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsYUFBdUIsRUFDdkIsV0FBcUIsRUFDckIsU0FBa0IsRUFDUCxFQUFFO1FBQ2IsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRCxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFbkIsSUFDSTtZQUNJLG1CQUFtQixDQUFDLFFBQVE7WUFDNUIsbUJBQW1CLENBQUMsTUFBTTtZQUMxQixtQkFBbUIsQ0FBQyxJQUFJO1lBQ3hCLG1CQUFtQixDQUFDLE1BQU07WUFDMUIsbUJBQW1CLENBQUMsT0FBTztTQUM5QixDQUFDLFFBQVEsQ0FBQyxRQUErQixDQUFDO1lBRTNDLFNBQVMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7O1lBRW5ELFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FDaEQsVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsV0FBVyxDQUNkLENBQUM7UUFFTixhQUFhLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztR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LENBQUMsU0FBUyxDQUFDLENBQUM7UUFFakUsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvbnN0YW50c1xuaW1wb3J0IHsgTWFwT3B0aW9uc0NvbnN0YW50cyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbi8vIEVudW1zXG5pbXBvcnQgeyBNYXBNYXJrZXJTdHJpbmdFbnVtIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuXG4vLyBTdmcgUm91dGVzXG5pbXBvcnQgeyBNYXBTdmdSb3V0ZXMgfSBmcm9tICcuLi9zdmctcm91dGVzJztcblxuZXhwb3J0IGNsYXNzIE1hcE1hcmtlckljb25IZWxwZXIge1xuICAgIHN0YXRpYyBnZXRSb3V0aW5nTWFya2VyRWxlbWVudCA9IChcbiAgICAgICAgc3RvcE51bWJlcjogbnVtYmVyLFxuICAgICAgICBzdG9wVHlwZTogc3RyaW5nLFxuICAgICAgICBpc1N0b3BDaGVja2VkPzogYm9vbGVhbixcbiAgICAgICAgaXNMaWdodE1vZGU/OiBib29sZWFuLFxuICAgICAgICBsYWJlbE5hbWU/OiBzdHJpbmdcbiAgICApOiBIVE1MRWxlbWVudCA9PiB7XG4gICAgICAgIGNvbnN0IG1hcmtlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgICAgICBsZXQgbWFya2VyU3ZnID0gJyc7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIE1hcE1hcmtlclN0cmluZ0VudW0uREVBREhFQUQsXG4gICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5SRVBBSVIsXG4gICAgICAgICAgICAgICAgTWFwTWFya2VyU3RyaW5nRW51bS5GVUVMLFxuICAgICAgICAgICAgICAgIE1hcE1hcmtlclN0cmluZ0VudW0uVE9XSU5HLFxuICAgICAgICAgICAgICAgIE1hcE1hcmtlclN0cmluZ0VudW0uUEFSS0lORyxcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoc3RvcFR5cGUgYXMgTWFwTWFya2VyU3RyaW5nRW51bSlcbiAgICAgICAgKVxuICAgICAgICAgICAgbWFya2VyU3ZnID0gdGhpcy5nZXRSb3V0aW5nTWFya2VySWNvblN2ZyhzdG9wVHlwZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hcmtlclN2ZyA9IE1hcE1hcmtlckljb25IZWxwZXIuZ2V0Um91dGluZ01hcmtlckljb24oXG4gICAgICAgICAgICAgICAgc3RvcE51bWJlcixcbiAgICAgICAgICAgICAgICBzdG9wVHlwZSxcbiAgICAgICAgICAgICAgICBpc1N0b3BDaGVja2VkLFxuICAgICAgICAgICAgICAgIGlzTGlnaHRNb2RlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIG1hcmtlckVsZW1lbnQuaW5uZXJIVE1MID0gbWFya2VyU3ZnO1xuXG4gICAgICAgIGlmIChsYWJlbE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmtlckxhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgbWFya2VyTGFiZWxFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ21hcmtlci1sYWJlbCcpO1xuICAgICAgICAgICAgbWFya2VyTGFiZWxFbGVtZW50LmlubmVySFRNTCA9IGxhYmVsTmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgbWFya2VyRWxlbWVudC5hcHBlbmRDaGlsZChtYXJrZXJMYWJlbEVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1hcmtlckVsZW1lbnQ7XG4gICAgfTtcblxuICAgIHN0YXRpYyBnZXRSb3V0aW5nTWFya2VySWNvbiA9IChcbiAgICAgICAgc3RvcE51bWJlcjogbnVtYmVyLFxuICAgICAgICBzdG9wVHlwZTogc3RyaW5nLFxuICAgICAgICBpc1N0b3BDaGVja2VkPzogYm9vbGVhbixcbiAgICAgICAgaXNMaWdodE1vZGU/OiBib29sZWFuXG4gICAgKTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0b3BDaGVja2VkKSB7XG4gICAgICAgICAgICBjb25zdCBtYXJrZXJTdmcgPSB0aGlzLmdldFJvdXRpbmdNYXJrZXJTdmcoXG4gICAgICAgICAgICAgICAgc3RvcE51bWJlcixcbiAgICAgICAgICAgICAgICBzdG9wVHlwZSxcbiAgICAgICAgICAgICAgICBpc0xpZ2h0TW9kZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIG1hcmtlclN2ZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNoZWNrZWRNYXJrZXJTdmcgPSB0aGlzLmdldFJvdXRpbmdDaGVja2VkTWFya2VyU3ZnKFxuICAgICAgICAgICAgICAgIHN0b3BUeXBlLFxuICAgICAgICAgICAgICAgIGlzTGlnaHRNb2RlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gY2hlY2tlZE1hcmtlclN2ZztcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBzdGF0aWMgZ2V0Um91dGluZ01hcmtlclN2ZyA9IChcbiAgICAgICAgc3RvcE51bWJlcjogbnVtYmVyLFxuICAgICAgICBzdG9wVHlwZTogc3RyaW5nLFxuICAgICAgICBpc0xpZ2h0TW9kZT86IGJvb2xlYW5cbiAgICApOiBzdHJpbmcgPT4ge1xuICAgICAgICBjb25zdCBtYXJrZXJDb2xvciA9IGlzTGlnaHRNb2RlXG4gICAgICAgICAgICA/IE1hcE9wdGlvbnNDb25zdGFudHMuUk9VVElOR19NQVJLRVJfTElHSFRfQ09MT1JTW1xuICAgICAgICAgICAgICAgICAgc3RvcFR5cGUgYXMga2V5b2YgdHlwZW9mIE1hcE9wdGlvbnNDb25zdGFudHMuUk9VVElOR19NQVJLRVJfTElHSFRfQ09MT1JTXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogTWFwT3B0aW9uc0NvbnN0YW50cy5ST1VUSU5HX01BUktFUl9EQVJLX0NPTE9SU1tcbiAgICAgICAgICAgICAgICAgIHN0b3BUeXBlIGFzIGtleW9mIHR5cGVvZiBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfTUFSS0VSX0RBUktfQ09MT1JTXG4gICAgICAgICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgbWFya2VyT3V0bGluZUNvbG9yID1cbiAgICAgICAgICAgIE1hcE9wdGlvbnNDb25zdGFudHMuUk9VVElOR19NQVJLRVJfT1VUTElORV9DT0xPUlNbXG4gICAgICAgICAgICAgICAgaXNMaWdodE1vZGVcbiAgICAgICAgICAgICAgICAgICAgPyBNYXBNYXJrZXJTdHJpbmdFbnVtLldISVRFXG4gICAgICAgICAgICAgICAgICAgIDogKHN0b3BUeXBlIGFzIGtleW9mIHR5cGVvZiBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfTUFSS0VSX09VVExJTkVfQ09MT1JTKVxuICAgICAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBtYXJrZXJEb3RDb2xvciA9XG4gICAgICAgICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfTUFSS0VSX0RPVF9DT0xPUlNbXG4gICAgICAgICAgICAgICAgaXNMaWdodE1vZGVcbiAgICAgICAgICAgICAgICAgICAgPyBNYXBNYXJrZXJTdHJpbmdFbnVtLkxJR0hUXG4gICAgICAgICAgICAgICAgICAgIDogTWFwTWFya2VyU3RyaW5nRW51bS5EQVJLXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IG1hcmtlclN2ZyA9IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzNcIiB2aWV3Qm94PVwiMCAwIDMwIDMzXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMjlcIiByPVwiM1wiIGZpbGw9XCIke21hcmtlckNvbG9yfVwiIHN0cm9rZT1cIiR7bWFya2VyRG90Q29sb3J9XCIgc3Ryb2tlLXdpZHRoPVwiMlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI0MDYwXzU5MDkwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjYgMTQuOTczMkMyNS45OTkxIDE2Ljc3MTUgMjUuNTU1NCAxOC41NDIgMjQuNzA4IDIwLjEyODlDMjMuODYwNiAyMS43MTU3IDIyLjYzNTUgMjMuMDcwMiAyMS4xNDA1IDI0LjA3MzJDMjEuMTE2NSAyNC4wOTEyIDIwLjc2MDkgMjQuMzEwMiAyMC42MjA3IDI0LjQwMjJDMTcuMjQ4NSAyNi41NDIyIDE1Ljg5NTQgMjcuOTg3MiAxNS4zNTA1IDI4LjgwMjJDMTUuMjg1OSAyOC44OTkxIDE1LjE4NTQgMjguOTY2NSAxNS4wNzEyIDI4Ljk4OTdDMTQuOTU2OSAyOS4wMTI5IDE0LjgzODEgMjguOTkwMSAxNC43NDA2IDI4LjkyNjJDMTQuNjkxNiAyOC44OTMyIDE0LjY0OTQgMjguODUxMSAxNC42MTY0IDI4LjgwMjJDMTQuMDcxNiAyNy45OTEyIDEyLjcxMzUgMjYuNTQ2MiA5LjM0NjI2IDI0LjQwMjJDOS4xOTMwMiAyNC4zMDcyIDguODUxNSAyNC4wOTEyIDguODI2NDYgMjQuMDczMkM3LjI1NjU2IDIzLjAxMDMgNS45ODg2IDIxLjU2MDEgNS4xNDU3MiAxOS44NjM1QzQuMzAyODUgMTguMTY2OSAzLjkxMzY4IDE2LjI4MTUgNC4wMTYwMyAxNC4zOTA0QzQuMTE4MzcgMTIuNDk5MyA0LjcwODc0IDEwLjY2NjcgNS43Mjk4MSA5LjA3MDdDNi43NTA4OCA3LjQ3NDY2IDguMTY3OTYgNi4xNjkzNiA5Ljg0MzQyIDUuMjgxNTVDMTEuNTE4OSA0LjM5Mzc1IDEzLjM5NTggMy45NTM2MSAxNS4yOTIgNC4wMDM4N0MxNy4xODgxIDQuMDU0MTMgMTkuMDM5IDQuNTkzMSAyMC42NjQ5IDUuNTY4NDJDMjIuMjkwOCA2LjU0Mzc0IDIzLjYzNjUgNy45MjIyOCAyNC41NzEzIDkuNTcwMTdDMjUuNTA2MiAxMS4yMTgxIDI1Ljk5ODMgMTMuMDc5MyAyNiAxNC45NzMyWlwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiR7bWFya2VyT3V0bGluZUNvbG9yfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGN4PVwiMTVcIiBjeT1cIjE1XCIgcj1cIjlcIiBmaWxsPVwiJHttYXJrZXJDb2xvcn1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGV4dCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaWQ9XCJfNFwiIGRhdGEtbmFtZT1cIjRcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTUgMTYpXCIgZmlsbD1cIiNmZmZcIiBmb250LXNpemU9XCIxMVwiIGZvbnQtZmFtaWx5PVwiTW9udHNlcnJhdCwgc2Fucy1zZXJpZlwiIGZvbnQtd2VpZ2h0PVwiNzAwXCIgZG9taW5hbnQtYmFzZWxpbmU9XCJtaWRkbGVcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIHk9XCIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRzcGFuPiR7c3RvcE51bWJlciA/PyAwfTwvdHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI0MDYwXzU5MDkwXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMi45OTg1XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPVwiaGFyZEFscGhhXCIgb3BlcmF0b3I9XCJvdXRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjE1IDBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjQwNjBfNTkwOTBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjQwNjBfNTkwOTBcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5gO1xuXG4gICAgICAgIHJldHVybiBtYXJrZXJTdmc7XG4gICAgfTtcblxuICAgIHN0YXRpYyBnZXRSb3V0aW5nQ2hlY2tlZE1hcmtlclN2ZyA9IChcbiAgICAgICAgc3RvcFR5cGU6IHN0cmluZyxcbiAgICAgICAgaXNMaWdodE1vZGU/OiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoZWNrZWRNYXJrZXJDb2xvciA9IGlzTGlnaHRNb2RlXG4gICAgICAgICAgICA/IE1hcE9wdGlvbnNDb25zdGFudHMuUk9VVElOR19NQVJLRVJfTElHSFRfQ09MT1JTW1xuICAgICAgICAgICAgICAgICAgc3RvcFR5cGUgYXMga2V5b2YgdHlwZW9mIE1hcE9wdGlvbnNDb25zdGFudHMuUk9VVElOR19NQVJLRVJfTElHSFRfQ09MT1JTXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDogTWFwT3B0aW9uc0NvbnN0YW50cy5ST1VUSU5HX01BUktFUl9EQVJLX0NPTE9SU1tcbiAgICAgICAgICAgICAgICAgIHN0b3BUeXBlIGFzIGtleW9mIHR5cGVvZiBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfTUFSS0VSX0RBUktfQ09MT1JTXG4gICAgICAgICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgY2hlY2tlZE1hcmtlck91dGxpbmVDb2xvciA9XG4gICAgICAgICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfTUFSS0VSX09VVExJTkVfQ09MT1JTW1xuICAgICAgICAgICAgICAgIGlzTGlnaHRNb2RlXG4gICAgICAgICAgICAgICAgICAgID8gTWFwTWFya2VyU3RyaW5nRW51bS5XSElURVxuICAgICAgICAgICAgICAgICAgICA6IChzdG9wVHlwZSBhcyBrZXlvZiB0eXBlb2YgTWFwT3B0aW9uc0NvbnN0YW50cy5ST1VUSU5HX01BUktFUl9PVVRMSU5FX0NPTE9SUylcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgY2hlY2tlZE1hcmtlckRvdENvbG9yID1cbiAgICAgICAgICAgIE1hcE9wdGlvbnNDb25zdGFudHMuUk9VVElOR19NQVJLRVJfRE9UX0NPTE9SU1tcbiAgICAgICAgICAgICAgICBpc0xpZ2h0TW9kZVxuICAgICAgICAgICAgICAgICAgICA/IE1hcE1hcmtlclN0cmluZ0VudW0uTElHSFRcbiAgICAgICAgICAgICAgICAgICAgOiBNYXBNYXJrZXJTdHJpbmdFbnVtLkRBUktcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgY2hlY2tlZE1hcmtlclN2ZyA9IGA8c3ZnIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzM1wiIHZpZXdCb3g9XCIwIDAgMzAgMzNcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIyOVwiIHI9XCIzXCIgZmlsbD1cIiR7Y2hlY2tlZE1hcmtlckNvbG9yfVwiIHN0cm9rZT1cIiR7Y2hlY2tlZE1hcmtlckRvdENvbG9yfVwiIHN0cm9rZS13aWR0aD1cIjJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzE4MDU1XzM0MjM4KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjYgMTQuOTczMkMyNS45OTkxIDE2Ljc3MTUgMjUuNTU1NCAxOC41NDIgMjQuNzA4IDIwLjEyODlDMjMuODYwNiAyMS43MTU3IDIyLjYzNTUgMjMuMDcwMiAyMS4xNDA1IDI0LjA3MzJDMjEuMTE2NSAyNC4wOTEyIDIwLjc2MDkgMjQuMzEwMiAyMC42MjA3IDI0LjQwMjJDMTcuMjQ4NSAyNi41NDIyIDE1Ljg5NTQgMjcuOTg3MiAxNS4zNTA1IDI4LjgwMjJDMTUuMjg1OSAyOC44OTkxIDE1LjE4NTQgMjguOTY2NSAxNS4wNzEyIDI4Ljk4OTdDMTQuOTU2OSAyOS4wMTI5IDE0LjgzODEgMjguOTkwMSAxNC43NDA2IDI4LjkyNjJDMTQuNjkxNiAyOC44OTMyIDE0LjY0OTQgMjguODUxMSAxNC42MTY0IDI4LjgwMjJDMTQuMDcxNiAyNy45OTEyIDEyLjcxMzUgMjYuNTQ2MiA5LjM0NjI2IDI0LjQwMjJDOS4xOTMwMiAyNC4zMDcyIDguODUxNSAyNC4wOTEyIDguODI2NDYgMjQuMDczMkM3LjI1NjU2IDIzLjAxMDMgNS45ODg2IDIxLjU2MDEgNS4xNDU3MiAxOS44NjM1QzQuMzAyODUgMTguMTY2OSAzLjkxMzY4IDE2LjI4MTUgNC4wMTYwMyAxNC4zOTA0QzQuMTE4MzcgMTIuNDk5MyA0LjcwODc0IDEwLjY2NjcgNS43Mjk4MSA5LjA3MDdDNi43NTA4OCA3LjQ3NDY2IDguMTY3OTYgNi4xNjkzNiA5Ljg0MzQyIDUuMjgxNTVDMTEuNTE4OSA0LjM5Mzc1IDEzLjM5NTggMy45NTM2MSAxNS4yOTIgNC4wMDM4N0MxNy4xODgxIDQuMDU0MTMgMTkuMDM5IDQuNTkzMSAyMC42NjQ5IDUuNTY4NDJDMjIuMjkwOCA2LjU0Mzc0IDIzLjYzNjUgNy45MjIyOCAyNC41NzEzIDkuNTcwMTdDMjUuNTA2MiAxMS4yMTgxIDI1Ljk5ODMgMTMuMDc5MyAyNiAxNC45NzMyWlwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiR7Y2hlY2tlZE1hcmtlck91dGxpbmVDb2xvcn1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjE1XCIgY3k9XCIxNVwiIHI9XCI5XCIgZmlsbD1cIiR7Y2hlY2tlZE1hcmtlckNvbG9yfVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMy4wNDYyIDE5LjA0NzdMOS43MTI5MSAxNS43MTQ0QzkuNjU3MTggMTUuNjU4NyA5LjYxMjk3IDE1LjU5MjUgOS41ODI4IDE1LjUxOTdDOS41NTI2NCAxNS40NDY5IDkuNTM3MTEgMTUuMzY4OSA5LjUzNzExIDE1LjI5MDFDOS41MzcxMSAxNS4yMTEyIDkuNTUyNjQgMTUuMTMzMiA5LjU4MjggMTUuMDYwNEM5LjYxMjk3IDE0Ljk4NzYgOS42NTcxOCAxNC45MjE0IDkuNzEyOTEgMTQuODY1N0wxMC41NjI5IDE0LjAxODRDMTAuNjE4NiAxMy45NjI3IDEwLjY4NDggMTMuOTE4NCAxMC43NTc2IDEzLjg4ODNDMTAuODMwNCAxMy44NTgxIDEwLjkwODQgMTMuODQyNiAxMC45ODcyIDEzLjg0MjZDMTEuMDY2MSAxMy44NDI2IDExLjE0NDEgMTMuODU4MSAxMS4yMTY5IDEzLjg4ODNDMTEuMjg5NyAxMy45MTg0IDExLjM1NTkgMTMuOTYyNyAxMS40MTE2IDE0LjAxODRMMTMuNDcwMiAxNi4wNzcxTDE4LjU4NjkgMTAuOTU3MUMxOC42NDI2IDEwLjkwMTMgMTguNzA4OCAxMC44NTcxIDE4Ljc4MTYgMTAuODI2OUMxOC44NTQ0IDEwLjc5NjggMTguOTMyNCAxMC43ODEyIDE5LjAxMTIgMTAuNzgxMkMxOS4wOTAxIDEwLjc4MTIgMTkuMTY4MSAxMC43OTY4IDE5LjI0MDkgMTAuODI2OUMxOS4zMTM3IDEwLjg1NzEgMTkuMzc5OSAxMC45MDEzIDE5LjQzNTYgMTAuOTU3MUwyMC4yODQyIDExLjgwNTdDMjAuMzQgMTEuODYxNCAyMC4zODQyIDExLjkyNzYgMjAuNDE0NCAxMi4wMDA0QzIwLjQ0NDUgMTIuMDczMiAyMC40NjAxIDEyLjE1MTIgMjAuNDYwMSAxMi4yMzAxQzIwLjQ2MDEgMTIuMzA4OSAyMC40NDQ1IDEyLjM4NjkgMjAuNDE0NCAxMi40NTk3QzIwLjM4NDIgMTIuNTMyNSAyMC4zNCAxMi41OTg3IDIwLjI4NDIgMTIuNjU0NEwxMy44OTQ5IDE5LjA0NTFDMTMuODM5MiAxOS4xMDA4IDEzLjc3MyAxOS4xNDUgMTMuNzAwMiAxOS4xNzUyQzEzLjYyNzQgMTkuMjA1MyAxMy41NDk0IDE5LjIyMDkgMTMuNDcwNiAxOS4yMjA5QzEzLjM5MTggMTkuMjIwOSAxMy4zMTM3IDE5LjIwNTMgMTMuMjQwOSAxOS4xNzUyQzEzLjE2ODEgMTkuMTQ1IDEzLjEwMiAxOS4xMDA4IDEzLjA0NjIgMTkuMDQ1MVYxOS4wNDc3WlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF8xODA1NV8zNDIzOFwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzIuOTk4NVwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PVwiMFwiIHJlc3VsdD1cIkJhY2tncm91bmRJbWFnZUZpeFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IGluPVwiU291cmNlQWxwaGFcIiB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDBcIiByZXN1bHQ9XCJoYXJkQWxwaGFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjJcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPVwiaGFyZEFscGhhXCIgb3BlcmF0b3I9XCJvdXRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4xNSAwXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cImVmZmVjdDFfZHJvcFNoYWRvd18xODA1NV8zNDIzOFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbj1cIlNvdXJjZUdyYXBoaWNcIiBpbjI9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMTgwNTVfMzQyMzhcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+YDtcblxuICAgICAgICByZXR1cm4gY2hlY2tlZE1hcmtlclN2ZztcbiAgICB9O1xuXG4gICAgc3RhdGljIGdldFJvdXRpbmdNYXJrZXJJY29uU3ZnID0gKHN0b3BUeXBlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgICBjb25zdCBtYXJrZXJTdmdQYXRoID1cbiAgICAgICAgICAgIE1hcE9wdGlvbnNDb25zdGFudHMuUk9VVElOR19NQVJLRVJfSUNPTl9QQVRIU1tcbiAgICAgICAgICAgICAgICBzdG9wVHlwZSBhcyBrZXlvZiB0eXBlb2YgTWFwT3B0aW9uc0NvbnN0YW50cy5ST1VUSU5HX01BUktFUl9JQ09OX1BBVEhTXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGNoZWNrZWRNYXJrZXJDb2xvciA9XG4gICAgICAgICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfTUFSS0VSX0xJR0hUX0NPTE9SU1tcbiAgICAgICAgICAgICAgICBzdG9wVHlwZSBhcyBrZXlvZiB0eXBlb2YgTWFwT3B0aW9uc0NvbnN0YW50cy5ST1VUSU5HX01BUktFUl9MSUdIVF9DT0xPUlNcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgY2hlY2tlZE1hcmtlck91dGxpbmVDb2xvciA9XG4gICAgICAgICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfTUFSS0VSX09VVExJTkVfQ09MT1JTW1xuICAgICAgICAgICAgICAgIE1hcE1hcmtlclN0cmluZ0VudW0uV0hJVEVcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgY2hlY2tlZE1hcmtlckRvdENvbG9yID1cbiAgICAgICAgICAgIE1hcE9wdGlvbnNDb25zdGFudHMuUk9VVElOR19NQVJLRVJfRE9UX0NPTE9SU1tcbiAgICAgICAgICAgICAgICBNYXBNYXJrZXJTdHJpbmdFbnVtLkxJR0hUXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHJvdXRpbmdNYXJrZXJTdmcgPSBgPHN2ZyB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzNcIiB2aWV3Qm94PVwiMCAwIDMwIDMzXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxNVwiIGN5PVwiMjlcIiByPVwiM1wiIGZpbGw9XCIke2NoZWNrZWRNYXJrZXJDb2xvcn1cIiBzdHJva2U9XCIke2NoZWNrZWRNYXJrZXJEb3RDb2xvcn1cIiBzdHJva2Utd2lkdGg9XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBmaWx0ZXI9XCJ1cmwoI2ZpbHRlcjBfZF85MjY4Xzc5ODM0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjYgMTQuOTczMkMyNS45OTkxIDE2Ljc3MTUgMjUuNTU1NCAxOC41NDIgMjQuNzA4IDIwLjEyODlDMjMuODYwNiAyMS43MTU3IDIyLjYzNTUgMjMuMDcwMiAyMS4xNDA1IDI0LjA3MzJDMjEuMTE2NSAyNC4wOTEyIDIwLjc2MDkgMjQuMzEwMiAyMC42MjA3IDI0LjQwMjJDMTcuMjQ4NSAyNi41NDIyIDE1Ljg5NTQgMjcuOTg3MiAxNS4zNTA1IDI4LjgwMjJDMTUuMjg1OSAyOC44OTkxIDE1LjE4NTQgMjguOTY2NSAxNS4wNzEyIDI4Ljk4OTdDMTQuOTU2OSAyOS4wMTI5IDE0LjgzODEgMjguOTkwMSAxNC43NDA2IDI4LjkyNjJDMTQuNjkxNiAyOC44OTMyIDE0LjY0OTQgMjguODUxMSAxNC42MTY0IDI4LjgwMjJDMTQuMDcxNiAyNy45OTEyIDEyLjcxMzUgMjYuNTQ2MiA5LjM0NjI2IDI0LjQwMjJDOS4xOTMwMiAyNC4zMDcyIDguODUxNSAyNC4wOTEyIDguODI2NDYgMjQuMDczMkM3LjI1NjU2IDIzLjAxMDMgNS45ODg2IDIxLjU2MDEgNS4xNDU3MiAxOS44NjM1QzQuMzAyODUgMTguMTY2OSAzLjkxMzY4IDE2LjI4MTUgNC4wMTYwMyAxNC4zOTA0QzQuMTE4MzcgMTIuNDk5MyA0LjcwODc0IDEwLjY2NjcgNS43Mjk4MSA5LjA3MDdDNi43NTA4OCA3LjQ3NDY2IDguMTY3OTYgNi4xNjkzNiA5Ljg0MzQyIDUuMjgxNTVDMTEuNTE4OSA0LjM5Mzc1IDEzLjM5NTggMy45NTM2MSAxNS4yOTIgNC4wMDM4N0MxNy4xODgxIDQuMDU0MTMgMTkuMDM5IDQuNTkzMSAyMC42NjQ5IDUuNTY4NDJDMjIuMjkwOCA2LjU0Mzc0IDIzLjYzNjUgNy45MjIyOCAyNC41NzEzIDkuNTcwMTdDMjUuNTA2MiAxMS4yMTgxIDI1Ljk5ODMgMTMuMDc5MyAyNiAxNC45NzMyWlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTVcIiBjeT1cIjE1XCIgcj1cIjlcIiBmaWxsPVwiJHtjaGVja2VkTWFya2VyQ29sb3J9XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiJHttYXJrZXJTdmdQYXRofVwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjBfZF85MjY4Xzc5ODM0XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIzMi45OTg1XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZU9mZnNldC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiMlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbG9yTWF0cml4IHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjE1IDBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwiZWZmZWN0MV9kcm9wU2hhZG93XzkyNjhfNzk4MzRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzkyNjhfNzk4MzRcIiByZXN1bHQ9XCJzaGFwZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+YDtcblxuICAgICAgICByZXR1cm4gcm91dGluZ01hcmtlclN2ZztcbiAgICB9O1xuXG4gICAgc3RhdGljIGdldE1hcE1hcmtlcihpc0Zhdm9yaXRlPzogYm9vbGVhbiwgaXNDbG9zZWQ/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IG1hcmtlckljb25Sb3V0ZSA9IE1hcFN2Z1JvdXRlcy5kZWZhdWx0TWFya2VySWNvbjtcblxuICAgICAgICBpZiAoaXNDbG9zZWQpIG1hcmtlckljb25Sb3V0ZSA9IE1hcFN2Z1JvdXRlcy5jbG9zZWRNYXJrZXJJY29uO1xuICAgICAgICBlbHNlIGlmIChpc0Zhdm9yaXRlKSBtYXJrZXJJY29uUm91dGUgPSBNYXBTdmdSb3V0ZXMuZmF2b3JpdGVNYXJrZXJJY29uO1xuXG4gICAgICAgIHJldHVybiBtYXJrZXJJY29uUm91dGU7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldENsdXN0ZXJNYXJrZXIoY291bnQ6IG51bWJlciwgaXNTZWxlY3RlZD86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBtYXJrZXJTdmcgPSBgPHN2ZyBjbGFzcz1cIm1hcmtlci1zdmdcIiB3aWR0aD1cIjUyXCIgaGVpZ2h0PVwiNTJcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbHRlcj1cInVybCgjZmlsdGVyMF9kXzI2MzFfMjc0MTA0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjE0XCIgZmlsbD1cIiNGQUIxNUNcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIl80XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbmFtZT1cIjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDI2IDI3KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI2ZmZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU9XCIxNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseT1cIk1vbnRzZXJyYXQsIHNhbnMtc2VyaWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ9XCI3MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9taW5hbnQtYmFzZWxpbmU9XCJtaWRkbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHNwYW4+ICR7Y291bnR9IDwvdHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgb3BhY2l0eT1cIjAuN1wiIGZpbHRlcj1cInVybCgjZmlsdGVyMV9kXzI2MzFfMjc0MTA0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zNi43ODEgNy42NTAwMkwzNS40NjEgOS44OTMwMkMzNS4zNzA1IDEwLjA1MDIgMzUuMzQ0NiAxMC4yMzYzIDM1LjM4ODYgMTAuNDEyMkMzNS40MzI2IDEwLjU4ODEgMzUuNTQzMiAxMC43NCAzNS42OTcgMTAuODM2QzM3Ljg5MTcgMTIuMjQwOSAzOS43NTU1IDE0LjEwNTEgNDEuMTYgMTYuM0M0MS4yNTYgMTYuNDUzOCA0MS40MDggMTYuNTY0NCA0MS41ODM4IDE2LjYwODRDNDEuNzU5NyAxNi42NTI0IDQxLjk0NTggMTYuNjI2NSA0Mi4xMDMgMTYuNTM2TDQ0LjM0NiAxNS4yMTZDNDQuNDI3NSAxNS4xNjkxIDQ0LjQ5ODggMTUuMTA2MSA0NC41NTU0IDE1LjAzMUM0NC42MTIxIDE0Ljk1NTkgNDQuNjUzIDE0Ljg3MDIgNDQuNjc1OCAxNC43Nzg5QzQ0LjY5ODYgMTQuNjg3NiA0NC43MDI3IDE0LjU5MjYgNDQuNjg4IDE0LjQ5OTdDNDQuNjczMiAxNC40MDY4IDQ0LjYzOTkgMTQuMzE3OCA0NC41OSAxNC4yMzhDNDIuODQyNiAxMS40ODY3IDQwLjUxMDMgOS4xNTQzNiAzNy43NTkgNy40MDcwMkMzNy42NzkyIDcuMzU3MDkgMzcuNTkwMiA3LjMyMzc2IDM3LjQ5NzMgNy4zMDkwMUMzNy40MDQ0IDcuMjk0MjcgMzcuMzA5NCA3LjI5ODQgMzcuMjE4MSA3LjMyMTE4QzM3LjEyNjggNy4zNDM5NiAzNy4wNDExIDcuMzg0OTEgMzYuOTY2IDcuNDQxNThDMzYuODkwOSA3LjQ5ODI1IDM2LjgyNzkgNy41Njg0OCAzNi43ODEgNy42NTAwMlpNNDYuNjAxIDIwLjY1MUw0NC4wNzMgMjEuMzA5QzQzLjg5ODUgMjEuMzU2MiA0My43NDkgMjEuNDY5IDQzLjY1NTggMjEuNjIzOUM0My41NjI2IDIxLjc3ODggNDMuNTMyOSAyMS45NjM3IDQzLjU3MyAyMi4xNEM0NC4xMzQzIDI0LjY4MjcgNDQuMTM0MyAyNy4zMTczIDQzLjU3MyAyOS44NkM0My41MzI5IDMwLjAzNjMgNDMuNTYyNiAzMC4yMjEyIDQzLjY1NTggMzAuMzc2MUM0My43NDkgMzAuNTMxIDQzLjg5ODUgMzAuNjQzOSA0NC4wNzMgMzAuNjkxTDQ2LjYwMSAzMS4zNDlDNDYuNjkxNyAzMS4zNzM1IDQ2Ljc4NjQgMzEuMzc5NCA0Ni44Nzk1IDMxLjM2NjVDNDYuOTcyNSAzMS4zNTM2IDQ3LjA2MjEgMzEuMzIyMSA0Ny4xNDI3IDMxLjI3MzhDNDcuMjIzMyAzMS4yMjU2IDQ3LjI5MzQgMzEuMTYxNiA0Ny4zNDg4IDMxLjA4NTdDNDcuNDA0MSAzMS4wMDk4IDQ3LjQ0MzcgMzAuOTIzNSA0Ny40NjUgMzAuODMyQzQ4LjE3MyAyNy42NDk2IDQ4LjE3MyAyNC4zNTA0IDQ3LjQ2NSAyMS4xNjhDNDcuNDQzNyAyMS4wNzY1IDQ3LjQwNDEgMjAuOTkwMiA0Ny4zNDg4IDIwLjkxNDNDNDcuMjkzNCAyMC44Mzg0IDQ3LjIyMzMgMjAuNzc0NCA0Ny4xNDI3IDIwLjcyNjJDNDcuMDYyMSAyMC42NzggNDYuOTcyNSAyMC42NDY0IDQ2Ljg3OTUgMjAuNjMzNUM0Ni43ODY0IDIwLjYyMDYgNDYuNjkxNyAyMC42MjY2IDQ2LjYwMSAyMC42NTFaTTMwLjY5NiA0NC4wNzlDMzAuNjUwMiA0My45MDM3IDMwLjUzNzYgNDMuNzUzMiAzMC4zODIzIDQzLjY1OThDMzAuMjI3IDQzLjU2NjMgMzAuMDQxNCA0My41Mzc0IDI5Ljg2NSA0My41NzlDMjcuMzE5MiA0NC4xMzk3IDI0LjY4MTggNDQuMTM5NyAyMi4xMzYgNDMuNTc5QzIxLjk1OTcgNDMuNTM4OSAyMS43NzQ4IDQzLjU2ODYgMjEuNjE5OSA0My42NjE4QzIxLjQ2NSA0My43NTUgMjEuMzUyMSA0My45MDQ1IDIxLjMwNSA0NC4wNzlMMjAuNjQ3IDQ2LjZDMjAuNjIyNSA0Ni42OTA3IDIwLjYxNjYgNDYuNzg1NCAyMC42Mjk1IDQ2Ljg3ODVDMjAuNjQyNCA0Ni45NzE2IDIwLjY3MzkgNDcuMDYxMSAyMC43MjIyIDQ3LjE0MTdDMjAuNzcwNCA0Ny4yMjIzIDIwLjgzNDQgNDcuMjkyNCAyMC45MTAzIDQ3LjM0NzhDMjAuOTg2MiA0Ny40MDMyIDIxLjA3MjUgNDcuNDQyNyAyMS4xNjQgNDcuNDY0QzI0LjM0NzEgNDguMTcyIDI3LjY0NjkgNDguMTcyIDMwLjgzIDQ3LjQ2NEMzMC45MjE0IDQ3LjQ0MjcgMzEuMDA3NiA0Ny40MDMyIDMxLjA4MzQgNDcuMzQ3OUMzMS4xNTkyIDQ3LjI5MjYgMzEuMjIzMSA0Ny4yMjI2IDMxLjI3MTQgNDcuMTQyMUMzMS4zMTk2IDQ3LjA2MTYgMzEuMzUxMiA0Ni45NzIyIDMxLjM2NDEgNDYuODc5MkMzMS4zNzcxIDQ2Ljc4NjMgMzEuMzcxMyA0Ni42OTE3IDMxLjM0NyA0Ni42MDFMMzAuNjk2IDQ0LjA3OVpNMTUuMjEgNy42NDkwMkMxNS4xNjMgNy41Njc2MiAxNS4xMDAyIDcuNDk2NTEgMTUuMDI1MSA3LjQzOTkzQzE0Ljk1MDEgNy4zODMzNSAxNC44NjQ0IDcuMzQyNDUgMTQuNzczMyA3LjMxOTY4QzE0LjY4MjEgNy4yOTY5MSAxNC41ODczIDcuMjkyNzMgMTQuNDk0NSA3LjMwNzM5QzE0LjQwMTYgNy4zMjIwNSAxNC4zMTI3IDcuMzU1MjYgMTQuMjMzIDcuNDA1MDJDMTEuNDc0MiA5LjE0NTQzIDkuMTM4NDIgMTEuNDc5NSA3LjM5NTk5IDE0LjIzN0M3LjM0NjIzIDE0LjMxNjcgNy4zMTMwMyAxNC40MDU3IDcuMjk4MzcgMTQuNDk4NUM3LjI4MzcxIDE0LjU5MTMgNy4yODc4OSAxNC42ODYxIDcuMzEwNjYgMTQuNzc3M0M3LjMzMzQzIDE0Ljg2ODUgNy4zNzQzMiAxNC45NTQxIDcuNDMwOSAxNS4wMjkyQzcuNDg3NDggMTUuMTA0MiA3LjU1ODU5IDE1LjE2NzEgNy42Mzk5OSAxNS4yMTRMOS44ODU5OSAxNi41MzNDMTAuMDQzNiAxNi42MjQ2IDEwLjIzMDggMTYuNjUxMSAxMC40MDc2IDE2LjYwNjhDMTAuNTg0NSAxNi41NjI2IDEwLjczNzEgMTYuNDUxMSAxMC44MzMgMTYuMjk2QzEyLjIzNyAxNC4xMDIxIDE0LjEwMSAxMi4yMzk0IDE2LjI5NiAxMC44MzdDMTYuNDUxIDEwLjc0MTEgMTYuNTYyNSAxMC41ODg1IDE2LjYwNjggMTAuNDExNkMxNi42NTExIDEwLjIzNDggMTYuNjI0NiAxMC4wNDc2IDE2LjUzMyA5Ljg5MDAyTDE1LjIxIDcuNjQ5MDJaTTcuOTA5OTkgMjEuMzA4TDUuMzk1OTkgMjAuNjUyQzUuMzA1MjggMjAuNjI3NCA1LjIxMDUzIDIwLjYyMTMgNS4xMTc0MSAyMC42MzQxQzUuMDI0MjggMjAuNjQ2OCA0LjkzNDY4IDIwLjY3ODIgNC44NTM5NiAyMC43MjY0QzQuNzczMjMgMjAuNzc0NiA0LjcwMzAzIDIwLjgzODUgNC42NDc1NCAyMC45MTQzQzQuNTkyMDUgMjAuOTkwMiA0LjU1MjQyIDIxLjA3NjUgNC41MzA5OSAyMS4xNjhDMy44MjMgMjQuMzUwNCAzLjgyMyAyNy42NDk2IDQuNTMwOTkgMzAuODMyQzQuNTUyMzEgMzAuOTIzNSA0LjU5MTg0IDMxLjAwOTggNC42NDcyMSAzMS4wODU3QzQuNzAyNTggMzEuMTYxNiA0Ljc3MjY3IDMxLjIyNTYgNC44NTMzIDMxLjI3MzhDNC45MzM5MiAzMS4zMjIxIDUuMDIzNDMgMzEuMzUzNiA1LjExNjUgMzEuMzY2NUM1LjIwOTU2IDMxLjM3OTQgNS4zMDQyOCAzMS4zNzM1IDUuMzk0OTkgMzEuMzQ5TDcuOTIyOTkgMzAuNjkxQzguMDk3NTEgMzAuNjQzOSA4LjI0NzAyIDMwLjUzMSA4LjM0MDIyIDMwLjM3NjFDOC40MzM0MiAzMC4yMjEyIDguNDYzMDggMzAuMDM2MyA4LjQyMjk5IDI5Ljg2QzguMTM5OTIgMjguNTkyOCA3Ljk5NjczIDI3LjI5ODQgNy45OTU5OSAyNkM3Ljk5NTkzIDI0LjcwMjcgOC4xMzQzOSAyMy40MDkgOC40MDg5OSAyMi4xNDFDOC40NDk2NiAyMS45NjQ1IDguNDIwMjggMjEuNzc5IDguMzI3MDMgMjEuNjIzN0M4LjIzMzc5IDIxLjQ2ODMgOC4wODQ5NCAyMS4zNTUyIDcuOTA5OTkgMjEuMzA4Wk05Ljg4ODk5IDM1LjQ2NUw3LjY0NTk5IDM2Ljc4NUM3LjU2NDQ2IDM2LjgzMiA3LjQ5MzIyIDM2Ljg5NDkgNy40MzY1NSAzNi45N0M3LjM3OTg4IDM3LjA0NTEgNy4zMzg5MyAzNy4xMzA5IDcuMzE2MTYgMzcuMjIyMkM3LjI5MzM4IDM3LjMxMzUgNy4yODkyNCAzNy40MDg0IDcuMzAzOTkgMzcuNTAxM0M3LjMxODc0IDM3LjU5NDMgNy4zNTIwNyAzNy42ODMzIDcuNDAxOTkgMzcuNzYzQzkuMTQ5MzMgNDAuNTE0MyAxMS40ODE3IDQyLjg0NjcgMTQuMjMzIDQ0LjU5NEMxNC4zMTI3IDQ0LjY0MzkgMTQuNDAxNyA0NC42NzczIDE0LjQ5NDcgNDQuNjkyQzE0LjU4NzYgNDQuNzA2OCAxNC42ODI2IDQ0LjcwMjYgMTQuNzczOCA0NC42Nzk5QzE0Ljg2NTEgNDQuNjU3MSAxNC45NTA5IDQ0LjYxNjEgMTUuMDI2IDQ0LjU1OTVDMTUuMTAxMSA0NC41MDI4IDE1LjE2NCA0NC40MzE2IDE1LjIxMSA0NC4zNUwxNi41MzEgNDIuMTA3QzE2LjYyMTQgNDEuOTQ5OSAxNi42NDc0IDQxLjc2MzggMTYuNjAzNCA0MS41ODc5QzE2LjU1OTQgNDEuNDEyIDE2LjQ0ODggNDEuMjYgMTYuMjk1IDQxLjE2NEMxNC4xMDAzIDM5Ljc1OTIgMTIuMjM2NSAzNy44OTUgMTAuODMyIDM1LjdDMTAuNzM2IDM1LjU0NjIgMTAuNTg0IDM1LjQzNTcgMTAuNDA4MSAzNS4zOTE2QzEwLjIzMjIgMzUuMzQ3NiAxMC4wNDYxIDM1LjM3NDYgOS44ODg5OSAzNS40NjVaTTQxLjE2IDM1LjdDMzkuNzU1MiAzNy44OTUxIDM3Ljg5MSAzOS43NTkzIDM1LjY5NiA0MS4xNjRDMzUuNTQyMiA0MS4yNiAzNS40MzE2IDQxLjQxMiAzNS4zODc2IDQxLjU4NzlDMzUuMzQzNiA0MS43NjM4IDM1LjM2OTUgNDEuOTQ5OSAzNS40NiA0Mi4xMDdMMzYuNzggNDQuMzVDMzYuODI3IDQ0LjQzMTYgMzYuODg5OSA0NC41MDI4IDM2Ljk2NSA0NC41NTk1QzM3LjA0MDEgNDQuNjE2MSAzNy4xMjU4IDQ0LjY1NzEgMzcuMjE3MSA0NC42Nzk5QzM3LjMwODQgNDQuNzAyNiAzNy40MDM0IDQ0LjcwNjggMzcuNDk2MyA0NC42OTJDMzcuNTg5MiA0NC42NzczIDM3LjY3ODIgNDQuNjQzOSAzNy43NTggNDQuNTk0QzQwLjUwOTMgNDIuODQ2NyA0Mi44NDE2IDQwLjUxNDMgNDQuNTg5IDM3Ljc2M0M0NC42Mzg5IDM3LjY4MzMgNDQuNjcyMiAzNy41OTQzIDQ0LjY4NyAzNy41MDEzQzQ0LjcwMTcgMzcuNDA4NCA0NC42OTc2IDM3LjMxMzUgNDQuNjc0OCAzNy4yMjIyQzQ0LjY1MjEgMzcuMTMwOSA0NC42MTExIDM3LjA0NTEgNDQuNTU0NCAzNi45N0M0NC40OTc4IDM2Ljg5NDkgNDQuNDI2NSAzNi44MzIgNDQuMzQ1IDM2Ljc4NUw0Mi4xMDIgMzUuNDY1QzQxLjk0NDggMzUuMzc0NiA0MS43NTg3IDM1LjM0ODYgNDEuNTgyOCAzNS4zOTI2QzQxLjQwNyAzNS40MzY3IDQxLjI1NSAzNS41NDcyIDQxLjE1OSAzNS43MDFNMjUuOTk2IDQuMDAwMDJDMjQuMzcwNyAzLjk5Nzk4IDIyLjc1MDEgNC4xNzYwNyAyMS4xNjQgNC41MzEwMkMyMS4wNzI1IDQuNTUyNDQgMjAuOTg2MiA0LjU5MjA4IDIwLjkxMDMgNC42NDc1N0MyMC44MzQ0IDQuNzAzMDUgMjAuNzcwNSA0Ljc3MzI1IDIwLjcyMjQgNC44NTM5OEMyMC42NzQyIDQuOTM0NzEgMjAuNjQyOCA1LjAyNDMxIDIwLjYzIDUuMTE3NDNDMjAuNjE3MyA1LjIxMDU2IDIwLjYyMzQgNS4zMDUzIDIwLjY0OCA1LjM5NjAyTDIxLjMwNCA3LjkxMjAyQzIxLjM1MTEgOC4wODY5NiAyMS40NjQzIDguMjM2ODEgMjEuNjE5NiA4LjMzMDA2QzIxLjc3NSA4LjQyMzMgMjEuOTYwNCA4LjQ1MjY4IDIyLjEzNyA4LjQxMjAyQzIzLjQwNSA4LjEzNzc1IDI0LjY5ODcgNy45OTk2MyAyNS45OTYgOC4wMDAwMkMyNy4yOTcxIDcuOTk5MDcgMjguNTk0NCA4LjEzOTkgMjkuODY1IDguNDIwMDJDMzAuMDQxNCA4LjQ2MTY4IDMwLjIyNyA4LjQzMjY5IDMwLjM4MjMgOC4zMzkyNkMzMC41Mzc2IDguMjQ1ODMgMzAuNjUwMiA4LjA5NTM2IDMwLjY5NiA3LjkyMDAyTDMxLjM0NyA1LjM5MzAyQzMxLjM3MTMgNS4zMDIzNyAzMS4zNzcxIDUuMjA3NzYgMzEuMzY0MSA1LjExNDgxQzMxLjM1MTIgNS4wMjE4NiAzMS4zMTk2IDQuOTMyNDcgMzEuMjcxNCA0Ljg1MTk2QzMxLjIyMzEgNC43NzE0NSAzMS4xNTkyIDQuNzAxNDYgMzEuMDgzNCA0LjY0NjE1QzMxLjAwNzYgNC41OTA4NCAzMC45MjE0IDQuNTUxMzUgMzAuODMgNC41MzAwMkMyOS4yNDMxIDQuMTc1ODEgMjcuNjIxOSAzLjk5ODA2IDI1Ljk5NiA0LjAwMDAyWlwiIGZpbGw9XCIke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQgPyAnI0ZBQjE1QycgOiAnI0ZGRkZGRidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9kXzI2MzFfMjc0MTA0XCIgeD1cIjZcIiB5PVwiNlwiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4xNSAwXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjYzMV8yNzQxMDRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNjMxXzI3NDEwNFwiIHJlc3VsdD1cInNoYXBlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMV9kXzI2MzFfMjc0MTA0XCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiNTEuOTk2MVwiIGhlaWdodD1cIjUxLjk5NVwiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggaW49XCJTb3VyY2VBbHBoYVwiIHR5cGU9XCJtYXRyaXhcIiB2YWx1ZXM9XCIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMFwiIHJlc3VsdD1cImhhcmRBbHBoYVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVPZmZzZXQvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9XCJoYXJkQWxwaGFcIiBvcGVyYXRvcj1cIm91dFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB0eXBlPVwibWF0cml4XCIgdmFsdWVzPVwiMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4xNSAwXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjYzMV8yNzQxMDRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cImVmZmVjdDFfZHJvcFNoYWRvd18yNjMxXzI3NDEwNFwiIHJlc3VsdD1cInNoYXBlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWx0ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPmA7XG5cbiAgICAgICAgY29uc3QgbWFya2VySWNvblJvdXRlID1cbiAgICAgICAgICAgICdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtODtiYXNlNjQsJyArIGJ0b2EobWFya2VyU3ZnKTtcblxuICAgICAgICByZXR1cm4gbWFya2VyU3ZnO1xuICAgIH1cbn1cbiJdfQ==
@@ -81,9 +81,8 @@ export class ProgressBarComponent {
81
81
  path: [],
82
82
  decodedShape: loadStop.routeShape,
83
83
  strokeColor: index === 1
84
- ? MapOptionsConstants.routingPathColors
85
- .currentLocation
86
- : MapOptionsConstants.routingPathColors.default,
84
+ ? MapOptionsConstants.ROUTING_PATH_COLORS['currentLocation']
85
+ : MapOptionsConstants.ROUTING_PATH_COLORS['default'],
87
86
  strokeOpacity: 1,
88
87
  strokeWeight: 4,
89
88
  };
@@ -91,7 +90,7 @@ export class ProgressBarComponent {
91
90
  if (index === 1) {
92
91
  routePaths.push({
93
92
  ...routePath,
94
- strokeColor: MapOptionsConstants.routingPathColors.deadhead,
93
+ strokeColor: MapOptionsConstants.ROUTING_PATH_COLORS['deadhead'],
95
94
  strokeOpacity: 1,
96
95
  strokeWeight: 2,
97
96
  });
@@ -170,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
170
169
  }], onOpenMap: [{
171
170
  type: Output
172
171
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXByb2dyZXNzLWJhci9jYS1wcm9ncmVzcy1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtcHJvZ3Jlc3MtYmFyL2NhLXByb2dyZXNzLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBYyxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTNGLFlBQVk7QUFDWixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU1oRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQsUUFBUTtBQUNSLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVwRCxRQUFR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c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIG1vZHVsZXNcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBOZ2JNb2R1bGUsIE5nYlBvcG92ZXIsIE5nYlRvb2x0aXAgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbi8vIENvbXBvbmVudHNcbmltcG9ydCB7IENhTWFwQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtbWFwL2NhLW1hcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBDb25zdGFudHNcbmltcG9ydCB7IFByb2dyZXNzQmFyQ29uc3RhbnRzIH0gZnJvbSAnLi91dGlscy9jb25zdGFudHMnO1xuaW1wb3J0IHsgTWFwT3B0aW9uc0NvbnN0YW50cyB9IGZyb20gJy4uL2NhLW1hcC91dGlscy9jb25zdGFudHMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IElHcHNQcm9ncmVzcyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IElDYU1hcFByb3BzLCBJTWFwTWFya2VycywgSU1hcFJvdXRlUGF0aCB9IGZyb20gJy4uL2NhLW1hcC9tb2RlbHMnO1xuXG4vLyBzdmctcm91dGVzXG5pbXBvcnQgeyBQcm9ncmVzc0JhclN2Z1JvdXRlcyB9IGZyb20gJy4vdXRpbHMvc3ZnLXJvdXRlcyc7XG5cbi8vIHBpcGVzXG5pbXBvcnQgeyBUaG91c2FuZFNlcGFyYXRvclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90aG91c2FuZC1zZXBhcmF0b3IucGlwZSc7XG5pbXBvcnQgeyBDb252ZXJ0TWludXRlc1RvSG91cnNQaXBlIH0gZnJvbSAnLi9waXBlcyc7XG5cbi8vIEVudW1zXG5pbXBvcnQgeyBQcm9ncmVzc0JhclN0cmluZ0VudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy8gU2VydmljZXNcbmltcG9ydCB7IE1hcE1hcmtlckljb25TZXJ2aWNlIH0gZnJvbSAnLi4vY2EtbWFwL3V0aWxzL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY2EtcHJvZ3Jlc3MtYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYS1wcm9ncmVzcy1iYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlc1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgICAgICBOZ2JNb2R1bGUsXG4gICAgICAgIE5nYlRvb2x0aXAsXG4gICAgICAgIC8vIENvbXBvbmVudHNcbiAgICAgICAgQ2FNYXBDb21wb25lbnQsXG4gICAgICAgIENhQXBwVG9vbHRpcFYyQ29tcG9uZW50LFxuICAgICAgICAvLyBQaXBlc1xuICAgICAgICBUaG91c2FuZFNlcGFyYXRvclBpcGUsXG4gICAgICAgIENvbnZlcnRNaW51dGVzVG9Ib3Vyc1BpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NCYXJDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHNldCBncHNQcm9ncmVzcyh2YWx1ZXM6IElHcHNQcm9ncmVzc1tdKSB7XG4gICAgICAgIHRoaXMuc2V0R3BzUHJvZ3Jlc3ModmFsdWVzKTtcbiAgICB9XG4gICAgQElucHV0KCkgY3VycmVudFN0b3AhOiBJR3BzUHJvZ3Jlc3M7XG4gICAgQElucHV0KCkgY3VycmVudFBvc2l0aW9uITogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHRvdGFsTWlsZXMhOiBudW1iZXI7XG4gICAgQElucHV0KCkgbWlsZWFnZUluZm8hOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZ3BzVGl0bGU6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIGdwc0ljb24hOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZ3BzSW5mbyE6IHtcbiAgICAgICAgZ3BzaGVhZGluZzogc3RyaW5nO1xuICAgICAgICBncHNUaW1lOiBzdHJpbmc7XG4gICAgICAgIGdwc2hlYWRpbmdDb2xvcj86IHN0cmluZztcbiAgICB9O1xuICAgIEBJbnB1dCgpIG1pbGVhZ2VzUGVyY2VudCE6IHN0cmluZztcbiAgICBASW5wdXQoKSBncHNMb2NhdGlvbkljb24hOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGlzcGF0Y2hTdGF0dXMhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXNEcm9wZG93bjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIG9uT3Blbk1hcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBfZ3BzUHJvZ3Jlc3M6IElHcHNQcm9ncmVzc1tdID0gW107XG5cbiAgICBwdWJsaWMgZ3BzSWNvblRvcFBvc2l0aW9uOiBudW1iZXIgPSAwO1xuXG4gICAgcHVibGljIGhvdmVyZWRHcHNJY29uOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGhvdmVyZWRHcHNUaXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGhvdmVyZWRNaWxlYWdlSW5mbzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgc3RhdGljQ29uc3RhbnQgPSBQcm9ncmVzc0JhckNvbnN0YW50cztcbiAgICBwdWJsaWMgcHJvZ3Jlc3NCYXJTdmdSb3V0ZXMgPSBQcm9ncmVzc0JhclN2Z1JvdXRlcztcblxuICAgIHB1YmxpYyBtYXBEYXRhOiBJQ2FNYXBQcm9wcyA9IHtcbiAgICAgICAgbWFya2VyczogW10sXG4gICAgICAgIGNsdXN0ZXJNYXJrZXJzOiBbXSxcbiAgICAgICAgcm91dGluZ01hcmtlcnM6IFtdLFxuICAgICAgICByb3V0ZVBhdGhzOiBbXSxcbiAgICAgICAgZGFya01vZGU6IHRydWUsXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbWFya2VySWNvblNlcnZpY2U6IE1hcE1hcmtlckljb25TZXJ2aWNlKSB7fVxuXG4gICAgcHVibGljIGhvdmVyU3RvcChzdG9wOiBJR3BzUHJvZ3Jlc3MsIGk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdmVyZWRHcHNUaXRsZSA9IHN0b3A/LmlzQXRTdG9wXG4gICAgICAgICAgICA/IFByb2dyZXNzQmFyU3RyaW5nRW51bS5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICAgICAgICA6IHN0b3A/LmhlYWRpbmcgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5ob3ZlcmVkTWlsZWFnZUluZm8gPSAhc3RvcD8uaXNBdFN0b3AgPyBzdG9wPy5taWxlYWdlIDogJyc7XG4gICAgfVxuXG4gICAgcHVibGljIGxlYXZlU3RvcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3ZlcmVkR3BzVGl0bGUgPSBudWxsO1xuICAgICAgICB0aGlzLmhvdmVyZWRNaWxlYWdlSW5mbyA9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dEcm9wZG93bk1hcCh0MjogTmdiUG9wb3Zlcik6IHZvaWQge1xuICAgICAgICB0Mi5vcGVuKCk7XG5cbiAgICAgICAgdGhpcy5vbk9wZW5NYXAuZW1pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0R3BzUHJvZ3Jlc3MoZ3BzUHJvZ3Jlc3NEYXRhOiBJR3BzUHJvZ3Jlc3NbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ncHNQcm9ncmVzcyA9IGdwc1Byb2dyZXNzRGF0YTtcblxuICAgICAgICB0aGlzLnNldE1hcE1hcmtlcnMoKTtcblxuICAgICAgICB0aGlzLmNhbGN1bGF0ZUdwc0ljb25Qb3NpdGlvbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TWFwTWFya2VycygpOiB2b2lkIHtcbiAgICAgICAgbGV0IHJvdXRlTWFya2VyczogSU1hcE1hcmtlcnNbXSA9IFtdO1xuICAgICAgICBsZXQgcm91dGVQYXRoczogSU1hcFJvdXRlUGF0aFtdID0gW107XG5cbiAgICAgICAgdGhpcy5fZ3BzUHJvZ3Jlc3MuZm9yRWFjaCgobG9hZFN0b3AsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXJrZXJEYXRhID0ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7IGxhdDogbG9hZFN0b3AubGF0aXR1ZGUsIGxuZzogbG9hZFN0b3AubG9uZ2l0dWRlIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCByb3V0ZU1hcmtlcjogSU1hcE1hcmtlcnMgPSB7XG4gICAgICAgICAgICAgICAgLi4ubWFya2VyRGF0YSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiB0aGlzLm1hcmtlckljb25TZXJ2aWNlLmdldFJvdXRpbmdNYXJrZXJJY29uKFxuICAgICAgICAgICAgICAgICAgICBtYXJrZXJEYXRhLFxuICAgICAgICAgICAgICAgICAgICBsb2FkU3RvcC5zdG9wTnVtYmVyID8/IDAsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRTdG9wLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFBvc2l0aW9uID49IGxvYWRTdG9wLnBvc2l0aW9uXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJvdXRlTWFya2VycyA9IFsuLi5yb3V0ZU1hcmtlcnMsIHJvdXRlTWFya2VyXTtcblxuICAgICAgICAgICAgaWYgKGxvYWRTdG9wLnJvdXRlU2hhcGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVBhdGg6IElNYXBSb3V0ZVBhdGggPSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IFtdLFxuICAgICAgICAgICAgICAgICAgICBkZWNvZGVkU2hhcGU6IGxvYWRTdG9wLnJvdXRlU2hhcGUsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZUNvbG9yOlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE1hcE9wdGlvbnNDb25zdGFudHMucm91dGluZ1BhdGhDb2xvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3VycmVudExvY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBNYXBPcHRpb25zQ29uc3RhbnRzLnJvdXRpbmdQYXRoQ29sb3JzLmRlZmF1bHQsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZU9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdlaWdodDogNCxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcm91dGVQYXRocyA9IFsuLi5yb3V0ZVBhdGhzLCByb3V0ZVBhdGhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlUGF0aHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5yb3V0ZVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VDb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLnJvdXRpbmdQYXRoQ29sb3JzLmRlYWRoZWFkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlT3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdlaWdodDogMixcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1hcERhdGEgPSB7XG4gICAgICAgICAgICAuLi50aGlzLm1hcERhdGEsXG4gICAgICAgICAgICBpc1pvb21TaG93bjogdHJ1ZSxcbiAgICAgICAgICAgIGlzVmVydGljYWxab29tOiB0cnVlLFxuICAgICAgICAgICAgcm91dGluZ01hcmtlcnM6IHJvdXRlTWFya2VycyxcbiAgICAgICAgICAgIHJvdXRlUGF0aHM6IHJvdXRlUGF0aHMsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVHcHNJY29uUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGxldCB0b3BQb3NpdGlvbiA9IDA7XG4gICAgICAgIGxldCBjdXJyZW50U3RvcFBlcmNlbnRhZ2UgPSBudWxsO1xuICAgICAgICBjb25zdCBzdG9wUGVyY2VudGFnZSA9IDEwMCAvICh0aGlzLl9ncHNQcm9ncmVzcy5sZW5ndGggLSAxKTtcblxuICAgICAgICB0aGlzLl9ncHNQcm9ncmVzcy5mb3JFYWNoKChzdG9wLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNBdERlYWRoZWFkID0gc3RvcC5pc0F0U3RvcCAmJiAhaW5kZXg7XG5cbiAgICAgICAgICAgIGlmIChzdG9wLmlzVmlzaXRlZCAmJiAhaXNBdERlYWRoZWFkKVxuICAgICAgICAgICAgICAgIHRvcFBvc2l0aW9uICs9IGluZGV4ID8gc3RvcFBlcmNlbnRhZ2UgOiBzdG9wUGVyY2VudGFnZSAvIDI7XG5cbiAgICAgICAgICAgIGlmIChzdG9wLmlzQXRTdG9wKSBjdXJyZW50U3RvcFBlcmNlbnRhZ2UgPSBzdG9wUGVyY2VudGFnZSAqIGluZGV4O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdwc0ljb25Ub3BQb3NpdGlvbiA9IGN1cnJlbnRTdG9wUGVyY2VudGFnZSA/PyB0b3BQb3NpdGlvbjtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ3BzLXByb2dyZXNzLWJhclwiPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJncHMtcHJvZ3Jlc3MtaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAjdDI9XCJuZ2JQb3BvdmVyXCJcbiAgICAgICAgW25nYlBvcG92ZXJdPVwiZ3BzRHJvcGRvd25Qb3BvdmVyXCJcbiAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgW3BsYWNlbWVudF09XCInYm90dG9tLXJpZ2h0J1wiXG4gICAgICAgIHBvcG92ZXJDbGFzcz1cImdwc19kcm9wZG93bl9wb3BvdmVyXCJcbiAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIlxuICAgICAgICAoY2xpY2spPVwic2hvd0Ryb3Bkb3duTWFwKHQyKVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImhvdmVyZWRHcHNJY29uID0gdHJ1ZVwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkR3BzSWNvbiA9IGZhbHNlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uIGNsYXNzPVwic3ZnLXNpemUtMjJcIiBbc3JjXT1cImdwc0ljb25cIj48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKCFob3ZlcmVkR3BzSWNvbikge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdwcy1wcm9ncmVzcy10ZXh0IGZsZXgtMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWxlYWdlLWdwcyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLXNlbGVjdC1ub25lIHRleHQtc2l6ZS0xMSB0ZXh0LWNvbG9yLWJsYWNrLTIgY2EtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaG92ZXJlZEdwc1RpdGxlID8/IGdwc1RpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInVzZXItc2VsZWN0LW5vbmUgdGV4dC1zaXplLTExIHRleHQtY29sb3ItYmxhY2stMiBjYS1mb250LXJlZ3VsYXJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBob3ZlcmVkTWlsZWFnZUluZm8gPz8gbWlsZWFnZUluZm8gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGVhZ2UtZ3BzIGQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3BzLXRpbWVsaW5lIGZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3BzLXRpbWVsaW5lLWFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyB3aWR0aDogY3VycmVudFBvc2l0aW9uICsgJyUnIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChzdG9wIG9mIF9ncHNQcm9ncmVzczsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3BzLXN0b3AgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJob3ZlclN0b3Aoc3RvcCwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJsZWF2ZVN0b3AoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaWNrdXAtc3RvcCc6IHN0b3AudHlwZSA9PT0gJ3BpY2t1cCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsaXZlcnktc3RvcCc6IHN0b3AudHlwZSA9PT0gJ2RlbGl2ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXNpdGVkLXN0b3AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA+PSBzdG9wLnBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBsZWZ0OiBzdG9wLnBvc2l0aW9uICsgJyUnIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCInIzQyNDI0MidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCJzdG9wPy5sb2NhdGlvbiA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnJlbnQtcG9zIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJob3ZlclN0b3AoY3VycmVudFN0b3AsIC0yKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwibGVhdmVTdG9wKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgbGVmdDogY3VycmVudFBvc2l0aW9uICsgJyUnIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcEJhY2tncm91bmRdPVwiJyM0MjQyNDInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCJjdXJyZW50U3RvcD8ubG9jYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCIhY3VycmVudFN0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctc2l6ZS0xMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZ3BzTG9jYXRpb25JY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInVzZXItc2VsZWN0LW5vbmUgdGV4dC1zaXplLTExIHRleHQtY29sb3ItYmxhY2stMiBjYS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBtaWxlYWdlc1BlcmNlbnQgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAoZ3BzSW5mbykge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3BzX2luZm9faG9sZCBkLWZsZXggZmxleC1jb2x1bW4gZmxleC0xIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb3Zpbmdfc2lkZSB0ZXh0LXNpemUtMTEgY2EtZm9udC1ib2xkIHVzZXItc2VsZWN0LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGNvbG9yOiBncHNJbmZvLmdwc2hlYWRpbmdDb2xvciB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdwc0luZm8uZ3BzaGVhZGluZyB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1vdmluZ190aW1lIHRleHQtc2l6ZS0xMSB0ZXh0LWNvbG9yLWJsYWNrLTIgY2EtZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZ3BzSW5mby5ncHNUaW1lIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNncHNEcm9wZG93blBvcG92ZXIgbGV0LWRhdGE9XCJkYXRhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYWluX2Ryb3Bkb3duX2hvbGRlciBkLWZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWNhLW1hcCBbZGF0YV09XCJtYXBEYXRhXCI+PC9hcHAtY2EtbWFwPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncHNfYWxsX2hvbGRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3BzX2hlYWRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZEdwc0ljb24gPSB0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaG92ZXJlZEdwc0ljb24gPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLXNpemUtMjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZ3BzSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncHNfaW5mb19ob2xkIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW92aW5nX3NpZGUgdGV4dC1zaXplLTExIGNhLWZvbnQtYm9sZCB1c2VyLXNlbGVjdC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGNvbG9yOiBncHNJbmZvLmdwc2hlYWRpbmdDb2xvciB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBncHNJbmZvLmdwc2hlYWRpbmcgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncHNfaW5mb19ib3JkZXJcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncHNfcHJvZ3Jlc3NfaG9sZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdwc19wcm9ncmVzc19ob2xkX2lubmVyIGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc19saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzX2lubmVyX2xpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGdwc0ljb25Ub3BQb3NpdGlvbiArICclJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghY3VycmVudFN0b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHNMb2NhdGlvbkljb25UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcFBvc2l0aW9uOiBncHNJY29uVG9wUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wIG9mIF9ncHNQcm9ncmVzcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RvcEluZGV4ID0gJGluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIHN0b3BJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzX2lubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc19oZWFkZXIgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzc19oZWFkZXJfaW5zaWRlIGQtZmxleCBmbGV4LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzc19pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFzdG9wLmlzQXRTdG9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA+PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AucG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1zaXplLTE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wLnR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGlja3VwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N2Zy1maWxsLWdyZWVuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RvcC50eXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsaXZlcnknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdzdmctZmlsbC1yZWQtMTAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdzdmctZmlsbC1ncmV5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NCYXJTdmdSb3V0ZXMuY2hlY2tSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLXN0b3AtbnVtYmVyIHRleHQtc2l6ZS0xNCB0ZXh0LWNlbnRlciB1c2VyLXNlbGVjdC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wLnR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGlja3VwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3RleHQtY29sb3ItZ3JlZW4tNCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWNvbG9yLXJlZC0xMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b3Auc3RvcE51bWJlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHNMb2NhdGlvbkljb25UZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzc19pbmZvX2hvbGQgZC1mbGV4IGZsZXgtY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3NfbmFtZSB0ZXh0LXNpemUtMTEgY2EtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AuaXNBdFN0b3AgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gPFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wLnBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc3RvcC50eXBlID09PSAncGlja3VwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1jb2xvci1ncmVlbi00J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1jb2xvci1yZWQtMTMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtY29sb3ItZ3JleSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b3A/LmxvY2F0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIXN0b3AuaXNBdFN0b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc3RvcC5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzX3RpbWUgdGV4dC1zaXplLTExIHRleHQtY29sb3Itd2hpdGUtMiBjYS1mb250LXJlZ3VsYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jb2xvci1ncmV5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gPj1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC5wb3NpdGlvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdG9wLmlzQXRTdG9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b3AuZGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHN0b3AudGltZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzc190aW1lIHRleHQtc2l6ZS0xMSB0ZXh0LWNvbG9yLXdoaXRlLTIgY2EtZm9udC1yZWd1bGFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY29sb3ItZ3JleSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID49XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AucG9zaXRpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhc3RvcC5pc0F0U3RvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdG9wLnRpbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzc190aW1lIHRleHQtc2l6ZS0xMSB0ZXh0LWNvbG9yLXdoaXRlLTIgY2EtZm9udC1ib2xkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkaXNwYXRjaFN0YXR1cyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc3RvcC5jdXJyZW50V2FpdFRpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3NfdGltZSB0ZXh0LXNpemUtMTEgdGV4dC1jb2xvci13aGl0ZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wLmN1cnJlbnRXYWl0VGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udmVydE1pbnV0ZXNUb0hvdXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1sZWctbWlsZXMtdGV4dCB0ZXh0LXNpemUtMTEgdGV4dC1jb2xvci13aGl0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jb2xvci1ncmV5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA+PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AucG9zaXRpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdG9wLmlzQXRTdG9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2EtZm9udC1ib2xkJzogc3RvcEluZGV4ID09PSAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BJbmRleCA9PT0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnTEVHIG1pJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzdG9wPy5sZWdNaWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcrJyArIHN0b3AubGVnTWlsZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnKycgKyAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3BzX2luZm9fYm9yZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3BzX2NvbXBsZXRlX2hvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdwc19jb21wbGV0ZV9yb3cgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIHRleHQtc2l6ZS0xMSB0ZXh0LWNvbG9yLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RhdGljQ29uc3RhbnQuY29tcGxldGVkIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc2l6ZS0xMSB0ZXh0LWNvbG9yLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RhdGljQ29uc3RhbnQudG90YWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3BzX2NvbXBsZXRlX3NlY29uZF9yb3cgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4LTEgdGV4dC1zaXplLTExIHRleHQtY29sb3ItYmx1ZS0xOSBjYS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGN1cnJlbnRQb3NpdGlvbiB9fXt7IHN0YXRpY0NvbnN0YW50LnBlcmNlbnRhZ2UgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zaXplLTExIHRleHQtY29sb3Itd2hpdGUgY2EtZm9udC1ib2xkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdG90YWxNaWxlcyB8IHRob3VzYW5kU2VwYXJhdG9yIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RhdGljQ29uc3RhbnQubWlsZXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZ3BzTG9jYXRpb25JY29uVGVtcGxhdGUgbGV0LXRvcFBvc2l0aW9uPVwidG9wUG9zaXRpb25cIj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgW2NsYXNzLm1vdmluZy1ncHNdPVwiISF0b3BQb3NpdGlvblwiXG4gICAgICAgIFtzdHlsZS50b3BdPVwidG9wUG9zaXRpb24gKyAnJSdcIlxuICAgID5cbiAgICAgICAgPHN2Zy1pY29uIGNsYXNzPVwiZC1mbGV4IHN2Zy1zaXplLTEwXCIgW3NyY109XCJncHNMb2NhdGlvbkljb25cIj48L3N2Zy1pY29uPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLXByb2dyZXNzLWJhci9jYS1wcm9ncmVzcy1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtcHJvZ3Jlc3MtYmFyL2NhLXByb2dyZXNzLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxVQUFVO0FBQ1YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBYyxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRTNGLFlBQVk7QUFDWixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU1oRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQsUUFBUTtBQUNSLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVwRCxRQUFR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S0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgTmdiTW9kdWxlLCBOZ2JQb3BvdmVyLCBOZ2JUb29sdGlwIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYU1hcENvbXBvbmVudCB9IGZyb20gJy4uL2NhLW1hcC9jYS1tYXAuY29tcG9uZW50JztcbmltcG9ydCB7IENhQXBwVG9vbHRpcFYyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtYXBwLXRvb2x0aXAtdjIvY2EtYXBwLXRvb2x0aXAtdjIuY29tcG9uZW50JztcblxuLy8gQ29uc3RhbnRzXG5pbXBvcnQgeyBQcm9ncmVzc0JhckNvbnN0YW50cyB9IGZyb20gJy4vdXRpbHMvY29uc3RhbnRzJztcbmltcG9ydCB7IE1hcE9wdGlvbnNDb25zdGFudHMgfSBmcm9tICcuLi9jYS1tYXAvdXRpbHMvY29uc3RhbnRzJztcblxuLy8gbW9kZWxzXG5pbXBvcnQgeyBJR3BzUHJvZ3Jlc3MgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBJQ2FNYXBQcm9wcywgSU1hcE1hcmtlcnMsIElNYXBSb3V0ZVBhdGggfSBmcm9tICcuLi9jYS1tYXAvbW9kZWxzJztcblxuLy8gc3ZnLXJvdXRlc1xuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJTdmdSb3V0ZXMgfSBmcm9tICcuL3V0aWxzL3N2Zy1yb3V0ZXMnO1xuXG4vLyBwaXBlc1xuaW1wb3J0IHsgVGhvdXNhbmRTZXBhcmF0b3JQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdGhvdXNhbmQtc2VwYXJhdG9yLnBpcGUnO1xuaW1wb3J0IHsgQ29udmVydE1pbnV0ZXNUb0hvdXJzUGlwZSB9IGZyb20gJy4vcGlwZXMnO1xuXG4vLyBFbnVtc1xuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJTdHJpbmdFbnVtIH0gZnJvbSAnLi9lbnVtcyc7XG5cbi8vIFNlcnZpY2VzXG5pbXBvcnQgeyBNYXBNYXJrZXJJY29uU2VydmljZSB9IGZyb20gJy4uL2NhLW1hcC91dGlscy9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNhLXByb2dyZXNzLWJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLXByb2dyZXNzLWJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2EtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIE1vZHVsZXNcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgTmdiTW9kdWxlLFxuICAgICAgICBOZ2JUb29sdGlwLFxuICAgICAgICAvLyBDb21wb25lbnRzXG4gICAgICAgIENhTWFwQ29tcG9uZW50LFxuICAgICAgICBDYUFwcFRvb2x0aXBWMkNvbXBvbmVudCxcbiAgICAgICAgLy8gUGlwZXNcbiAgICAgICAgVGhvdXNhbmRTZXBhcmF0b3JQaXBlLFxuICAgICAgICBDb252ZXJ0TWludXRlc1RvSG91cnNQaXBlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFByb2dyZXNzQmFyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBzZXQgZ3BzUHJvZ3Jlc3ModmFsdWVzOiBJR3BzUHJvZ3Jlc3NbXSkge1xuICAgICAgICB0aGlzLnNldEdwc1Byb2dyZXNzKHZhbHVlcyk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGN1cnJlbnRTdG9wITogSUdwc1Byb2dyZXNzO1xuICAgIEBJbnB1dCgpIGN1cnJlbnRQb3NpdGlvbiE6IG51bWJlcjtcbiAgICBASW5wdXQoKSB0b3RhbE1pbGVzITogbnVtYmVyO1xuICAgIEBJbnB1dCgpIG1pbGVhZ2VJbmZvITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGdwc1RpdGxlOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBncHNJY29uITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGdwc0luZm8hOiB7XG4gICAgICAgIGdwc2hlYWRpbmc6IHN0cmluZztcbiAgICAgICAgZ3BzVGltZTogc3RyaW5nO1xuICAgICAgICBncHNoZWFkaW5nQ29sb3I/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBASW5wdXQoKSBtaWxlYWdlc1BlcmNlbnQhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZ3BzTG9jYXRpb25JY29uITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRpc3BhdGNoU3RhdHVzITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlzRHJvcGRvd246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKSBvbk9wZW5NYXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgX2dwc1Byb2dyZXNzOiBJR3BzUHJvZ3Jlc3NbXSA9IFtdO1xuXG4gICAgcHVibGljIGdwc0ljb25Ub3BQb3NpdGlvbjogbnVtYmVyID0gMDtcblxuICAgIHB1YmxpYyBob3ZlcmVkR3BzSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBob3ZlcmVkR3BzVGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBob3ZlcmVkTWlsZWFnZUluZm86IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIHN0YXRpY0NvbnN0YW50ID0gUHJvZ3Jlc3NCYXJDb25zdGFudHM7XG4gICAgcHVibGljIHByb2dyZXNzQmFyU3ZnUm91dGVzID0gUHJvZ3Jlc3NCYXJTdmdSb3V0ZXM7XG5cbiAgICBwdWJsaWMgbWFwRGF0YTogSUNhTWFwUHJvcHMgPSB7XG4gICAgICAgIG1hcmtlcnM6IFtdLFxuICAgICAgICBjbHVzdGVyTWFya2VyczogW10sXG4gICAgICAgIHJvdXRpbmdNYXJrZXJzOiBbXSxcbiAgICAgICAgcm91dGVQYXRoczogW10sXG4gICAgICAgIGRhcmtNb2RlOiB0cnVlLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hcmtlckljb25TZXJ2aWNlOiBNYXBNYXJrZXJJY29uU2VydmljZSkge31cblxuICAgIHB1YmxpYyBob3ZlclN0b3Aoc3RvcDogSUdwc1Byb2dyZXNzLCBpOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3ZlcmVkR3BzVGl0bGUgPSBzdG9wPy5pc0F0U3RvcFxuICAgICAgICAgICAgPyBQcm9ncmVzc0JhclN0cmluZ0VudW0uQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgICAgICAgOiBzdG9wPy5oZWFkaW5nIHx8IG51bGw7XG4gICAgICAgIHRoaXMuaG92ZXJlZE1pbGVhZ2VJbmZvID0gIXN0b3A/LmlzQXRTdG9wID8gc3RvcD8ubWlsZWFnZSA6ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBsZWF2ZVN0b3AoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG92ZXJlZEdwc1RpdGxlID0gbnVsbDtcbiAgICAgICAgdGhpcy5ob3ZlcmVkTWlsZWFnZUluZm8gPSBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93RHJvcGRvd25NYXAodDI6IE5nYlBvcG92ZXIpOiB2b2lkIHtcbiAgICAgICAgdDIub3BlbigpO1xuXG4gICAgICAgIHRoaXMub25PcGVuTWFwLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEdwc1Byb2dyZXNzKGdwc1Byb2dyZXNzRGF0YTogSUdwc1Byb2dyZXNzW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ3BzUHJvZ3Jlc3MgPSBncHNQcm9ncmVzc0RhdGE7XG5cbiAgICAgICAgdGhpcy5zZXRNYXBNYXJrZXJzKCk7XG5cbiAgICAgICAgdGhpcy5jYWxjdWxhdGVHcHNJY29uUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE1hcE1hcmtlcnMoKTogdm9pZCB7XG4gICAgICAgIGxldCByb3V0ZU1hcmtlcnM6IElNYXBNYXJrZXJzW10gPSBbXTtcbiAgICAgICAgbGV0IHJvdXRlUGF0aHM6IElNYXBSb3V0ZVBhdGhbXSA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2dwc1Byb2dyZXNzLmZvckVhY2goKGxvYWRTdG9wLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWFya2VyRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogeyBsYXQ6IGxvYWRTdG9wLmxhdGl0dWRlLCBsbmc6IGxvYWRTdG9wLmxvbmdpdHVkZSB9LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3Qgcm91dGVNYXJrZXI6IElNYXBNYXJrZXJzID0ge1xuICAgICAgICAgICAgICAgIC4uLm1hcmtlckRhdGEsXG4gICAgICAgICAgICAgICAgY29udGVudDogdGhpcy5tYXJrZXJJY29uU2VydmljZS5nZXRSb3V0aW5nTWFya2VySWNvbihcbiAgICAgICAgICAgICAgICAgICAgbWFya2VyRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZFN0b3Auc3RvcE51bWJlciA/PyAwLFxuICAgICAgICAgICAgICAgICAgICBsb2FkU3RvcC50eXBlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQb3NpdGlvbiA+PSBsb2FkU3RvcC5wb3NpdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByb3V0ZU1hcmtlcnMgPSBbLi4ucm91dGVNYXJrZXJzLCByb3V0ZU1hcmtlcl07XG5cbiAgICAgICAgICAgIGlmIChsb2FkU3RvcC5yb3V0ZVNoYXBlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGVQYXRoOiBJTWFwUm91dGVQYXRoID0ge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgZGVjb2RlZFNoYXBlOiBsb2FkU3RvcC5yb3V0ZVNoYXBlLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2VDb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfUEFUSF9DT0xPUlNbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2N1cnJlbnRMb2NhdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE1hcE9wdGlvbnNDb25zdGFudHMuUk9VVElOR19QQVRIX0NPTE9SU1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZU9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdlaWdodDogNCxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcm91dGVQYXRocyA9IFsuLi5yb3V0ZVBhdGhzLCByb3V0ZVBhdGhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlUGF0aHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5yb3V0ZVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VDb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBPcHRpb25zQ29uc3RhbnRzLlJPVVRJTkdfUEFUSF9DT0xPUlNbJ2RlYWRoZWFkJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VPcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2VpZ2h0OiAyLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubWFwRGF0YSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMubWFwRGF0YSxcbiAgICAgICAgICAgIGlzWm9vbVNob3duOiB0cnVlLFxuICAgICAgICAgICAgaXNWZXJ0aWNhbFpvb206IHRydWUsXG4gICAgICAgICAgICByb3V0aW5nTWFya2Vyczogcm91dGVNYXJrZXJzLFxuICAgICAgICAgICAgcm91dGVQYXRoczogcm91dGVQYXRocyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZUdwc0ljb25Qb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgbGV0IHRvcFBvc2l0aW9uID0gMDtcbiAgICAgICAgbGV0IGN1cnJlbnRTdG9wUGVyY2VudGFnZSA9IG51bGw7XG4gICAgICAgIGNvbnN0IHN0b3BQZXJjZW50YWdlID0gMTAwIC8gKHRoaXMuX2dwc1Byb2dyZXNzLmxlbmd0aCAtIDEpO1xuXG4gICAgICAgIHRoaXMuX2dwc1Byb2dyZXNzLmZvckVhY2goKHN0b3AsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0F0RGVhZGhlYWQgPSBzdG9wLmlzQXRTdG9wICYmICFpbmRleDtcblxuICAgICAgICAgICAgaWYgKHN0b3AuaXNWaXNpdGVkICYmICFpc0F0RGVhZGhlYWQpXG4gICAgICAgICAgICAgICAgdG9wUG9zaXRpb24gKz0gaW5kZXggPyBzdG9wUGVyY2VudGFnZSA6IHN0b3BQZXJjZW50YWdlIC8gMjtcblxuICAgICAgICAgICAgaWYgKHN0b3AuaXNBdFN0b3ApIGN1cnJlbnRTdG9wUGVyY2VudGFnZSA9IHN0b3BQZXJjZW50YWdlICogaW5kZXg7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZ3BzSWNvblRvcFBvc2l0aW9uID0gY3VycmVudFN0b3BQZXJjZW50YWdlID8/IHRvcFBvc2l0aW9uO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncHMtcHJvZ3Jlc3MtYmFyXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImdwcy1wcm9ncmVzcy1ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICN0Mj1cIm5nYlBvcG92ZXJcIlxuICAgICAgICBbbmdiUG9wb3Zlcl09XCJncHNEcm9wZG93blBvcG92ZXJcIlxuICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICBbcGxhY2VtZW50XT1cIidib3R0b20tcmlnaHQnXCJcbiAgICAgICAgcG9wb3ZlckNsYXNzPVwiZ3BzX2Ryb3Bkb3duX3BvcG92ZXJcIlxuICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiXG4gICAgICAgIChjbGljayk9XCJzaG93RHJvcGRvd25NYXAodDIpXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZEdwc0ljb24gPSB0cnVlXCJcbiAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImhvdmVyZWRHcHNJY29uID0gZmFsc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb24gY2xhc3M9XCJzdmctc2l6ZS0yMlwiIFtzcmNdPVwiZ3BzSWNvblwiPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoIWhvdmVyZWRHcHNJY29uKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3BzLXByb2dyZXNzLXRleHQgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbGVhZ2UtZ3BzIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInVzZXItc2VsZWN0LW5vbmUgdGV4dC1zaXplLTExIHRleHQtY29sb3ItYmxhY2stMiBjYS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBob3ZlcmVkR3BzVGl0bGUgPz8gZ3BzVGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXNlci1zZWxlY3Qtbm9uZSB0ZXh0LXNpemUtMTEgdGV4dC1jb2xvci1ibGFjay0yIGNhLWZvbnQtcmVndWxhclwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGhvdmVyZWRNaWxlYWdlSW5mbyA/PyBtaWxlYWdlSW5mbyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlsZWFnZS1ncHMgZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncHMtdGltZWxpbmUgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncHMtdGltZWxpbmUtYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBjdXJyZW50UG9zaXRpb24gKyAnJScgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHN0b3Agb2YgX2dwc1Byb2dyZXNzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncHMtc3RvcCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImhvdmVyU3RvcChzdG9wLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImxlYXZlU3RvcCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BpY2t1cC1zdG9wJzogc3RvcC50eXBlID09PSAncGlja3VwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxpdmVyeS1zdG9wJzogc3RvcC50eXBlID09PSAnZGVsaXZlcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zpc2l0ZWQtc3RvcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID49IHN0b3AucG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IHN0b3AucG9zaXRpb24gKyAnJScgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBCYWNrZ3JvdW5kXT1cIicjNDI0MjQyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cInN0b3A/LmxvY2F0aW9uID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3VycmVudC1wb3MgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cImhvdmVyU3RvcChjdXJyZW50U3RvcCwgLTIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJsZWF2ZVN0b3AoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBsZWZ0OiBjdXJyZW50UG9zaXRpb24gKyAnJScgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwQmFja2dyb3VuZF09XCInIzQyNDI0MidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWluQ2FUb29sdGlwXT1cImN1cnJlbnRTdG9wPy5sb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cIiFjdXJyZW50U3RvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1zaXplLTEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJncHNMb2NhdGlvbkljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXNlci1zZWxlY3Qtbm9uZSB0ZXh0LXNpemUtMTEgdGV4dC1jb2xvci1ibGFjay0yIGNhLWZvbnQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1pbGVhZ2VzUGVyY2VudCB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChncHNJbmZvKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJncHNfaW5mb19ob2xkIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LTEganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1vdmluZ19zaWRlIHRleHQtc2l6ZS0xMSBjYS1mb250LWJvbGQgdXNlci1zZWxlY3Qtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IGdwc0luZm8uZ3BzaGVhZGluZ0NvbG9yIH1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZ3BzSW5mby5ncHNoZWFkaW5nIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW92aW5nX3RpbWUgdGV4dC1zaXplLTExIHRleHQtY29sb3ItYmxhY2stMiBjYS1mb250LW1lZGl1bVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBncHNJbmZvLmdwc1RpbWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgI2dwc0Ryb3Bkb3duUG9wb3ZlciBsZXQtZGF0YT1cImRhdGFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1haW5fZHJvcGRvd25faG9sZGVyIGQtZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY2EtbWFwIFtkYXRhXT1cIm1hcERhdGFcIj48L2FwcC1jYS1tYXA+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdwc19hbGxfaG9sZFwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncHNfaGVhZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJob3ZlcmVkR3BzSWNvbiA9IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkR3BzSWNvbiA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctc2l6ZS0yMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJncHNJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdwc19pbmZvX2hvbGQgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb3Zpbmdfc2lkZSB0ZXh0LXNpemUtMTEgY2EtZm9udC1ib2xkIHVzZXItc2VsZWN0LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IGdwc0luZm8uZ3BzaGVhZGluZ0NvbG9yIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdwc0luZm8uZ3BzaGVhZGluZyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdwc19pbmZvX2JvcmRlclwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdwc19wcm9ncmVzc19ob2xkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3BzX3Byb2dyZXNzX2hvbGRfaW5uZXIgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLXN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzX2xpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3NfaW5uZXJfbGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogZ3BzSWNvblRvcFBvc2l0aW9uICsgJyUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFjdXJyZW50U3RvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwc0xvY2F0aW9uSWNvblRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wUG9zaXRpb246IGdwc0ljb25Ub3BQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3Agb2YgX2dwc1Byb2dyZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdG9wSW5kZXggPSAkaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgc3RvcEluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NfaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzX2hlYWRlciBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzX2hlYWRlcl9pbnNpZGUgZC1mbGV4IGZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzX2ljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIXN0b3AuaXNBdFN0b3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID49XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC5wb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLXNpemUtMTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AudHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaWNrdXAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnc3ZnLWZpbGwtZ3JlZW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzdG9wLnR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxpdmVyeSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3N2Zy1maWxsLXJlZC0xMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3N2Zy1maWxsLWdyZXknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzc0JhclN2Z1JvdXRlcy5jaGVja1JvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3Mtc3RvcC1udW1iZXIgdGV4dC1zaXplLTE0IHRleHQtY2VudGVyIHVzZXItc2VsZWN0LW5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AudHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaWNrdXAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAndGV4dC1jb2xvci1ncmVlbi00J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ3RleHQtY29sb3ItcmVkLTEzJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvcC5zdG9wTnVtYmVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwc0xvY2F0aW9uSWNvblRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzX2luZm9faG9sZCBkLWZsZXggZmxleC1jb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzc19uYW1lIHRleHQtc2l6ZS0xMSBjYS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC5pc0F0U3RvcCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AucG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdG9wLnR5cGUgPT09ICdwaWNrdXAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LWNvbG9yLWdyZWVuLTQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWNvbG9yLXJlZC0xMydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAndGV4dC1jb2xvci1ncmV5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvcD8ubG9jYXRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghc3RvcC5pc0F0U3RvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzdG9wLmRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3NfdGltZSB0ZXh0LXNpemUtMTEgdGV4dC1jb2xvci13aGl0ZS0yIGNhLWZvbnQtcmVndWxhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNvbG9yLWdyZXknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA+PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wLnBvc2l0aW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXN0b3AuaXNBdFN0b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RvcC5kYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc3RvcC50aW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzX3RpbWUgdGV4dC1zaXplLTExIHRleHQtY29sb3Itd2hpdGUtMiBjYS1mb250LXJlZ3VsYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jb2xvci1ncmV5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gPj1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC5wb3NpdGlvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdG9wLmlzQXRTdG9wLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0b3AudGltZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzX3RpbWUgdGV4dC1zaXplLTExIHRleHQtY29sb3Itd2hpdGUtMiBjYS1mb250LWJvbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRpc3BhdGNoU3RhdHVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzdG9wLmN1cnJlbnRXYWl0VGltZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzc190aW1lIHRleHQtc2l6ZS0xMSB0ZXh0LWNvbG9yLXdoaXRlLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AuY3VycmVudFdhaXRUaW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb252ZXJ0TWludXRlc1RvSG91cnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLWxlZy1taWxlcy10ZXh0IHRleHQtc2l6ZS0xMSB0ZXh0LWNvbG9yLXdoaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNvbG9yLWdyZXknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID49XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC5wb3NpdGlvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXN0b3AuaXNBdFN0b3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYS1mb250LWJvbGQnOiBzdG9wSW5kZXggPT09IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcEluZGV4ID09PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdMRUcgbWknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHN0b3A/LmxlZ01pbGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJysnICsgc3RvcC5sZWdNaWxlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcrJyArIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncHNfaW5mb19ib3JkZXJcIj48L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncHNfY29tcGxldGVfaG9sZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3BzX2NvbXBsZXRlX3JvdyBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgdGV4dC1zaXplLTExIHRleHQtY29sb3Itd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGF0aWNDb25zdGFudC5jb21wbGV0ZWQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zaXplLTExIHRleHQtY29sb3Itd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGF0aWNDb25zdGFudC50b3RhbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncHNfY29tcGxldGVfc2Vjb25kX3JvdyBkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtMSB0ZXh0LXNpemUtMTEgdGV4dC1jb2xvci1ibHVlLTE5IGNhLWZvbnQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudFBvc2l0aW9uIH19e3sgc3RhdGljQ29uc3RhbnQucGVyY2VudGFnZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNpemUtMTEgdGV4dC1jb2xvci13aGl0ZSBjYS1mb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0b3RhbE1pbGVzIHwgdGhvdXNhbmRTZXBhcmF0b3IgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGF0aWNDb25zdGFudC5taWxlcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNncHNMb2NhdGlvbkljb25UZW1wbGF0ZSBsZXQtdG9wUG9zaXRpb249XCJ0b3BQb3NpdGlvblwiPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICBbY2xhc3MubW92aW5nLWdwc109XCIhIXRvcFBvc2l0aW9uXCJcbiAgICAgICAgW3N0eWxlLnRvcF09XCJ0b3BQb3NpdGlvbiArICclJ1wiXG4gICAgPlxuICAgICAgICA8c3ZnLWljb24gY2xhc3M9XCJkLWZsZXggc3ZnLXNpemUtMTBcIiBbc3JjXT1cImdwc0xvY2F0aW9uSWNvblwiPjwvc3ZnLWljb24+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19