@rivet-health/design-system 39.7.2 → 39.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/visualization/chart/chart-scaling.mjs +8 -8
- package/esm2020/lib/visualization/chart/chart.component.mjs +51 -4
- package/fesm2015/rivet-health-design-system.mjs +57 -10
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +57 -10
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/visualization/chart/chart.component.d.ts +10 -0
- package/package.json +1 -1
|
@@ -28,17 +28,17 @@ export const emptyChartScaleValues = {
|
|
|
28
28
|
};
|
|
29
29
|
export const DefaultBarElementScalingConfig = {
|
|
30
30
|
barSize: {
|
|
31
|
-
min:
|
|
31
|
+
min: 1,
|
|
32
32
|
max: 80,
|
|
33
33
|
target: 30,
|
|
34
34
|
},
|
|
35
35
|
barClusterGap: {
|
|
36
|
-
min:
|
|
36
|
+
min: 1,
|
|
37
37
|
max: 8,
|
|
38
38
|
target: 8,
|
|
39
39
|
},
|
|
40
40
|
bucketGap: {
|
|
41
|
-
min:
|
|
41
|
+
min: 1,
|
|
42
42
|
target: 40,
|
|
43
43
|
},
|
|
44
44
|
outerGap: {
|
|
@@ -89,17 +89,17 @@ export const DefaultBarWithSecondaryElementScalingConfig = {
|
|
|
89
89
|
};
|
|
90
90
|
export const DefaultHorizontalBarElementScalingConfig = {
|
|
91
91
|
barSize: {
|
|
92
|
-
min:
|
|
92
|
+
min: 1,
|
|
93
93
|
max: 8,
|
|
94
94
|
target: 8,
|
|
95
95
|
},
|
|
96
96
|
barClusterGap: {
|
|
97
|
-
min:
|
|
97
|
+
min: 1,
|
|
98
98
|
max: 8,
|
|
99
99
|
target: 8,
|
|
100
100
|
},
|
|
101
101
|
bucketGap: {
|
|
102
|
-
min:
|
|
102
|
+
min: 1,
|
|
103
103
|
target: 16,
|
|
104
104
|
},
|
|
105
105
|
outerGap: {
|
|
@@ -152,7 +152,7 @@ export const DefaultHorizontalBarWithSecondaryElementScalingConfig = {
|
|
|
152
152
|
};
|
|
153
153
|
export const DefaultLineElementScalingConfig = {
|
|
154
154
|
bucketGap: {
|
|
155
|
-
min:
|
|
155
|
+
min: 1,
|
|
156
156
|
target: 32,
|
|
157
157
|
},
|
|
158
158
|
outerGap: {
|
|
@@ -320,4 +320,4 @@ export const DefaultDonutSizingConfig = {
|
|
|
320
320
|
horizontalContainerScale: 'no-scale',
|
|
321
321
|
verticalContainerScale: 'no-scale',
|
|
322
322
|
};
|
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtc2NhbGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Zpc3VhbGl6YXRpb24vY2hhcnQvY2hhcnQtc2NhbGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBeUNoQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBeUI7SUFDekQsT0FBTyxFQUFFLENBQUM7SUFDVixhQUFhLEVBQUUsQ0FBQztJQUNoQixTQUFTLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxDQUFDO0lBQ1gsV0FBVyxFQUFFLENBQUM7SUFDZCxZQUFZLEVBQUUsQ0FBQztJQUNmLFVBQVUsRUFBRSxDQUFDO0lBQ2IsYUFBYSxFQUFFLENBQUM7SUFDaEIsZUFBZSxFQUFFLENBQUM7SUFDbEIsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuQixRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxDQUFDO0lBQ2IsV0FBVyxFQUFFLENBQUM7SUFDZCxXQUFXLEVBQUUsQ0FBQztJQUNkLGVBQWUsRUFBRSxDQUFDO0lBQ2xCLGdCQUFnQixFQUFFLENBQUM7SUFDbkIsY0FBYyxFQUFFLENBQUM7SUFDakIsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQixpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLDJCQUEyQixFQUFFLENBQUM7SUFDOUIseUJBQXlCLEVBQUUsQ0FBQztJQUM1QixlQUFlLEVBQUUsQ0FBQztJQUNsQixrQkFBa0IsRUFBRSxVQUFVO0lBQzlCLHdCQUF3QixFQUFFLFVBQVU7SUFDcEMsc0JBQXNCLEVBQUUsVUFBVTtDQUNuQyxDQUFDO0FBbUVGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUE2QjtJQUN0RSxPQUFPLEVBQUU7UUFDUCxHQUFHLEVBQUUsQ0FBQztRQUNOLEdBQUcsRUFBRSxFQUFFO1FBQ1AsTUFBTSxFQUFFLEVBQUU7S0FD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O0lBQ0QsYUFBYSxFQUFFO1FBQ2IsTUFBTSxFQUFFLENBQUMsRUFBRSxnQkFBZ0I7S0FDNUI7SUFDRCxPQUFPLEVBQUU7UUFDUCxNQUFNLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQjtLQUM1QjtJQUNELGFBQWEsRUFBRTtRQUNiLE1BQU0sRUFBRSxDQUFDLEVBQUUsZ0JBQWdCO0tBQzVCO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsTUFBTSxFQUFFLENBQUMsRUFBRSxnQkFBZ0I7S0FDNUI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQWlCO0lBQ3ZELElBQUksRUFBRSxZQUFZO0lBQ2xCLEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFpQjtJQUN0RCxJQUFJLEVBQUUsVUFBVTtJQUNoQixLQUFLLEVBQUUsRUFBRTtDQUNWLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxXQUFXLEVBQUUsMkJBQTJCO0lBQ3hDLFVBQVUsRUFBRSwwQkFBMEI7SUFDdEMsYUFBYSxFQUFFLGdDQUFnQztJQUMvQyx3QkFBd0IsRUFBRSxVQUFrQztJQUM1RCxzQkFBc0IsRUFBRSxVQUFrQztDQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICcuL2NoYXJ0JztcblxuZXhwb3J0IHR5cGUgQ2hhcnRTY2FsZUVsZW1lbnQgPVxuICB8ICdiYXJTaXplJ1xuICB8ICdiYXJDbHVzdGVyR2FwJ1xuICB8ICdidWNrZXRHYXAnXG4gIHwgJ291dGVyR2FwJ1xuICB8ICdsZWZ0UGFkZGluZydcbiAgfCAncmlnaHRQYWRkaW5nJ1xuICB8ICd0b3BQYWRkaW5nJ1xuICB8ICdib3R0b21QYWRkaW5nJ1xuICB8ICdsZWZ0QnVja2V0TGFiZWwnXG4gIHwgJ2RhdGFMYWJlbFBhZGRpbmcnXG4gIHwgJ2ZvbnRTaXplJztcblxuZXhwb3J0IHR5cGUgQ2hhcnRTY2FsZVZhbHVlcyA9IHtcbiAgW0sgaW4gQ2hhcnRTY2FsZUVsZW1lbnRdOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBDaGFydERhdGFEaXJlY3Rpb24gPVxuICB8ICd2ZXJ0aWNhbCcgLy9BbGwgY2hhcnRzIGJ1dCBob3Jpem9udGFsLWJhclxuICB8ICdob3Jpem9udGFsJzsgLy9DdXJyZW50bHkganVzdCBob3Jpem9udGFsLWJhclxuXG5leHBvcnQgdHlwZSBGdWxsQ2hhcnRTY2FsZVZhbHVlcyA9IENoYXJ0U2NhbGVWYWx1ZXMgJiB7XG4gIC8vVmFyaW91cyBoZWxwZnVsIHByZS1jYWxjZWQgdmFsdWVzXG4gIHRvdGFsV2lkdGg6IG51bWJlcjtcbiAgdG90YWxIZWlnaHQ6IG51bWJlcjtcbiAgc2l6ZUZvckRhdGE6IG51bWJlcjtcbiAgdG90YWxMZWZ0T2Zmc2V0OiBudW1iZXI7IC8vVG90YWwgZGlzdGFuY2UgYmV0d2VlbiB0aGUgbGVmdCBlZGdlIG9mIHRoZSBjaGFydCwgYW5kIHdoZW4gd2Ugc3RhcnQgZHJhd2luZyBkYXRhXG4gIHRvdGFsUmlnaHRPZmZzZXQ6IG51bWJlcjsgLy9Ub3RhbCBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBlbmQgb2YgZHJhd24gZGF0YSwgYW5kIHRoZSByaWdodCBlZGdlIG9mIHRoZSBjaGFydFxuICB0b3RhbFRvcE9mZnNldDogbnVtYmVyOyAvL1RvdGFsIGRpc3RhbmNlIGJldHdlZW4gdGhlIHRvcCBlZGdlIG9mIHRoZSBjaGFydCwgYW5kIHRoZSBzdGFydCBvZiBkcmF3biBkYXRhXG4gIHRvdGFsQm90dG9tT2Zmc2V0OiBudW1iZXI7IC8vVG90YWwgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZW5kIG9mIGRyYXduIGRhdGEsIGFuZCB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGNoYXJ0XG4gIGRhdGFMYWJlbFRleHRTaXplOiBudW1iZXI7XG4gIGhvcml6b250YWxBeGlzTGFiZWxUZXh0U2l6ZTogbnVtYmVyO1xuICB2ZXJ0aWNhbEF4aXNMYWJlbFRleHRTaXplOiBudW1iZXI7XG4gIHRhcmdldFRpY2tDb3VudDogbnVtYmVyO1xuICBjaGFydERhdGFEaXJlY3Rpb246IENoYXJ0RGF0YURpcmVjdGlvbjtcbiAgaG9yaXpvbnRhbENvbnRhaW5lclNjYWxlOiBDb250YWluZXJTY2FsaW5nVHlwZTtcbiAgdmVydGljYWxDb250YWluZXJTY2FsZTogQ29udGFpbmVyU2NhbGluZ1R5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgZW1wdHlDaGFydFNjYWxlVmFsdWVzOiBGdWxsQ2hhcnRTY2FsZVZhbHVlcyA9IHtcbiAgYmFyU2l6ZTogMCxcbiAgYmFyQ2x1c3RlckdhcDogMCxcbiAgYnVja2V0R2FwOiAwLFxuICBvdXRlckdhcDogMCxcbiAgbGVmdFBhZGRpbmc6IDAsXG4gIHJpZ2h0UGFkZGluZzogMCxcbiAgdG9wUGFkZGluZzogMCxcbiAgYm90dG9tUGFkZGluZzogMCxcbiAgbGVmdEJ1Y2tldExhYmVsOiAwLFxuICBkYXRhTGFiZWxQYWRkaW5nOiAwLFxuICBmb250U2l6ZTogMCxcbiAgdG90YWxXaWR0aDogMCxcbiAgdG90YWxIZWlnaHQ6IDAsXG4gIHNpemVGb3JEYXRhOiAwLFxuICB0b3RhbExlZnRPZmZzZXQ6IDAsXG4gIHRvdGFsUmlnaHRPZmZzZXQ6IDAsXG4gIHRvdGFsVG9wT2Zmc2V0OiAwLFxuICB0b3RhbEJvdHRvbU9mZnNldDogMCxcbiAgZGF0YUxhYmVsVGV4dFNpemU6IDAsXG4gIGhvcml6b250YWxBeGlzTGFiZWxUZXh0U2l6ZTogMCxcbiAgdmVydGljYWxBeGlzTGFiZWxUZXh0U2l6ZTogMCxcbiAgdGFyZ2V0VGlja0NvdW50OiAwLFxuICBjaGFydERhdGFEaXJlY3Rpb246ICd2ZXJ0aWNhbCcsXG4gIGhvcml6b250YWxDb250YWluZXJTY2FsZTogJ25vLXNjYWxlJyxcbiAgdmVydGljYWxDb250YWluZXJTY2FsZTogJ25vLXNjYWxlJyxcbn07XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnRTY2FsaW5nQ29uZmlndXJhdGlvbiA9IHtcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIHRhcmdldDogbnVtYmVyOyAvL09uIHRoZSBkYXRhIGF4aXMsIHRoaXMgaXMgZ2VuZXJhbGx5IHRyZWF0ZWQgYXMgYSBmaXhlZCB2YWx1ZVxufTtcblxuZXhwb3J0IHR5cGUgRGF0YVNjYWxpbmdUeXBlID1cbiAgfCAnZml0JyAvL0RhdGEgd2lsbCBzY2FsZSB0byBmaXQgZGltZW5zaW9uc1xuICB8ICdtYXgnIC8vVGhlIHRhbGxlc3Qgc3RhY2svYmFyL3ZhbHVlIG9mIGRhdGEgd2lsbCBzY2FsZSB0byB0aGUgZ2l2ZW4gcHggdmFsdWVcbiAgfCAnY3VzdG9tJzsgLy9UaGUgZGF0YSB3aWxsIHNjYWxlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCByYXRpb1xuXG5leHBvcnQgdHlwZSBEYXRhU2NhbGluZ0NvbmZpZ3VyYXRpb24gPVxuICB8IHtcbiAgICAgIHR5cGU6IEV4dHJhY3Q8RGF0YVNjYWxpbmdUeXBlLCAnZml0Jz47IC8vVGhpcydsbCBmdW5jdGlvbmFsbHkgcmV2ZXJ0IHRoZSBzY2FsaW5nIHR5cGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXhpcyB0byBcInNjYWxlLXRvLWZpdFwiXG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IEV4dHJhY3Q8RGF0YVNjYWxpbmdUeXBlLCAnbWF4Jz47XG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBFeHRyYWN0PERhdGFTY2FsaW5nVHlwZSwgJ2N1c3RvbSc+O1xuICAgICAgcmF0aW86IHtcbiAgICAgICAgcHg6IG51bWJlcjtcbiAgICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICAgIH07XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgQXhpc1NjYWxpbmdUeXBlID1cbiAgfCAnc2NhbGUtdG8tZml0JyAvL1RoZSBjaGFydCB3aWxsIHNjYWxlIHRvIGZpdCB0aGUgcHJvdmlkZWQgZGltZW5zaW9uc1xuICB8ICdncm93JyAvL1RoZSBjaGFydCB3aWxsIGdyb3cgaWYgc21hbGxlciB0aGFuIHRoZSBwcm92aWRlZCBkaW1lbnNpb25zLCBhbmQgc2Nyb2xsIGlmIGJpZ2dlci4gVHJlYXRlZCBhcyAnc2NhbGUtdG8tZml0JyBvbiB0aGUgZGF0YSBheGlzXG4gIHwgJ3NocmluaycgLy9UaGUgY2hhcnQgd2lsbCBzaHJpbmsgaWYgbGFyZ2VyIHRoYW4gdGhlIHByb3ZpZGVkIGRpbWVuc2lvbnMsIGFuZCBub3Qgc2NhbGUgb3RoZXJ3aXNlLiBUcmVhdGVkIGFzICdzY2FsZS10by1maXQnIG9uIHRoZSBkYXRhIGF4aXNcbiAgfCAnbm8tc2NhbGUnOyAvL1RoZSBjaGFydCB3aWxsIG5vdCBzY2FsZSwgYW5kIGlmIGJpZ2dlciB0aGFuIHRoZSBwcm92aWRlZCBkaW1lbnNpb25zLCB3aWxsIHNjcm9sbFxuXG5leHBvcnQgdHlwZSBDb250YWluZXJTY2FsaW5nVHlwZSA9XG4gIHwgJ3NocmluaycgLy9JZiB0aGUgY2hhcnQgZW5kcyB1cCBzbWFsbGVyIHRoYW4gdGhlIGNvbnRhaW5lciwgdGhlIGNvbnRhaW5lciB3aWxsIHNocmluayB0byBmaXRcbiAgfCAnbm8tc2NhbGUnOyAvL1RoZSBjb250YWluZXIgd2lsbCBub3QgY2hhbmdlIHNpemUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpemUgb2YgdGhlIGNoYXJ0XG5cbmV4cG9ydCB0eXBlIEZ1bGxTY2FsaW5nQ29uZmlnID0ge1xuICBkYXRhU2NhbGU/OiBEYXRhU2NhbGluZ0NvbmZpZ3VyYXRpb247IC8vT25seSB1c2VkIGlmIHRoZSBjb3JyZXNwb25kaW5nIGF4aXMgaXMgc2V0IHRvICduby1zY2FsZScgb3IgaXMgbm90IGRlZmluZWQgYnkgaW5wdXRcbiAgZWxlbWVudFNjYWxlcz86IFBhcnRpYWxFbGVtZW50U2NhbGluZ0NvbmZpZztcbiAgaG9yaXpvbnRhbEF4aXNTY2FsZT86IEF4aXNTY2FsaW5nVHlwZTtcbiAgdmVydGljYWxBeGlzU2NhbGU/OiBBeGlzU2NhbGluZ1R5cGU7XG4gIGhvcml6b250YWxDb250YWluZXJTY2FsZT86IENvbnRhaW5lclNjYWxpbmdUeXBlO1xuICB2ZXJ0aWNhbENvbnRhaW5lclNjYWxlPzogQ29udGFpbmVyU2NhbGluZ1R5cGU7XG4gIHRhcmdldFRpY2tDb3VudD86IG51bWJlcjsgLy9UYXJnZXQgbnVtYmVyIGZvciB0aGUgbnVtYmVyIG9mIHRpY2tzIG9uIHRoZSBkYXRhIGF4aXMuIERlZmF1bHRzIHRvICc1J1xufTtcblxuLy9Gb3IgdXNlIGluIGNoYXJ0LXR5cGUgZGVmYXVsdHNcbmV4cG9ydCB0eXBlIE5vbkVsZW1lbnRTY2FsaW5nQ29uZmlnID0gT21pdDxcbiAgLy9UaGlzIHBhcnQgY29waWVzIEZ1bGxTY2FsaW5nQ29uZmlnLCBidXQgcmVtb3ZlcyB0aGUgYWJpbGl0eSBmb3IgYXR0cmlidXRlcyB0byBiZSBvcHRpb25hbFxuICB7XG4gICAgW0sgaW4ga2V5b2YgRnVsbFNjYWxpbmdDb25maWddLT86IEZ1bGxTY2FsaW5nQ29uZmlnW0tdO1xuICB9LFxuICAvL1RoaXMgcGFydCBleGNsdWRlcyBlbGVtZW50U2NhbGVzLCBzaW5jZSB3ZSBoYW5kbGUgdGhvc2UgZGVmYXVsdHMgc2VwYXJhdGVseVxuICAnZWxlbWVudFNjYWxlcydcbj47XG5cbmV4cG9ydCB0eXBlIFBhcnRpYWxFbGVtZW50U2NhbGluZ0NvbmZpZyA9IHtcbiAgW0sgaW4gQ2hhcnRTY2FsZUVsZW1lbnRdPzogRWxlbWVudFNjYWxpbmdDb25maWd1cmF0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgRnVsbEVsZW1lbnRTY2FsaW5nQ29uZmlnID0ge1xuICBbSyBpbiBDaGFydFNjYWxlRWxlbWVudF06IEVsZW1lbnRTY2FsaW5nQ29uZmlndXJhdGlvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0QmFyRWxlbWVudFNjYWxpbmdDb25maWc6IEZ1bGxFbGVtZW50U2NhbGluZ0NvbmZpZyA9IHtcbiAgYmFyU2l6ZToge1xuICAgIG1pbjogOCxcbiAgICBtYXg6IDgwLFxuICAgIHRhcmdldDogMzAsXG4gIH0sXG4gIGJhckNsdXN0ZXJHYXA6IHtcbiAgICBtaW46IDgsXG4gICAgbWF4OiA4LFxuICAgIHRhcmdldDogOCxcbiAgfSxcbiAgYnVja2V0R2FwOiB7XG4gICAgbWluOiA4LFxuICAgIHRhcmdldDogNDAsXG4gIH0sXG4gIG91dGVyR2FwOiB7XG4gICAgbWluOiAwLFxuICAgIHRhcmdldDogMTYsXG4gIH0sXG4gIGxlZnRQYWRkaW5nOiB7XG4gICAgbWluOiA0OCxcbiAgICBtYXg6IDQ4LFxuICAgIHRhcmdldDogNDgsXG4gIH0sXG4gIHJpZ2h0UGFkZGluZzoge1xuICAgIG1pbjogOCxcbiAgICBtYXg6IDQ4LFxuICAgIHRhcmdldDogNDgsXG4gIH0sXG4gIHRvcFBhZGRpbmc6IHtcbiAgICBtaW46IDE2LFxuICAgIG1heDogMTYsXG4gICAgdGFyZ2V0OiAxNixcbiAgfSxcbiAgYm90dG9tUGFkZGluZzoge1xuICAgIG1pbjogMjAsXG4gICAgbWF4OiAyMCxcbiAgICB0YXJnZXQ6IDIwLFxuICB9LFxuICBkYXRhTGFiZWxQYWRkaW5nOiB7XG4gICAgbWluOiA4LFxuICAgIG1heDogOCxcbiAgICB0YXJnZXQ6IDgsXG4gIH0sXG4gIGZvbnRTaXplOiB7XG4gICAgbWluOiAxMixcbiAgICBtYXg6IDEyLFxuICAgIHRhcmdldDogMTIsXG4gIH0sXG4gIGxlZnRCdWNrZXRMYWJlbDoge1xuICAgIHRhcmdldDogMCwgLy9Ob3QgYXBwbGljYWJsZVxuICB9LFxufTtcbmV4cG9ydCBjb25zdCBEZWZhdWx0QmFyV2l0aFNlY29uZGFyeUVsZW1lbnRTY2FsaW5nQ29uZmlnOiBGdWxsRWxlbWVudFNjYWxpbmdDb25maWcgPVxuICB7XG4gICAgLi4uRGVmYXVsdEJhckVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgIHJpZ2h0UGFkZGluZzoge1xuICAgICAgbWluOiA0OCxcbiAgICAgIG1heDogNDgsXG4gICAgICB0YXJnZXQ6IDQ4LFxuICAgIH0sXG4gIH07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0SG9yaXpvbnRhbEJhckVsZW1lbnRTY2FsaW5nQ29uZmlnOiBGdWxsRWxlbWVudFNjYWxpbmdDb25maWcgPVxuICB7XG4gICAgYmFyU2l6ZToge1xuICAgICAgbWluOiA4LFxuICAgICAgbWF4OiA4LFxuICAgICAgdGFyZ2V0OiA4LFxuICAgIH0sXG4gICAgYmFyQ2x1c3RlckdhcDoge1xuICAgICAgbWluOiA0LFxuICAgICAgbWF4OiA4LFxuICAgICAgdGFyZ2V0OiA4LFxuICAgIH0sXG4gICAgYnVja2V0R2FwOiB7XG4gICAgICBtaW46IDgsXG4gICAgICB0YXJnZXQ6IDE2LFxuICAgIH0sXG4gICAgb3V0ZXJHYXA6IHtcbiAgICAgIG1pbjogMCxcbiAgICAgIHRhcmdldDogOCxcbiAgICB9LFxuICAgIGxlZnRQYWRkaW5nOiB7XG4gICAgICBtaW46IDgsXG4gICAgICBtYXg6IDgsXG4gICAgICB0YXJnZXQ6IDgsXG4gICAgfSxcbiAgICByaWdodFBhZGRpbmc6IHtcbiAgICAgIG1pbjogOCxcbiAgICAgIG1heDogNDgsXG4gICAgICB0YXJnZXQ6IDQ4LFxuICAgIH0sXG4gICAgdG9wUGFkZGluZzoge1xuICAgICAgbWluOiAxNixcbiAgICAgIG1heDogMTYsXG4gICAgICB0YXJnZXQ6IDE2LFxuICAgIH0sXG4gICAgYm90dG9tUGFkZGluZzoge1xuICAgICAgbWluOiAwLFxuICAgICAgbWF4OiAyMCxcbiAgICAgIHRhcmdldDogMCxcbiAgICB9LFxuICAgIGxlZnRCdWNrZXRMYWJlbDoge1xuICAgICAgbWluOiA4LFxuICAgICAgbWF4OiAxOTIsXG4gICAgICB0YXJnZXQ6IDY4LCAvL1NpemUgdXNlZCBmb3IgdGltZXNlcmllcyBidWNrZXRzXG4gICAgfSxcbiAgICBkYXRhTGFiZWxQYWRkaW5nOiB7XG4gICAgICBtaW46IDgsXG4gICAgICBtYXg6IDgsXG4gICAgICB0YXJnZXQ6IDgsXG4gICAgfSxcbiAgICBmb250U2l6ZToge1xuICAgICAgbWluOiAxMixcbiAgICAgIG1heDogMTIsXG4gICAgICB0YXJnZXQ6IDEyLFxuICAgIH0sXG4gIH07XG5leHBvcnQgY29uc3QgRGVmYXVsdEhvcml6b250YWxCYXJXaXRoU2Vjb25kYXJ5RWxlbWVudFNjYWxpbmdDb25maWc6IEZ1bGxFbGVtZW50U2NhbGluZ0NvbmZpZyA9XG4gIHtcbiAgICAuLi5EZWZhdWx0SG9yaXpvbnRhbEJhckVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgIGJvdHRvbVBhZGRpbmc6IHtcbiAgICAgIG1pbjogMjAsXG4gICAgICBtYXg6IDIwLFxuICAgICAgdGFyZ2V0OiAyMCxcbiAgICB9LFxuICB9O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdExpbmVFbGVtZW50U2NhbGluZ0NvbmZpZzogRnVsbEVsZW1lbnRTY2FsaW5nQ29uZmlnID0ge1xuICBidWNrZXRHYXA6IHtcbiAgICBtaW46IDgsXG4gICAgdGFyZ2V0OiAzMixcbiAgfSxcbiAgb3V0ZXJHYXA6IHtcbiAgICB0YXJnZXQ6IDEsXG4gIH0sXG4gIGxlZnRQYWRkaW5nOiB7XG4gICAgbWluOiA0OCxcbiAgICBtYXg6IDQ4LFxuICAgIHRhcmdldDogNDgsXG4gIH0sXG4gIHJpZ2h0UGFkZGluZzoge1xuICAgIG1pbjogOCxcbiAgICBtYXg6IDQ4LFxuICAgIHRhcmdldDogNDgsXG4gIH0sXG4gIHRvcFBhZGRpbmc6IHtcbiAgICBtaW46IDE2LFxuICAgIG1heDogMTYsXG4gICAgdGFyZ2V0OiAxNixcbiAgfSxcbiAgYm90dG9tUGFkZGluZzoge1xuICAgIG1pbjogMjAsXG4gICAgbWF4OiAyMCxcbiAgICB0YXJnZXQ6IDIwLFxuICB9LFxuICBkYXRhTGFiZWxQYWRkaW5nOiB7XG4gICAgbWluOiA4LFxuICAgIG1heDogOCxcbiAgICB0YXJnZXQ6IDgsXG4gIH0sXG4gIGZvbnRTaXplOiB7XG4gICAgbWluOiAxMixcbiAgICBtYXg6IDEyLFxuICAgIHRhcmdldDogMTIsXG4gIH0sXG4gIGJhclNpemU6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgYmFyQ2x1c3RlckdhcDoge1xuICAgIHRhcmdldDogMCwgLy9Ob3QgYXBwbGljYWJsZVxuICB9LFxuICBsZWZ0QnVja2V0TGFiZWw6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbn07XG5leHBvcnQgY29uc3QgRGVmYXVsdExpbmVXaXRoU2Vjb25kYXJ5RWxlbWVudFNjYWxpbmdDb25maWc6IEZ1bGxFbGVtZW50U2NhbGluZ0NvbmZpZyA9XG4gIHtcbiAgICAuLi5EZWZhdWx0TGluZUVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgIHJpZ2h0UGFkZGluZzoge1xuICAgICAgbWluOiA0OCxcbiAgICAgIG1heDogNDgsXG4gICAgICB0YXJnZXQ6IDQ4LFxuICAgIH0sXG4gIH07XG5cbi8vRm9yIGJhciwgbGluZSwgYXJlYSwgd2F0ZXJmYWxsIGFuZCBmdW5uZWwgY2hhcnRzXG5leHBvcnQgY29uc3QgRGVmYXVsdFZlcnRpY2FsTm9uRWxlbWVudFNjYWxpbmdDb25maWc6IE5vbkVsZW1lbnRTY2FsaW5nQ29uZmlnID0ge1xuICBkYXRhU2NhbGU6IHsgdHlwZTogJ2ZpdCcgfSxcbiAgaG9yaXpvbnRhbEF4aXNTY2FsZTogJ2dyb3cnLFxuICB2ZXJ0aWNhbEF4aXNTY2FsZTogJ3NjYWxlLXRvLWZpdCcsXG4gIGhvcml6b250YWxDb250YWluZXJTY2FsZTogJ3NocmluaycsXG4gIHZlcnRpY2FsQ29udGFpbmVyU2NhbGU6ICdzaHJpbmsnLFxuICB0YXJnZXRUaWNrQ291bnQ6IDUsXG59O1xuLy9Gb3IgaG9yaXpvbnRhbCBiYXIgY2hhcnRzXG5leHBvcnQgY29uc3QgRGVmYXVsdEhvcml6b250YWxOb25FbGVtZW50U2NhbGluZ0NvbmZpZzogTm9uRWxlbWVudFNjYWxpbmdDb25maWcgPVxuICB7XG4gICAgZGF0YVNjYWxlOiB7IHR5cGU6ICdmaXQnIH0sXG4gICAgaG9yaXpvbnRhbEF4aXNTY2FsZTogJ3NjYWxlLXRvLWZpdCcsXG4gICAgdmVydGljYWxBeGlzU2NhbGU6ICdncm93JyxcbiAgICBob3Jpem9udGFsQ29udGFpbmVyU2NhbGU6ICdzaHJpbmsnLFxuICAgIHZlcnRpY2FsQ29udGFpbmVyU2NhbGU6ICdzaHJpbmsnLFxuICAgIHRhcmdldFRpY2tDb3VudDogNSxcbiAgfTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFNjYWxpbmdDb25maWcgPSB7XG4gIGVsZW1lbnRTY2FsZXM6IEZ1bGxFbGVtZW50U2NhbGluZ0NvbmZpZztcbiAgbm9uRWxlbWVudFNjYWxlczogTm9uRWxlbWVudFNjYWxpbmdDb25maWc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFNjYWxpbmdDb25maWdCeUNoYXJ0VHlwZShcbiAgdHlwZTogRXhjbHVkZTxDaGFydC5DaGFydFR5cGUsICdkb251dCc+LFxuICBoYXNTZWNvbmRhcnk6IGJvb2xlYW4sXG4pOiBEZWZhdWx0U2NhbGluZ0NvbmZpZyB7XG4gIGlmICh0eXBlID09PSAnaG9yaXpvbnRhbC1iYXInKSB7XG4gICAgaWYgKGhhc1NlY29uZGFyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudFNjYWxlczogRGVmYXVsdEhvcml6b250YWxCYXJXaXRoU2Vjb25kYXJ5RWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgICAgIG5vbkVsZW1lbnRTY2FsZXM6IERlZmF1bHRIb3Jpem9udGFsTm9uRWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudFNjYWxlczogRGVmYXVsdEhvcml6b250YWxCYXJFbGVtZW50U2NhbGluZ0NvbmZpZyxcbiAgICAgIG5vbkVsZW1lbnRTY2FsZXM6IERlZmF1bHRIb3Jpem9udGFsTm9uRWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgfTtcbiAgfVxuICBpZiAoQ2hhcnQuaXNCYXJUeXBlKHR5cGUpKSB7XG4gICAgaWYgKGhhc1NlY29uZGFyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudFNjYWxlczogRGVmYXVsdEJhcldpdGhTZWNvbmRhcnlFbGVtZW50U2NhbGluZ0NvbmZpZyxcbiAgICAgICAgbm9uRWxlbWVudFNjYWxlczogRGVmYXVsdFZlcnRpY2FsTm9uRWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudFNjYWxlczogRGVmYXVsdEJhckVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgICAgbm9uRWxlbWVudFNjYWxlczogRGVmYXVsdFZlcnRpY2FsTm9uRWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgfTtcbiAgfVxuICBpZiAodHlwZSA9PT0gJ2xpbmUnIHx8IHR5cGUgPT09ICdhcmVhJykge1xuICAgIGlmIChoYXNTZWNvbmRhcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVsZW1lbnRTY2FsZXM6IERlZmF1bHRMaW5lV2l0aFNlY29uZGFyeUVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgICAgICBub25FbGVtZW50U2NhbGVzOiBEZWZhdWx0VmVydGljYWxOb25FbGVtZW50U2NhbGluZ0NvbmZpZyxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBlbGVtZW50U2NhbGVzOiBEZWZhdWx0TGluZUVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgICAgbm9uRWxlbWVudFNjYWxlczogRGVmYXVsdFZlcnRpY2FsTm9uRWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGVsZW1lbnRTY2FsZXM6IERlZmF1bHRCYXJFbGVtZW50U2NhbGluZ0NvbmZpZyxcbiAgICBub25FbGVtZW50U2NhbGVzOiBEZWZhdWx0VmVydGljYWxOb25FbGVtZW50U2NhbGluZ0NvbmZpZyxcbiAgfTtcbn1cblxudHlwZSBSYWRpdXNDb25maWcgPSB7XG4gIHR5cGU6ICdwcm9wb3J0aW9uJyB8ICdhYnNvbHV0ZSc7XG4gIHZhbHVlOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBEb251dFNpemluZ0NvbmZpZyA9IHtcbiAgb3V0ZXJSYWRpdXM/OiBSYWRpdXNDb25maWc7IC8vSWYgcHJvcG9ydGlvbiwgaXQncyByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gIGRyYXdSYWRpdXM/OiBSYWRpdXNDb25maWc7IC8vSWYgcHJvcG9ydGlvbiwgaXQncyByZWxhdGl2ZSB0byB0aGUgb3V0ZXIgcmFkaXVzXG4gIGVsZW1lbnRTY2FsZXM/OiBQYXJ0aWFsRWxlbWVudFNjYWxpbmdDb25maWc7XG4gIGhvcml6b250YWxDb250YWluZXJTY2FsZT86IENvbnRhaW5lclNjYWxpbmdUeXBlO1xuICB2ZXJ0aWNhbENvbnRhaW5lclNjYWxlPzogQ29udGFpbmVyU2NhbGluZ1R5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdERvbnV0RWxlbWVudFNjYWxpbmdDb25maWc6IEZ1bGxFbGVtZW50U2NhbGluZ0NvbmZpZyA9IHtcbiAgZGF0YUxhYmVsUGFkZGluZzoge1xuICAgIG1pbjogMTYsXG4gICAgbWF4OiAxNixcbiAgICB0YXJnZXQ6IDE2LFxuICB9LFxuICBmb250U2l6ZToge1xuICAgIG1pbjogMTIsXG4gICAgbWF4OiAxMixcbiAgICB0YXJnZXQ6IDEyLFxuICB9LFxuICBidWNrZXRHYXA6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgb3V0ZXJHYXA6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgbGVmdFBhZGRpbmc6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgcmlnaHRQYWRkaW5nOiB7XG4gICAgdGFyZ2V0OiAwLCAvL05vdCBhcHBsaWNhYmxlXG4gIH0sXG4gIHRvcFBhZGRpbmc6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgYm90dG9tUGFkZGluZzoge1xuICAgIHRhcmdldDogMCwgLy9Ob3QgYXBwbGljYWJsZVxuICB9LFxuICBiYXJTaXplOiB7XG4gICAgdGFyZ2V0OiAwLCAvL05vdCBhcHBsaWNhYmxlXG4gIH0sXG4gIGJhckNsdXN0ZXJHYXA6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgbGVmdEJ1Y2tldExhYmVsOiB7XG4gICAgdGFyZ2V0OiAwLCAvL05vdCBhcHBsaWNhYmxlXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRFUl9SQURJVVNfQ09ORklHOiBSYWRpdXNDb25maWcgPSB7XG4gIHR5cGU6ICdwcm9wb3J0aW9uJyxcbiAgdmFsdWU6IDAuNzUsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9EUkFXX1JBRElVU19DT05GSUc6IFJhZGl1c0NvbmZpZyA9IHtcbiAgdHlwZTogJ2Fic29sdXRlJyxcbiAgdmFsdWU6IDEyLFxufTtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHREb251dFNpemluZ0NvbmZpZyA9IHtcbiAgb3V0ZXJSYWRpdXM6IERFRkFVTFRfT1VURVJfUkFESVVTX0NPTkZJRyxcbiAgZHJhd1JhZGl1czogREVGQVVMVF9EUkFXX1JBRElVU19DT05GSUcsXG4gIGVsZW1lbnRTY2FsZXM6IERlZmF1bHREb251dEVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICBob3Jpem9udGFsQ29udGFpbmVyU2NhbGU6ICduby1zY2FsZScgYXMgQ29udGFpbmVyU2NhbGluZ1R5cGUsXG4gIHZlcnRpY2FsQ29udGFpbmVyU2NhbGU6ICduby1zY2FsZScgYXMgQ29udGFpbmVyU2NhbGluZ1R5cGUsXG59O1xuIl19
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtc2NhbGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3Zpc3VhbGl6YXRpb24vY2hhcnQvY2hhcnQtc2NhbGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBeUNoQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBeUI7SUFDekQsT0FBTyxFQUFFLENBQUM7SUFDVixhQUFhLEVBQUUsQ0FBQztJQUNoQixTQUFTLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxDQUFDO0lBQ1gsV0FBVyxFQUFFLENBQUM7SUFDZCxZQUFZLEVBQUUsQ0FBQztJQUNmLFVBQVUsRUFBRSxDQUFDO0lBQ2IsYUFBYSxFQUFFLENBQUM7SUFDaEIsZUFBZSxFQUFFLENBQUM7SUFDbEIsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuQixRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxDQUFDO0lBQ2IsV0FBVyxFQUFFLENBQUM7SUFDZCxXQUFXLEVBQUUsQ0FBQztJQUNkLGVBQWUsRUFBRSxDQUFDO0lBQ2xCLGdCQUFnQixFQUFFLENBQUM7SUFDbkIsY0FBYyxFQUFFLENBQUM7SUFDakIsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQixpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLDJCQUEyQixFQUFFLENBQUM7SUFDOUIseUJBQXlCLEVBQUUsQ0FBQztJQUM1QixlQUFlLEVBQUUsQ0FBQztJQUNsQixrQkFBa0IsRUFBRSxVQUFVO0lBQzlCLHdCQUF3QixFQUFFLFVBQVU7SUFDcEMsc0JBQXNCLEVBQUUsVUFBVTtDQUNuQyxDQUFDO0FBbUVGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUE2QjtJQUN0RSxPQUFPLEVBQUU7UUFDUCxHQUFHLEVBQUUsQ0FBQztRQUNOLEdBQUcsRUFBRSxFQUFFO1FBQ1AsTUFBTSxFQUFFLEVBQUU7S0FD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O0lBQ0QsYUFBYSxFQUFFO1FBQ2IsTUFBTSxFQUFFLENBQUMsRUFBRSxnQkFBZ0I7S0FDNUI7SUFDRCxPQUFPLEVBQUU7UUFDUCxNQUFNLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQjtLQUM1QjtJQUNELGFBQWEsRUFBRTtRQUNiLE1BQU0sRUFBRSxDQUFDLEVBQUUsZ0JBQWdCO0tBQzVCO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsTUFBTSxFQUFFLENBQUMsRUFBRSxnQkFBZ0I7S0FDNUI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQWlCO0lBQ3ZELElBQUksRUFBRSxZQUFZO0lBQ2xCLEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFpQjtJQUN0RCxJQUFJLEVBQUUsVUFBVTtJQUNoQixLQUFLLEVBQUUsRUFBRTtDQUNWLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxXQUFXLEVBQUUsMkJBQTJCO0lBQ3hDLFVBQVUsRUFBRSwwQkFBMEI7SUFDdEMsYUFBYSxFQUFFLGdDQUFnQztJQUMvQyx3QkFBd0IsRUFBRSxVQUFrQztJQUM1RCxzQkFBc0IsRUFBRSxVQUFrQztDQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICcuL2NoYXJ0JztcblxuZXhwb3J0IHR5cGUgQ2hhcnRTY2FsZUVsZW1lbnQgPVxuICB8ICdiYXJTaXplJ1xuICB8ICdiYXJDbHVzdGVyR2FwJ1xuICB8ICdidWNrZXRHYXAnXG4gIHwgJ291dGVyR2FwJ1xuICB8ICdsZWZ0UGFkZGluZydcbiAgfCAncmlnaHRQYWRkaW5nJ1xuICB8ICd0b3BQYWRkaW5nJ1xuICB8ICdib3R0b21QYWRkaW5nJ1xuICB8ICdsZWZ0QnVja2V0TGFiZWwnXG4gIHwgJ2RhdGFMYWJlbFBhZGRpbmcnXG4gIHwgJ2ZvbnRTaXplJztcblxuZXhwb3J0IHR5cGUgQ2hhcnRTY2FsZVZhbHVlcyA9IHtcbiAgW0sgaW4gQ2hhcnRTY2FsZUVsZW1lbnRdOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBDaGFydERhdGFEaXJlY3Rpb24gPVxuICB8ICd2ZXJ0aWNhbCcgLy9BbGwgY2hhcnRzIGJ1dCBob3Jpem9udGFsLWJhclxuICB8ICdob3Jpem9udGFsJzsgLy9DdXJyZW50bHkganVzdCBob3Jpem9udGFsLWJhclxuXG5leHBvcnQgdHlwZSBGdWxsQ2hhcnRTY2FsZVZhbHVlcyA9IENoYXJ0U2NhbGVWYWx1ZXMgJiB7XG4gIC8vVmFyaW91cyBoZWxwZnVsIHByZS1jYWxjZWQgdmFsdWVzXG4gIHRvdGFsV2lkdGg6IG51bWJlcjtcbiAgdG90YWxIZWlnaHQ6IG51bWJlcjtcbiAgc2l6ZUZvckRhdGE6IG51bWJlcjtcbiAgdG90YWxMZWZ0T2Zmc2V0OiBudW1iZXI7IC8vVG90YWwgZGlzdGFuY2UgYmV0d2VlbiB0aGUgbGVmdCBlZGdlIG9mIHRoZSBjaGFydCwgYW5kIHdoZW4gd2Ugc3RhcnQgZHJhd2luZyBkYXRhXG4gIHRvdGFsUmlnaHRPZmZzZXQ6IG51bWJlcjsgLy9Ub3RhbCBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBlbmQgb2YgZHJhd24gZGF0YSwgYW5kIHRoZSByaWdodCBlZGdlIG9mIHRoZSBjaGFydFxuICB0b3RhbFRvcE9mZnNldDogbnVtYmVyOyAvL1RvdGFsIGRpc3RhbmNlIGJldHdlZW4gdGhlIHRvcCBlZGdlIG9mIHRoZSBjaGFydCwgYW5kIHRoZSBzdGFydCBvZiBkcmF3biBkYXRhXG4gIHRvdGFsQm90dG9tT2Zmc2V0OiBudW1iZXI7IC8vVG90YWwgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZW5kIG9mIGRyYXduIGRhdGEsIGFuZCB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGNoYXJ0XG4gIGRhdGFMYWJlbFRleHRTaXplOiBudW1iZXI7XG4gIGhvcml6b250YWxBeGlzTGFiZWxUZXh0U2l6ZTogbnVtYmVyO1xuICB2ZXJ0aWNhbEF4aXNMYWJlbFRleHRTaXplOiBudW1iZXI7XG4gIHRhcmdldFRpY2tDb3VudDogbnVtYmVyO1xuICBjaGFydERhdGFEaXJlY3Rpb246IENoYXJ0RGF0YURpcmVjdGlvbjtcbiAgaG9yaXpvbnRhbENvbnRhaW5lclNjYWxlOiBDb250YWluZXJTY2FsaW5nVHlwZTtcbiAgdmVydGljYWxDb250YWluZXJTY2FsZTogQ29udGFpbmVyU2NhbGluZ1R5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgZW1wdHlDaGFydFNjYWxlVmFsdWVzOiBGdWxsQ2hhcnRTY2FsZVZhbHVlcyA9IHtcbiAgYmFyU2l6ZTogMCxcbiAgYmFyQ2x1c3RlckdhcDogMCxcbiAgYnVja2V0R2FwOiAwLFxuICBvdXRlckdhcDogMCxcbiAgbGVmdFBhZGRpbmc6IDAsXG4gIHJpZ2h0UGFkZGluZzogMCxcbiAgdG9wUGFkZGluZzogMCxcbiAgYm90dG9tUGFkZGluZzogMCxcbiAgbGVmdEJ1Y2tldExhYmVsOiAwLFxuICBkYXRhTGFiZWxQYWRkaW5nOiAwLFxuICBmb250U2l6ZTogMCxcbiAgdG90YWxXaWR0aDogMCxcbiAgdG90YWxIZWlnaHQ6IDAsXG4gIHNpemVGb3JEYXRhOiAwLFxuICB0b3RhbExlZnRPZmZzZXQ6IDAsXG4gIHRvdGFsUmlnaHRPZmZzZXQ6IDAsXG4gIHRvdGFsVG9wT2Zmc2V0OiAwLFxuICB0b3RhbEJvdHRvbU9mZnNldDogMCxcbiAgZGF0YUxhYmVsVGV4dFNpemU6IDAsXG4gIGhvcml6b250YWxBeGlzTGFiZWxUZXh0U2l6ZTogMCxcbiAgdmVydGljYWxBeGlzTGFiZWxUZXh0U2l6ZTogMCxcbiAgdGFyZ2V0VGlja0NvdW50OiAwLFxuICBjaGFydERhdGFEaXJlY3Rpb246ICd2ZXJ0aWNhbCcsXG4gIGhvcml6b250YWxDb250YWluZXJTY2FsZTogJ25vLXNjYWxlJyxcbiAgdmVydGljYWxDb250YWluZXJTY2FsZTogJ25vLXNjYWxlJyxcbn07XG5cbmV4cG9ydCB0eXBlIEVsZW1lbnRTY2FsaW5nQ29uZmlndXJhdGlvbiA9IHtcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIHRhcmdldDogbnVtYmVyOyAvL09uIHRoZSBkYXRhIGF4aXMsIHRoaXMgaXMgZ2VuZXJhbGx5IHRyZWF0ZWQgYXMgYSBmaXhlZCB2YWx1ZVxufTtcblxuZXhwb3J0IHR5cGUgRGF0YVNjYWxpbmdUeXBlID1cbiAgfCAnZml0JyAvL0RhdGEgd2lsbCBzY2FsZSB0byBmaXQgZGltZW5zaW9uc1xuICB8ICdtYXgnIC8vVGhlIHRhbGxlc3Qgc3RhY2svYmFyL3ZhbHVlIG9mIGRhdGEgd2lsbCBzY2FsZSB0byB0aGUgZ2l2ZW4gcHggdmFsdWVcbiAgfCAnY3VzdG9tJzsgLy9UaGUgZGF0YSB3aWxsIHNjYWxlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCByYXRpb1xuXG5leHBvcnQgdHlwZSBEYXRhU2NhbGluZ0NvbmZpZ3VyYXRpb24gPVxuICB8IHtcbiAgICAgIHR5cGU6IEV4dHJhY3Q8RGF0YVNjYWxpbmdUeXBlLCAnZml0Jz47IC8vVGhpcydsbCBmdW5jdGlvbmFsbHkgcmV2ZXJ0IHRoZSBzY2FsaW5nIHR5cGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYXhpcyB0byBcInNjYWxlLXRvLWZpdFwiXG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IEV4dHJhY3Q8RGF0YVNjYWxpbmdUeXBlLCAnbWF4Jz47XG4gICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBFeHRyYWN0PERhdGFTY2FsaW5nVHlwZSwgJ2N1c3RvbSc+O1xuICAgICAgcmF0aW86IHtcbiAgICAgICAgcHg6IG51bWJlcjtcbiAgICAgICAgdmFsdWU6IG51bWJlcjtcbiAgICAgIH07XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgQXhpc1NjYWxpbmdUeXBlID1cbiAgfCAnc2NhbGUtdG8tZml0JyAvL1RoZSBjaGFydCB3aWxsIHNjYWxlIHRvIGZpdCB0aGUgcHJvdmlkZWQgZGltZW5zaW9uc1xuICB8ICdncm93JyAvL1RoZSBjaGFydCB3aWxsIGdyb3cgaWYgc21hbGxlciB0aGFuIHRoZSBwcm92aWRlZCBkaW1lbnNpb25zLCBhbmQgc2Nyb2xsIGlmIGJpZ2dlci4gVHJlYXRlZCBhcyAnc2NhbGUtdG8tZml0JyBvbiB0aGUgZGF0YSBheGlzXG4gIHwgJ3NocmluaycgLy9UaGUgY2hhcnQgd2lsbCBzaHJpbmsgaWYgbGFyZ2VyIHRoYW4gdGhlIHByb3ZpZGVkIGRpbWVuc2lvbnMsIGFuZCBub3Qgc2NhbGUgb3RoZXJ3aXNlLiBUcmVhdGVkIGFzICdzY2FsZS10by1maXQnIG9uIHRoZSBkYXRhIGF4aXNcbiAgfCAnbm8tc2NhbGUnOyAvL1RoZSBjaGFydCB3aWxsIG5vdCBzY2FsZSwgYW5kIGlmIGJpZ2dlciB0aGFuIHRoZSBwcm92aWRlZCBkaW1lbnNpb25zLCB3aWxsIHNjcm9sbFxuXG5leHBvcnQgdHlwZSBDb250YWluZXJTY2FsaW5nVHlwZSA9XG4gIHwgJ3NocmluaycgLy9JZiB0aGUgY2hhcnQgZW5kcyB1cCBzbWFsbGVyIHRoYW4gdGhlIGNvbnRhaW5lciwgdGhlIGNvbnRhaW5lciB3aWxsIHNocmluayB0byBmaXRcbiAgfCAnbm8tc2NhbGUnOyAvL1RoZSBjb250YWluZXIgd2lsbCBub3QgY2hhbmdlIHNpemUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpemUgb2YgdGhlIGNoYXJ0XG5cbmV4cG9ydCB0eXBlIEZ1bGxTY2FsaW5nQ29uZmlnID0ge1xuICBkYXRhU2NhbGU/OiBEYXRhU2NhbGluZ0NvbmZpZ3VyYXRpb247IC8vT25seSB1c2VkIGlmIHRoZSBjb3JyZXNwb25kaW5nIGF4aXMgaXMgc2V0IHRvICduby1zY2FsZScgb3IgaXMgbm90IGRlZmluZWQgYnkgaW5wdXRcbiAgZWxlbWVudFNjYWxlcz86IFBhcnRpYWxFbGVtZW50U2NhbGluZ0NvbmZpZztcbiAgaG9yaXpvbnRhbEF4aXNTY2FsZT86IEF4aXNTY2FsaW5nVHlwZTtcbiAgdmVydGljYWxBeGlzU2NhbGU/OiBBeGlzU2NhbGluZ1R5cGU7XG4gIGhvcml6b250YWxDb250YWluZXJTY2FsZT86IENvbnRhaW5lclNjYWxpbmdUeXBlO1xuICB2ZXJ0aWNhbENvbnRhaW5lclNjYWxlPzogQ29udGFpbmVyU2NhbGluZ1R5cGU7XG4gIHRhcmdldFRpY2tDb3VudD86IG51bWJlcjsgLy9UYXJnZXQgbnVtYmVyIGZvciB0aGUgbnVtYmVyIG9mIHRpY2tzIG9uIHRoZSBkYXRhIGF4aXMuIERlZmF1bHRzIHRvICc1J1xufTtcblxuLy9Gb3IgdXNlIGluIGNoYXJ0LXR5cGUgZGVmYXVsdHNcbmV4cG9ydCB0eXBlIE5vbkVsZW1lbnRTY2FsaW5nQ29uZmlnID0gT21pdDxcbiAgLy9UaGlzIHBhcnQgY29waWVzIEZ1bGxTY2FsaW5nQ29uZmlnLCBidXQgcmVtb3ZlcyB0aGUgYWJpbGl0eSBmb3IgYXR0cmlidXRlcyB0byBiZSBvcHRpb25hbFxuICB7XG4gICAgW0sgaW4ga2V5b2YgRnVsbFNjYWxpbmdDb25maWddLT86IEZ1bGxTY2FsaW5nQ29uZmlnW0tdO1xuICB9LFxuICAvL1RoaXMgcGFydCBleGNsdWRlcyBlbGVtZW50U2NhbGVzLCBzaW5jZSB3ZSBoYW5kbGUgdGhvc2UgZGVmYXVsdHMgc2VwYXJhdGVseVxuICAnZWxlbWVudFNjYWxlcydcbj47XG5cbmV4cG9ydCB0eXBlIFBhcnRpYWxFbGVtZW50U2NhbGluZ0NvbmZpZyA9IHtcbiAgW0sgaW4gQ2hhcnRTY2FsZUVsZW1lbnRdPzogRWxlbWVudFNjYWxpbmdDb25maWd1cmF0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgRnVsbEVsZW1lbnRTY2FsaW5nQ29uZmlnID0ge1xuICBbSyBpbiBDaGFydFNjYWxlRWxlbWVudF06IEVsZW1lbnRTY2FsaW5nQ29uZmlndXJhdGlvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0QmFyRWxlbWVudFNjYWxpbmdDb25maWc6IEZ1bGxFbGVtZW50U2NhbGluZ0NvbmZpZyA9IHtcbiAgYmFyU2l6ZToge1xuICAgIG1pbjogMSxcbiAgICBtYXg6IDgwLFxuICAgIHRhcmdldDogMzAsXG4gIH0sXG4gIGJhckNsdXN0ZXJHYXA6IHtcbiAgICBtaW46IDEsXG4gICAgbWF4OiA4LFxuICAgIHRhcmdldDogOCxcbiAgfSxcbiAgYnVja2V0R2FwOiB7XG4gICAgbWluOiAxLFxuICAgIHRhcmdldDogNDAsXG4gIH0sXG4gIG91dGVyR2FwOiB7XG4gICAgbWluOiAwLFxuICAgIHRhcmdldDogMTYsXG4gIH0sXG4gIGxlZnRQYWRkaW5nOiB7XG4gICAgbWluOiA0OCxcbiAgICBtYXg6IDQ4LFxuICAgIHRhcmdldDogNDgsXG4gIH0sXG4gIHJpZ2h0UGFkZGluZzoge1xuICAgIG1pbjogOCxcbiAgICBtYXg6IDQ4LFxuICAgIHRhcmdldDogNDgsXG4gIH0sXG4gIHRvcFBhZGRpbmc6IHtcbiAgICBtaW46IDE2LFxuICAgIG1heDogMTYsXG4gICAgdGFyZ2V0OiAxNixcbiAgfSxcbiAgYm90dG9tUGFkZGluZzoge1xuICAgIG1pbjogMjAsXG4gICAgbWF4OiAyMCxcbiAgICB0YXJnZXQ6IDIwLFxuICB9LFxuICBkYXRhTGFiZWxQYWRkaW5nOiB7XG4gICAgbWluOiA4LFxuICAgIG1heDogOCxcbiAgICB0YXJnZXQ6IDgsXG4gIH0sXG4gIGZvbnRTaXplOiB7XG4gICAgbWluOiAxMixcbiAgICBtYXg6IDEyLFxuICAgIHRhcmdldDogMTIsXG4gIH0sXG4gIGxlZnRCdWNrZXRMYWJlbDoge1xuICAgIHRhcmdldDogMCwgLy9Ob3QgYXBwbGljYWJsZVxuICB9LFxufTtcbmV4cG9ydCBjb25zdCBEZWZhdWx0QmFyV2l0aFNlY29uZGFyeUVsZW1lbnRTY2FsaW5nQ29uZmlnOiBGdWxsRWxlbWVudFNjYWxpbmdDb25maWcgPVxuICB7XG4gICAgLi4uRGVmYXVsdEJhckVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgIHJpZ2h0UGFkZGluZzoge1xuICAgICAgbWluOiA0OCxcbiAgICAgIG1heDogNDgsXG4gICAgICB0YXJnZXQ6IDQ4LFxuICAgIH0sXG4gIH07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0SG9yaXpvbnRhbEJhckVsZW1lbnRTY2FsaW5nQ29uZmlnOiBGdWxsRWxlbWVudFNjYWxpbmdDb25maWcgPVxuICB7XG4gICAgYmFyU2l6ZToge1xuICAgICAgbWluOiAxLFxuICAgICAgbWF4OiA4LFxuICAgICAgdGFyZ2V0OiA4LFxuICAgIH0sXG4gICAgYmFyQ2x1c3RlckdhcDoge1xuICAgICAgbWluOiAxLFxuICAgICAgbWF4OiA4LFxuICAgICAgdGFyZ2V0OiA4LFxuICAgIH0sXG4gICAgYnVja2V0R2FwOiB7XG4gICAgICBtaW46IDEsXG4gICAgICB0YXJnZXQ6IDE2LFxuICAgIH0sXG4gICAgb3V0ZXJHYXA6IHtcbiAgICAgIG1pbjogMCxcbiAgICAgIHRhcmdldDogOCxcbiAgICB9LFxuICAgIGxlZnRQYWRkaW5nOiB7XG4gICAgICBtaW46IDgsXG4gICAgICBtYXg6IDgsXG4gICAgICB0YXJnZXQ6IDgsXG4gICAgfSxcbiAgICByaWdodFBhZGRpbmc6IHtcbiAgICAgIG1pbjogOCxcbiAgICAgIG1heDogNDgsXG4gICAgICB0YXJnZXQ6IDQ4LFxuICAgIH0sXG4gICAgdG9wUGFkZGluZzoge1xuICAgICAgbWluOiAxNixcbiAgICAgIG1heDogMTYsXG4gICAgICB0YXJnZXQ6IDE2LFxuICAgIH0sXG4gICAgYm90dG9tUGFkZGluZzoge1xuICAgICAgbWluOiAwLFxuICAgICAgbWF4OiAyMCxcbiAgICAgIHRhcmdldDogMCxcbiAgICB9LFxuICAgIGxlZnRCdWNrZXRMYWJlbDoge1xuICAgICAgbWluOiA4LFxuICAgICAgbWF4OiAxOTIsXG4gICAgICB0YXJnZXQ6IDY4LCAvL1NpemUgdXNlZCBmb3IgdGltZXNlcmllcyBidWNrZXRzXG4gICAgfSxcbiAgICBkYXRhTGFiZWxQYWRkaW5nOiB7XG4gICAgICBtaW46IDgsXG4gICAgICBtYXg6IDgsXG4gICAgICB0YXJnZXQ6IDgsXG4gICAgfSxcbiAgICBmb250U2l6ZToge1xuICAgICAgbWluOiAxMixcbiAgICAgIG1heDogMTIsXG4gICAgICB0YXJnZXQ6IDEyLFxuICAgIH0sXG4gIH07XG5leHBvcnQgY29uc3QgRGVmYXVsdEhvcml6b250YWxCYXJXaXRoU2Vjb25kYXJ5RWxlbWVudFNjYWxpbmdDb25maWc6IEZ1bGxFbGVtZW50U2NhbGluZ0NvbmZpZyA9XG4gIHtcbiAgICAuLi5EZWZhdWx0SG9yaXpvbnRhbEJhckVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgIGJvdHRvbVBhZGRpbmc6IHtcbiAgICAgIG1pbjogMjAsXG4gICAgICBtYXg6IDIwLFxuICAgICAgdGFyZ2V0OiAyMCxcbiAgICB9LFxuICB9O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdExpbmVFbGVtZW50U2NhbGluZ0NvbmZpZzogRnVsbEVsZW1lbnRTY2FsaW5nQ29uZmlnID0ge1xuICBidWNrZXRHYXA6IHtcbiAgICBtaW46IDEsXG4gICAgdGFyZ2V0OiAzMixcbiAgfSxcbiAgb3V0ZXJHYXA6IHtcbiAgICB0YXJnZXQ6IDEsXG4gIH0sXG4gIGxlZnRQYWRkaW5nOiB7XG4gICAgbWluOiA0OCxcbiAgICBtYXg6IDQ4LFxuICAgIHRhcmdldDogNDgsXG4gIH0sXG4gIHJpZ2h0UGFkZGluZzoge1xuICAgIG1pbjogOCxcbiAgICBtYXg6IDQ4LFxuICAgIHRhcmdldDogNDgsXG4gIH0sXG4gIHRvcFBhZGRpbmc6IHtcbiAgICBtaW46IDE2LFxuICAgIG1heDogMTYsXG4gICAgdGFyZ2V0OiAxNixcbiAgfSxcbiAgYm90dG9tUGFkZGluZzoge1xuICAgIG1pbjogMjAsXG4gICAgbWF4OiAyMCxcbiAgICB0YXJnZXQ6IDIwLFxuICB9LFxuICBkYXRhTGFiZWxQYWRkaW5nOiB7XG4gICAgbWluOiA4LFxuICAgIG1heDogOCxcbiAgICB0YXJnZXQ6IDgsXG4gIH0sXG4gIGZvbnRTaXplOiB7XG4gICAgbWluOiAxMixcbiAgICBtYXg6IDEyLFxuICAgIHRhcmdldDogMTIsXG4gIH0sXG4gIGJhclNpemU6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgYmFyQ2x1c3RlckdhcDoge1xuICAgIHRhcmdldDogMCwgLy9Ob3QgYXBwbGljYWJsZVxuICB9LFxuICBsZWZ0QnVja2V0TGFiZWw6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbn07XG5leHBvcnQgY29uc3QgRGVmYXVsdExpbmVXaXRoU2Vjb25kYXJ5RWxlbWVudFNjYWxpbmdDb25maWc6IEZ1bGxFbGVtZW50U2NhbGluZ0NvbmZpZyA9XG4gIHtcbiAgICAuLi5EZWZhdWx0TGluZUVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgIHJpZ2h0UGFkZGluZzoge1xuICAgICAgbWluOiA0OCxcbiAgICAgIG1heDogNDgsXG4gICAgICB0YXJnZXQ6IDQ4LFxuICAgIH0sXG4gIH07XG5cbi8vRm9yIGJhciwgbGluZSwgYXJlYSwgd2F0ZXJmYWxsIGFuZCBmdW5uZWwgY2hhcnRzXG5leHBvcnQgY29uc3QgRGVmYXVsdFZlcnRpY2FsTm9uRWxlbWVudFNjYWxpbmdDb25maWc6IE5vbkVsZW1lbnRTY2FsaW5nQ29uZmlnID0ge1xuICBkYXRhU2NhbGU6IHsgdHlwZTogJ2ZpdCcgfSxcbiAgaG9yaXpvbnRhbEF4aXNTY2FsZTogJ2dyb3cnLFxuICB2ZXJ0aWNhbEF4aXNTY2FsZTogJ3NjYWxlLXRvLWZpdCcsXG4gIGhvcml6b250YWxDb250YWluZXJTY2FsZTogJ3NocmluaycsXG4gIHZlcnRpY2FsQ29udGFpbmVyU2NhbGU6ICdzaHJpbmsnLFxuICB0YXJnZXRUaWNrQ291bnQ6IDUsXG59O1xuLy9Gb3IgaG9yaXpvbnRhbCBiYXIgY2hhcnRzXG5leHBvcnQgY29uc3QgRGVmYXVsdEhvcml6b250YWxOb25FbGVtZW50U2NhbGluZ0NvbmZpZzogTm9uRWxlbWVudFNjYWxpbmdDb25maWcgPVxuICB7XG4gICAgZGF0YVNjYWxlOiB7IHR5cGU6ICdmaXQnIH0sXG4gICAgaG9yaXpvbnRhbEF4aXNTY2FsZTogJ3NjYWxlLXRvLWZpdCcsXG4gICAgdmVydGljYWxBeGlzU2NhbGU6ICdncm93JyxcbiAgICBob3Jpem9udGFsQ29udGFpbmVyU2NhbGU6ICdzaHJpbmsnLFxuICAgIHZlcnRpY2FsQ29udGFpbmVyU2NhbGU6ICdzaHJpbmsnLFxuICAgIHRhcmdldFRpY2tDb3VudDogNSxcbiAgfTtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFNjYWxpbmdDb25maWcgPSB7XG4gIGVsZW1lbnRTY2FsZXM6IEZ1bGxFbGVtZW50U2NhbGluZ0NvbmZpZztcbiAgbm9uRWxlbWVudFNjYWxlczogTm9uRWxlbWVudFNjYWxpbmdDb25maWc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFNjYWxpbmdDb25maWdCeUNoYXJ0VHlwZShcbiAgdHlwZTogRXhjbHVkZTxDaGFydC5DaGFydFR5cGUsICdkb251dCc+LFxuICBoYXNTZWNvbmRhcnk6IGJvb2xlYW4sXG4pOiBEZWZhdWx0U2NhbGluZ0NvbmZpZyB7XG4gIGlmICh0eXBlID09PSAnaG9yaXpvbnRhbC1iYXInKSB7XG4gICAgaWYgKGhhc1NlY29uZGFyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudFNjYWxlczogRGVmYXVsdEhvcml6b250YWxCYXJXaXRoU2Vjb25kYXJ5RWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgICAgIG5vbkVsZW1lbnRTY2FsZXM6IERlZmF1bHRIb3Jpem9udGFsTm9uRWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudFNjYWxlczogRGVmYXVsdEhvcml6b250YWxCYXJFbGVtZW50U2NhbGluZ0NvbmZpZyxcbiAgICAgIG5vbkVsZW1lbnRTY2FsZXM6IERlZmF1bHRIb3Jpem9udGFsTm9uRWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgfTtcbiAgfVxuICBpZiAoQ2hhcnQuaXNCYXJUeXBlKHR5cGUpKSB7XG4gICAgaWYgKGhhc1NlY29uZGFyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudFNjYWxlczogRGVmYXVsdEJhcldpdGhTZWNvbmRhcnlFbGVtZW50U2NhbGluZ0NvbmZpZyxcbiAgICAgICAgbm9uRWxlbWVudFNjYWxlczogRGVmYXVsdFZlcnRpY2FsTm9uRWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudFNjYWxlczogRGVmYXVsdEJhckVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgICAgbm9uRWxlbWVudFNjYWxlczogRGVmYXVsdFZlcnRpY2FsTm9uRWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgfTtcbiAgfVxuICBpZiAodHlwZSA9PT0gJ2xpbmUnIHx8IHR5cGUgPT09ICdhcmVhJykge1xuICAgIGlmIChoYXNTZWNvbmRhcnkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVsZW1lbnRTY2FsZXM6IERlZmF1bHRMaW5lV2l0aFNlY29uZGFyeUVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgICAgICBub25FbGVtZW50U2NhbGVzOiBEZWZhdWx0VmVydGljYWxOb25FbGVtZW50U2NhbGluZ0NvbmZpZyxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBlbGVtZW50U2NhbGVzOiBEZWZhdWx0TGluZUVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICAgICAgbm9uRWxlbWVudFNjYWxlczogRGVmYXVsdFZlcnRpY2FsTm9uRWxlbWVudFNjYWxpbmdDb25maWcsXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGVsZW1lbnRTY2FsZXM6IERlZmF1bHRCYXJFbGVtZW50U2NhbGluZ0NvbmZpZyxcbiAgICBub25FbGVtZW50U2NhbGVzOiBEZWZhdWx0VmVydGljYWxOb25FbGVtZW50U2NhbGluZ0NvbmZpZyxcbiAgfTtcbn1cblxudHlwZSBSYWRpdXNDb25maWcgPSB7XG4gIHR5cGU6ICdwcm9wb3J0aW9uJyB8ICdhYnNvbHV0ZSc7XG4gIHZhbHVlOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBEb251dFNpemluZ0NvbmZpZyA9IHtcbiAgb3V0ZXJSYWRpdXM/OiBSYWRpdXNDb25maWc7IC8vSWYgcHJvcG9ydGlvbiwgaXQncyByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gIGRyYXdSYWRpdXM/OiBSYWRpdXNDb25maWc7IC8vSWYgcHJvcG9ydGlvbiwgaXQncyByZWxhdGl2ZSB0byB0aGUgb3V0ZXIgcmFkaXVzXG4gIGVsZW1lbnRTY2FsZXM/OiBQYXJ0aWFsRWxlbWVudFNjYWxpbmdDb25maWc7XG4gIGhvcml6b250YWxDb250YWluZXJTY2FsZT86IENvbnRhaW5lclNjYWxpbmdUeXBlO1xuICB2ZXJ0aWNhbENvbnRhaW5lclNjYWxlPzogQ29udGFpbmVyU2NhbGluZ1R5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdERvbnV0RWxlbWVudFNjYWxpbmdDb25maWc6IEZ1bGxFbGVtZW50U2NhbGluZ0NvbmZpZyA9IHtcbiAgZGF0YUxhYmVsUGFkZGluZzoge1xuICAgIG1pbjogMTYsXG4gICAgbWF4OiAxNixcbiAgICB0YXJnZXQ6IDE2LFxuICB9LFxuICBmb250U2l6ZToge1xuICAgIG1pbjogMTIsXG4gICAgbWF4OiAxMixcbiAgICB0YXJnZXQ6IDEyLFxuICB9LFxuICBidWNrZXRHYXA6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgb3V0ZXJHYXA6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgbGVmdFBhZGRpbmc6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgcmlnaHRQYWRkaW5nOiB7XG4gICAgdGFyZ2V0OiAwLCAvL05vdCBhcHBsaWNhYmxlXG4gIH0sXG4gIHRvcFBhZGRpbmc6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgYm90dG9tUGFkZGluZzoge1xuICAgIHRhcmdldDogMCwgLy9Ob3QgYXBwbGljYWJsZVxuICB9LFxuICBiYXJTaXplOiB7XG4gICAgdGFyZ2V0OiAwLCAvL05vdCBhcHBsaWNhYmxlXG4gIH0sXG4gIGJhckNsdXN0ZXJHYXA6IHtcbiAgICB0YXJnZXQ6IDAsIC8vTm90IGFwcGxpY2FibGVcbiAgfSxcbiAgbGVmdEJ1Y2tldExhYmVsOiB7XG4gICAgdGFyZ2V0OiAwLCAvL05vdCBhcHBsaWNhYmxlXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRFUl9SQURJVVNfQ09ORklHOiBSYWRpdXNDb25maWcgPSB7XG4gIHR5cGU6ICdwcm9wb3J0aW9uJyxcbiAgdmFsdWU6IDAuNzUsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9EUkFXX1JBRElVU19DT05GSUc6IFJhZGl1c0NvbmZpZyA9IHtcbiAgdHlwZTogJ2Fic29sdXRlJyxcbiAgdmFsdWU6IDEyLFxufTtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHREb251dFNpemluZ0NvbmZpZyA9IHtcbiAgb3V0ZXJSYWRpdXM6IERFRkFVTFRfT1VURVJfUkFESVVTX0NPTkZJRyxcbiAgZHJhd1JhZGl1czogREVGQVVMVF9EUkFXX1JBRElVU19DT05GSUcsXG4gIGVsZW1lbnRTY2FsZXM6IERlZmF1bHREb251dEVsZW1lbnRTY2FsaW5nQ29uZmlnLFxuICBob3Jpem9udGFsQ29udGFpbmVyU2NhbGU6ICduby1zY2FsZScgYXMgQ29udGFpbmVyU2NhbGluZ1R5cGUsXG4gIHZlcnRpY2FsQ29udGFpbmVyU2NhbGU6ICduby1zY2FsZScgYXMgQ29udGFpbmVyU2NhbGluZ1R5cGUsXG59O1xuIl19
|
|
@@ -14,8 +14,15 @@ import * as i8 from "../zero-state/zero-state.component";
|
|
|
14
14
|
export class ChartComponent {
|
|
15
15
|
constructor(cdr) {
|
|
16
16
|
this.cdr = cdr;
|
|
17
|
-
this.
|
|
17
|
+
this.DEFAULT_HEIGHT_VAL = 300;
|
|
18
|
+
this.DEFAULT_WIDTH_VAL = 0; //There's an automatic resizer in the html that handles matching width to container size
|
|
19
|
+
this.height$ = new BehaviorSubject(this.DEFAULT_HEIGHT_VAL);
|
|
18
20
|
this.width$ = new BehaviorSubject(0);
|
|
21
|
+
//These overrides handle situations where the chart needs to be set to a particular size that doesn't match what it would automatically scale to based on container
|
|
22
|
+
this.oldHeight = null;
|
|
23
|
+
this.overrideHeight$ = new BehaviorSubject(null);
|
|
24
|
+
this.oldWidth = null;
|
|
25
|
+
this.overrideWidth$ = new BehaviorSubject(null);
|
|
19
26
|
this.config$ = new BehaviorSubject(Chart.defaultConfig);
|
|
20
27
|
this.data$ = new BehaviorSubject({
|
|
21
28
|
type: 'timeseries',
|
|
@@ -143,17 +150,57 @@ export class ChartComponent {
|
|
|
143
150
|
}));
|
|
144
151
|
}
|
|
145
152
|
set height(w) {
|
|
146
|
-
this.
|
|
153
|
+
if (this.overrideHeight === null) {
|
|
154
|
+
this.height$.next(w);
|
|
155
|
+
}
|
|
147
156
|
}
|
|
148
157
|
get height() {
|
|
149
158
|
return this.height$.value;
|
|
150
159
|
}
|
|
151
160
|
set width(w) {
|
|
152
|
-
this.
|
|
161
|
+
if (this.overrideWidth === null) {
|
|
162
|
+
this.width$.next(w);
|
|
163
|
+
}
|
|
153
164
|
}
|
|
154
165
|
get width() {
|
|
155
166
|
return this.width$.value;
|
|
156
167
|
}
|
|
168
|
+
set overrideHeight(w) {
|
|
169
|
+
if (w !== null) {
|
|
170
|
+
this.oldHeight = this.height;
|
|
171
|
+
this.height$.next(w);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
if (this.oldHeight) {
|
|
175
|
+
this.height$.next(this.oldHeight);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
this.height$.next(this.DEFAULT_HEIGHT_VAL);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
this.overrideHeight$.next(w);
|
|
182
|
+
}
|
|
183
|
+
get overrideHeight() {
|
|
184
|
+
return this.overrideHeight$.value;
|
|
185
|
+
}
|
|
186
|
+
set overrideWidth(w) {
|
|
187
|
+
if (w !== null) {
|
|
188
|
+
this.oldWidth = this.width;
|
|
189
|
+
this.width$.next(w);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
if (this.oldWidth) {
|
|
193
|
+
this.width$.next(this.oldWidth);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
this.width$.next(this.DEFAULT_WIDTH_VAL);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
this.overrideWidth$.next(w);
|
|
200
|
+
}
|
|
201
|
+
get overrideWidth() {
|
|
202
|
+
return this.overrideWidth$.value;
|
|
203
|
+
}
|
|
157
204
|
set config(c) {
|
|
158
205
|
this.config$.next(c);
|
|
159
206
|
}
|
|
@@ -347,4 +394,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
347
394
|
}], chartClicked: [{
|
|
348
395
|
type: Output
|
|
349
396
|
}] } });
|
|
350
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdmlzdWFsaXphdGlvbi9jaGFydC9jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILElBQUksRUFDSixTQUFTLEVBQ1QsT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7Ozs7OztBQVloQyxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUE2QixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWFuRCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFRbkMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBUWhDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBZSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFTakUsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFhO1lBQ3RDLElBQUksRUFBRSxZQUFZO1lBQ2xCLENBQUMsRUFBRSxFQUFFO1lBQ0wsRUFBRSxFQUFFLEVBQUU7U0FDUCxDQUFDLENBQUM7UUFFSyxpQkFBWSxHQUFHLElBQUksR0FBRyxF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QUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQXFCO1FBQzNDLE1BQU0sS0FBSyxHQUNULElBQUksS0FBSyxJQUFJO1lBQ2IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztZQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxFQUFFO1lBQ1QsT0FBTyxXQUFXLENBQUM7U0FDcEI7UUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRTtZQUN4QyxPQUFPLGtCQUFrQixDQUFDO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzsyR0E5WlUsY0FBYzsrRkFBZCxjQUFjLGljQ2xDM0IsK21qQkFnZkE7MkZEOWNhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVyxtQkFHSix1QkFBdUIsQ0FBQyxNQUFNO3dHQUt2QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1UsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFHOUIsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLFNBQVM7Z0JBMEJuQixNQUFNO3NCQURULEtBQUs7Z0JBb0JGLElBQUk7c0JBRFAsS0FBSztnQkFtSE4sWUFBWTtzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxuICBzY2FuLFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICcuL2NoYXJ0JztcblxudHlwZSBEcmF3RGF0YSA9IHtcbiAgZGF0YTogQ2hhcnQuRGF0YTtcbiAgdmlld0JveDogc3RyaW5nO1xufSAmIENoYXJ0LlJlbmRlcmVkQ2hhcnQ7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtY2hhcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXI/OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdtb3JlVGV4dENvbnRhaW5lcicpIG1vcmVUZXh0Q29udGFpbmVyPzogRWxlbWVudFJlZjtcblxuICBAQ29udGVudENoaWxkKCd0b29sdGlwJylcbiAgdG9vbHRpcFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8e1xuICAgIHhJbmRleDogbnVtYmVyO1xuICAgIHlJbmRleDogbnVtYmVyO1xuICAgIGlzU3VwcFZhbHVlPzogYm9vbGVhbjtcbiAgICBzdXBwWUluZGV4PzogbnVtYmVyO1xuICB9PjtcblxuICBoZWlnaHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgzMDApO1xuICBzZXQgaGVpZ2h0KHc6IG51bWJlcikge1xuICAgIHRoaXMuaGVpZ2h0JC5uZXh0KHcpO1xuICB9XG4gIGdldCBoZWlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVpZ2h0JC52YWx1ZTtcbiAgfVxuXG4gIHdpZHRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG4gIHNldCB3aWR0aCh3OiBudW1iZXIpIHtcbiAgICB0aGlzLndpZHRoJC5uZXh0KHcpO1xuICB9XG4gIGdldCB3aWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy53aWR0aCQudmFsdWU7XG4gIH1cblxuICBjb25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGFydC5Db25maWc+KENoYXJ0LmRlZmF1bHRDb25maWcpO1xuICBASW5wdXQoKVxuICBzZXQgY29uZmlnKGM6IENoYXJ0LkNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnJC5uZXh0KGMpO1xuICB9XG4gIGdldCBjb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnJC52YWx1ZTtcbiAgfVxuXG4gIGRhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGFydC5EYXRhPih7XG4gICAgdHlwZTogJ3RpbWVzZXJpZXMnLFxuICAgIHg6IFtdLFxuICAgIHlzOiBbXSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBjb2xvckluZGljZXMgPSBuZXcgTWFwPFxuICAgIENoYXJ0LkRhdGFZIHwgQ2hhcnQuU3VwcGxlbWVudGFyeURhdGFZLFxuICAgIG51bWJlclxuICA+KCk7XG5cbiAgQElucHV0KClcbiAgc2V0IGRhdGEoZDogQ2hhcnQuRGF0YSkge1xuICAgIHRoaXMuZGF0YSQubmV4dChkKTtcbiAgICB0aGlzLmNvbG9ySW5kaWNlcyA9IENoYXJ0LmNhbGN1bGF0ZUNvbG9ySW5kaWNlcyhkKTtcbiAgfVxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhJC52YWx1ZTtcbiAgfVxuXG4gIGdldEl0ZW1LZXkoXG4gICAgaXRlbTogQ2hhcnQuRGF0YVkgfCBDaGFydC5TdXBwbGVtZW50YXJ5RGF0YVksXG4gICAgaW5kZXg6IG51bWJlcixcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3N1cHBsZW1lbnRhbEluZGV4JyBpbiBpdGVtID8gYHN1cHAtJHtpbmRleH1gIDogYHktJHtpbmRleH1gO1xuICB9XG5cbiAgdG9nZ2xlTGVnZW5kKGl0ZW06IENoYXJ0LkRhdGFZIHwgQ2hhcnQuU3VwcGxlbWVudGFyeURhdGFZLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy50b2dnbGVMZWdlbmQkLm5leHQodGhpcy5nZXRJdGVtS2V5KGl0ZW0sIGluZGV4KSk7XG4gIH1cblxuICB0b2dnbGVMZWdlbmQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIC8vIHRvZ2dsZWRMZWdlbmQkIGlzIGp1c3QgYSBzZXQgb2YgYm9vbGVhblxuICAvLyB2YWx1ZXMgZm9yIHdoaWNoIGxlZ2VuZHMgaGF2ZSBiZWVuIHRvZ2dsZWQuXG4gIC8vIFdlIGRvbid0IGtub3cgaWYgdGhvc2UgbGVnZW5kcyB3aGVyZSBhbHJlYWR5XG4gIC8vIGhpZGRlbiBvciBub3QsIHdlIGp1c3Qga25vdyB3aGV0aGVyIHRoZXkgaGF2ZVxuICAvLyBiZWVuIHRvZ2dsZWQuXG4gIHRvZ2dsZWRMZWdlbmRzJCA9IHRoaXMudG9nZ2xlTGVnZW5kJC5waXBlKFxuICAgIHNjYW48c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oXG4gICAgICAoYWNjLCB2YWx1ZSkgPT4gKHsgLi4uYWNjLCBbdmFsdWVdOiAhYWNjW3ZhbHVlXSB9KSxcbiAgICAgIHt9LFxuICAgICksXG4gICAgc3RhcnRXaXRoPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSksXG4gICk7XG5cbiAgZHJhd0RhdGEkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy53aWR0aCQsXG4gICAgdGhpcy5oZWlnaHQkLFxuICAgIHRoaXMuY29uZmlnJCxcbiAgICB0aGlzLmRhdGEkLFxuICAgIHRoaXMudG9nZ2xlZExlZ2VuZHMkLFxuICBdKS5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyZW50KSA9PiBpc0VxdWFsKHByZXYsIGN1cnJlbnQpKSxcbiAgICBtYXAoKFt3aWR0aCwgaGVpZ2h0LCBjb25maWcsIGRhdGEsIHRvZ2dsZWRMZWdlbmRzXSkgPT4ge1xuICAgICAgaWYgKHdpZHRoID09PSAwIHx8IGhlaWdodCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGhpZGRlbkRhdGEgPSB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHlzOiBkYXRhLnlzLm1hcCgoeSwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgLi4ueSxcbiAgICAgICAgICAvLyBpZiB0b2dnbGVkLCBmbGlwIHRoZSBoaWRkZW4gYm9vbGVhblxuICAgICAgICAgIGhpZGRlbjogdG9nZ2xlZExlZ2VuZHNbYHktJHtpbmRleH1gXSA/ICF5LmhpZGRlbiA6IHkuaGlkZGVuLFxuICAgICAgICB9KSksXG4gICAgICAgIHN1cHBsZW1lbnRhcnlZczogZGF0YS5zdXBwbGVtZW50YXJ5WXM/Lm1hcCgoeSwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgLi4ueSxcbiAgICAgICAgICBoaWRkZW46IHRvZ2dsZWRMZWdlbmRzW2BzdXBwLSR7aW5kZXh9YF0gPyAheS5oaWRkZW4gOiB5LmhpZGRlbixcbiAgICAgICAgfSkpLFxuICAgICAgfTtcblxuICAgICAgbGV0IGNoYXJ0RGF0YSA9IENoYXJ0LmNoYXJ0KGNvbmZpZywgaGlkZGVuRGF0YSwge1xuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGhvcml6b250YWxTY3JvbGxEZXRlY3RlZCA9IGNoYXJ0RGF0YS5jaGFydFdpZHRoID4gd2lkdGg7XG4gICAgICBjb25zdCB2ZXJ0aWNhbFNjcm9sbERldGVjdGVkID0gY2hhcnREYXRhLmNoYXJ0SGVpZ2h0ID4gaGVpZ2h0O1xuICAgICAgaWYgKGhvcml6b250YWxTY3JvbGxEZXRlY3RlZCB8fCB2ZXJ0aWNhbFNjcm9sbERldGVjdGVkKSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbGJhciA9IHRoaXMubWVhc3VyZVNjcm9sbGJhclRoaWNrbmVzcygpO1xuICAgICAgICBjaGFydERhdGEgPSBDaGFydC5jaGFydChjb25maWcsIGhpZGRlbkRhdGEsIHtcbiAgICAgICAgICB3aWR0aDogd2lkdGggLSAodmVydGljYWxTY3JvbGxEZXRlY3RlZCA/IHNjcm9sbGJhci52ZXJ0aWNhbCA6IDApLFxuICAgICAgICAgIGhlaWdodDpcbiAgICAgICAgICAgIGhlaWdodCAtIChob3Jpem9udGFsU2Nyb2xsRGV0ZWN0ZWQgPyBzY3JvbGxiYXIuaG9yaXpvbnRhbCA6IDApLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgdmlld0JveCA9XG4gICAgICAgIGNvbmZpZy50eXBlID09PSAnZG9udXQnXG4gICAgICAgICAgPyBgJHstY2hhcnREYXRhLmNoYXJ0V2lkdGggLyAyfSAkey1jaGFydERhdGEuY2hhcnRIZWlnaHQgLyAyfVxuICAgICAgICAgICAgICAke2NoYXJ0RGF0YS5jaGFydFdpZHRofSAke2NoYXJ0RGF0YS5jaGFydEhlaWdodH1gXG4gICAgICAgICAgOiBgMCAwICR7Y2hhcnREYXRhLmNoYXJ0V2lkdGh9ICR7Y2hhcnREYXRhLmNoYXJ0SGVpZ2h0fWA7XG4gICAgICBjb25zdCByZXR1cm5PYmo6IERyYXdEYXRhID0ge1xuICAgICAgICB2aWV3Qm94LFxuICAgICAgICBkYXRhOiBoaWRkZW5EYXRhLFxuICAgICAgICAuLi5jaGFydERhdGEsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHJldHVybk9iajtcbiAgICB9KSxcbiAgKTtcblxuICBob3ZlcjogUmV0dXJuVHlwZTxDaGFydC5Ib3Zlcj4gPSBudWxsO1xuXG4gIG1vdXNlbW92ZSgkZXZlbnQ6IE1vdXNlRXZlbnQsIGhvdmVyPzogQ2hhcnQuSG92ZXIpIHtcbiAgICBpZiAoIWhvdmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lckVsID0gdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKGNvbnRhaW5lckVsID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlY3QgPSBjb250YWluZXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0aGlzLmhvdmVyID0gaG92ZXIoe1xuICAgICAgcmVjdCxcbiAgICAgIHg6ICRldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0LFxuICAgICAgeTogJGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcCxcbiAgICAgIGNvbnRhaW5lclNjcm9sbFg6IGNvbnRhaW5lckVsLnNjcm9sbExlZnQsXG4gICAgICBjb250YWluZXJTY3JvbGxZOiBjb250YWluZXJFbC5zY3JvbGxUb3AsXG4gICAgfSk7XG4gIH1cblxuICBtb3VzZWxlYXZlKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuaG92ZXIgPSBudWxsO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIGNoYXJ0Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIHhJbmRleDogbnVtYmVyO1xuICAgIHlJbmRleDogbnVtYmVyO1xuICAgIHN1cHBZSW5kZXg/OiBudW1iZXI7XG4gIH0+KCk7XG5cbiAgY2xpY2soKSB7XG4gICAgaWYgKHRoaXMuaG92ZXIgJiYgdGhpcy5pc0hvdmVyQ2xpY2thYmxlKSB7XG4gICAgICB0aGlzLmNoYXJ0Q2xpY2tlZC5lbWl0KHtcbiAgICAgICAgeEluZGV4OiB0aGlzLmhvdmVyLnhJbmRleCxcbiAgICAgICAgeUluZGV4OiB0aGlzLmhvdmVyLnlJbmRleCxcbiAgICAgICAgLi4uKHRoaXMuaG92ZXIuaXNTdXBwVmFsdWUgJiZcbiAgICAgICAgdGhpcy5ob3Zlci5zdXBwWUluZGV4ICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICB0aGlzLmhvdmVyLnN1cHBZSW5kZXggPj0gMFxuICAgICAgICAgID8geyBzdXBwWUluZGV4OiB0aGlzLmhvdmVyLnN1cHBZSW5kZXggfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmhvdmVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNIb3ZlckNsaWNrYWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaG92ZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBJZiBob3ZlcmluZyBhIHN1cHBsZW1lbnRhcnkgdmFsdWUgc3BlY2lmaWNhbGx5LCBjaGVjayBpZiBpdCdzIGNsaWNrYWJsZVxuICAgIGlmICh0aGlzLmhvdmVyLmlzU3VwcFZhbHVlICYmIHRoaXMuaG92ZXIuc3VwcFlJbmRleCAhPSBudWxsKSB7XG4gICAgICBjb25zdCBzdXBwWUluZGV4ID0gdGhpcy5ob3Zlci5zdXBwWUluZGV4O1xuICAgICAgY29uc3Qgc3VwcGxlbWVudGFyeVlzID0gdGhpcy5kYXRhLnN1cHBsZW1lbnRhcnlZcztcbiAgICAgIGlmIChcbiAgICAgICAgIXN1cHBsZW1lbnRhcnlZcyB8fFxuICAgICAgICBzdXBwWUluZGV4IDwgMCB8fFxuICAgICAgICBzdXBwWUluZGV4ID49IHN1cHBsZW1lbnRhcnlZcy5sZW5ndGhcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3VwcGxlbWVudGFyeVlzW3N1cHBZSW5kZXhdPy5jbGlja2FibGUgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLy8gRm9yIGdyb3VwZWQgdG9vbHRpcHMsIGNoZWNrIGlmIGFueSB2aXNpYmxlIGl0ZW0gaXMgY2xpY2thYmxlXG4gICAgY29uc3QgeUluZGV4ID0gdGhpcy5ob3Zlci55SW5kZXg7XG4gICAgaWYgKHRoaXMuY29uZmlnLmdyb3VwZWRUb29sdGlwKSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgbWFpbiBZIHZhbHVlIGlzIGNsaWNrYWJsZVxuICAgICAgaWYgKHRoaXMuZGF0YS55c1t5SW5kZXhdPy5jbGlja2FibGUgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2luZ2xlIGl0ZW0gdG9vbHRpcDogY2hlY2sgaWYgdGhlIGhvdmVyZWQgWSB2YWx1ZSBpcyBjbGlja2FibGVcbiAgICByZXR1cm4gdGhpcy5kYXRhLnlzW3lJbmRleF0/LmNsaWNrYWJsZSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHZhckNvbG9yKGNvbG9yczogc3RyaW5nW10sIGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gYHZhcigke2NvbG9yc1tpbmRleCAlIGNvbG9ycy5sZW5ndGhdfSlgO1xuICB9XG5cbiAgZ2V0SXRlbUNvbG9yKFxuICAgIGl0ZW06IENoYXJ0LkRhdGFZIHwgQ2hhcnQuU3VwcGxlbWVudGFyeURhdGFZLFxuICAgIGl0ZW1JbmRleDogbnVtYmVyLFxuICApOiBzdHJpbmcge1xuICAgIC8vIFVzZSBpbmRleCB0byBnZXQgdGhlIG9yaWdpbmFsIGl0ZW0gKGRyYXdEYXRhJCBtYWludGFpbnMgc2FtZSBpbmRpY2VzIGFzIHRoaXMuZGF0YSlcbiAgICBjb25zdCBvcmlnaW5hbEl0ZW0gPVxuICAgICAgJ3N1cHBsZW1lbnRhbEluZGV4JyBpbiBpdGVtXG4gICAgICAgID8gdGhpcy5kYXRhLnN1cHBsZW1lbnRhcnlZcyFbaXRlbUluZGV4XVxuICAgICAgICA6IHRoaXMuZGF0YS55c1tpdGVtSW5kZXhdO1xuXG4gICAgcmV0dXJuIENoYXJ0LmdldENvbG9yKG9yaWdpbmFsSXRlbSwgdGhpcy5jb2xvckluZGljZXMsIHRoaXMuY29uZmlnLmNvbG9ycyk7XG4gIH1cblxuICBzaG93TW9yZVRvb2x0aXAgPSBmYWxzZTtcbiAgbG9ja1Nob3dNb3JlVG9vbHRpcCA9IGZhbHNlO1xuXG4gIG1vcmVUZXh0V2lkdGggPSA1MDtcbiAgYmFzZUxlZ2VuZEl0ZW1XaWR0aCA9IDQwO1xuXG4gIGZpcnN0SGlkZGVuTGVnZW5kSXRlbUluZGV4JCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMud2lkdGgkLFxuICAgIHRoaXMuY29uZmlnJCxcbiAgICB0aGlzLmRhdGEkLFxuICBdKS5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyZW50KSA9PiBpc0VxdWFsKHByZXYsIGN1cnJlbnQpKSxcbiAgICBtYXAoKFt3aWR0aCwgY29uZmlnLCBkYXRhXSkgPT4ge1xuICAgICAgaWYgKCFjb25maWcudHJ1bmNhdGVMZWdlbmQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhSW5kZXg6IGRhdGEueXMubGVuZ3RoLFxuICAgICAgICAgIHN1cHBJbmRleDogZGF0YS5zdXBwbGVtZW50YXJ5WXM/Lmxlbmd0aCA/PyAwLFxuICAgICAgICAgIGhpZGRlbkNvdW50OiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBsZXQgd2lkdGhSdW5uaW5nVG90YWwgPSAwO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChkYXRhLnlzW2ldLnNob3dMZWdlbmRJdGVtID09PSBmYWxzZSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZEl0ZW1XaWR0aCA9XG4gICAgICAgICAgdGhpcy5iYXNlTGVnZW5kSXRlbVdpZHRoICtcbiAgICAgICAgICBkYXRhLnlzW2ldLmxhYmVsLmxlbmd0aCAqIENoYXJ0LldJRFRIX1BFUl9MRVRURVI7XG4gICAgICAgIGlmICh3aWR0aFJ1bm5pbmdUb3RhbCArIGluZEl0ZW1XaWR0aCA+PSB3aWR0aCAtIHRoaXMubW9yZVRleHRXaWR0aCkge1xuICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1lzQ291bnQgPSBkYXRhLnlzXG4gICAgICAgICAgICAuc2xpY2UoaSlcbiAgICAgICAgICAgIC5maWx0ZXIoeSA9PiB5LnNob3dMZWdlbmRJdGVtICE9PSBmYWxzZSkubGVuZ3RoO1xuICAgICAgICAgIGNvbnN0IHN1cHBZc0NvdW50ID1cbiAgICAgICAgICAgIGRhdGEuc3VwcGxlbWVudGFyeVlzPy5maWx0ZXIoeSA9PiB5LnNob3dMZWdlbmRJdGVtICE9PSBmYWxzZSlcbiAgICAgICAgICAgICAgLmxlbmd0aCA/PyAwO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhSW5kZXg6IGksXG4gICAgICAgICAgICBzdXBwSW5kZXg6IDAsXG4gICAgICAgICAgICBoaWRkZW5Db3VudDogcmVtYWluaW5nWXNDb3VudCArIHN1cHBZc0NvdW50LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgd2lkdGhSdW5uaW5nVG90YWwgKz0gaW5kSXRlbVdpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEuc3VwcGxlbWVudGFyeVlzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5zdXBwbGVtZW50YXJ5WXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoZGF0YS5zdXBwbGVtZW50YXJ5WXNbaV0uc2hvd0xlZ2VuZEl0ZW0gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaW5kSXRlbVdpZHRoID1cbiAgICAgICAgICAgIHRoaXMuYmFzZUxlZ2VuZEl0ZW1XaWR0aCArXG4gICAgICAgICAgICBkYXRhLnN1cHBsZW1lbnRhcnlZc1tpXS5sYWJlbC5sZW5ndGggKiBDaGFydC5XSURUSF9QRVJfTEVUVEVSO1xuICAgICAgICAgIGlmICh3aWR0aFJ1bm5pbmdUb3RhbCArIGluZEl0ZW1XaWR0aCA+PSB3aWR0aCAtIHRoaXMubW9yZVRleHRXaWR0aCkge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nU3VwcFlzQ291bnQgPSBkYXRhLnN1cHBsZW1lbnRhcnlZc1xuICAgICAgICAgICAgICAuc2xpY2UoaSlcbiAgICAgICAgICAgICAgLmZpbHRlcih5ID0+IHkuc2hvd0xlZ2VuZEl0ZW0gIT09IGZhbHNlKS5sZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhSW5kZXg6IGRhdGEueXMubGVuZ3RoLFxuICAgICAgICAgICAgICBzdXBwSW5kZXg6IGksXG4gICAgICAgICAgICAgIGhpZGRlbkNvdW50OiByZW1haW5pbmdTdXBwWXNDb3VudCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHdpZHRoUnVubmluZ1RvdGFsICs9IGluZEl0ZW1XaWR0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YUluZGV4OiBkYXRhLnlzLmxlbmd0aCxcbiAgICAgICAgc3VwcEluZGV4OiBkYXRhLnN1cHBsZW1lbnRhcnlZcz8ubGVuZ3RoID8/IDAsXG4gICAgICAgIGhpZGRlbkNvdW50OiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xuXG4gIG1vcmVDbGljaygpIHtcbiAgICB0aGlzLmxvY2tTaG93TW9yZVRvb2x0aXAgPSAhdGhpcy5sb2NrU2hvd01vcmVUb29sdGlwO1xuICB9XG5cbiAgY2xvc2VIYW5kbGVyKCkge1xuICAgIHRoaXMubG9ja1Nob3dNb3JlVG9vbHRpcCA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbW91c2VvdmVyTGVnZW5kKCkge1xuICAgIHRoaXMuc2hvd01vcmVUb29sdGlwID0gdHJ1ZTtcbiAgfVxuXG4gIG1vdXNlbGVhdmVMZWdlbmQoKSB7XG4gICAgdGhpcy5zaG93TW9yZVRvb2x0aXAgPSBmYWxzZTtcbiAgfVxuXG4gIC8vU2luY2Ugc2Nyb2xsYmFyIHNpemUgZGVwZW5lZHMgb24gYnJvd3Nlciwgd2UgaGF2ZSB0byB1c2UgYSBtZXRob2QgbGlrZSB0aGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3Qgc2Nyb2xsYmFyIHRoaWNrbmVzc1xuICBtZWFzdXJlU2Nyb2xsYmFyVGhpY2tuZXNzKCkge1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgZGl2LnN0eWxlLndpZHRoID0gJzEwMHB4JztcbiAgICBkaXYuc3R5bGUuaGVpZ2h0ID0gJzEwMHB4JztcbiAgICBkaXYuc3R5bGUub3ZlcmZsb3cgPSAnc2Nyb2xsJztcbiAgICBkaXYuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGRpdi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7XG5cbiAgICBjb25zdCB0aGlja25lc3MgPSB7XG4gICAgICB2ZXJ0aWNhbDogZGl2Lm9mZnNldFdpZHRoIC0gZGl2LmNsaWVudFdpZHRoLFxuICAgICAgaG9yaXpvbnRhbDogZGl2Lm9mZnNldEhlaWdodCAtIGRpdi5jbGllbnRIZWlnaHQsXG4gICAgfTtcblxuICAgIGRpdi5yZW1vdmUoKTtcbiAgICByZXR1cm4gdGhpY2tuZXNzO1xuICB9XG5cbiAgZ2V0U3ViY29udGFpbmVySGVpZ2h0KGRhdGE6IERyYXdEYXRhIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmhlaWdodH1weGA7XG4gICAgfVxuICAgIGxldCBoZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICBpZiAoXG4gICAgICBkYXRhLmNoYXJ0SGVpZ2h0IDwgdGhpcy5oZWlnaHQgJiZcbiAgICAgIGRhdGEudmVydGljYWxDb250YWluZXJTY2FsZSA9PT0gJ3NocmluaydcbiAgICApIHtcbiAgICAgIC8vU2hyaW5raW5nIHRvIGZpdCBjb250ZW50LCBidXQgYWNjb3VudGluZyBmb3IgcG90ZW50aWFsIHNjcm9sbGJhcnNcbiAgICAgIGNvbnN0IGhvcml6b250YWxTY3JvbGxEZXRlY3RlZCA9IGRhdGEuY2hhcnRXaWR0aCA+IHRoaXMud2lkdGg7XG4gICAgICBjb25zdCBzY3JvbGxiYXIgPSB0aGlzLm1lYXN1cmVTY3JvbGxiYXJUaGlja25lc3MoKTtcbiAgICAgIGhlaWdodCA9IE1hdGgubWluKFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIGRhdGEuY2hhcnRIZWlnaHQgK1xuICAgICAgICAgIChob3Jpem9udGFsU2Nyb2xsRGV0ZWN0ZWQgPyBzY3JvbGxiYXIuaG9yaXpvbnRhbCA6IDApLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke2hlaWdodH1weGA7XG4gIH1cblxuICBnZXRTdWJjb250YWluZXJXaWR0aChkYXRhOiBEcmF3RGF0YSB8IG51bGwpOiBzdHJpbmcge1xuICAgIGlmIChkYXRhID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy53aWR0aH1weGA7XG4gICAgfVxuICAgIGxldCB3aWR0aCA9IHRoaXMud2lkdGg7XG4gICAgaWYgKFxuICAgICAgZGF0YS5jaGFydFdpZHRoIDwgdGhpcy53aWR0aCAmJlxuICAgICAgZGF0YS5ob3Jpem9udGFsQ29udGFpbmVyU2NhbGUgPT09ICdzaHJpbmsnXG4gICAgKSB7XG4gICAgICAvL1Nocmlua2luZyB0byBmaXQgY29udGVudCwgYnV0IGFjY291bnRpbmcgZm9yIHBvdGVudGlhbCBzY3JvbGxiYXJzXG4gICAgICBjb25zdCB2ZXJ0aWNhbFNjcm9sbERldGVjdGVkID0gZGF0YS5jaGFydEhlaWdodCA+IHRoaXMuaGVpZ2h0O1xuICAgICAgY29uc3Qgc2Nyb2xsYmFyID0gdGhpcy5tZWFzdXJlU2Nyb2xsYmFyVGhpY2tuZXNzKCk7XG4gICAgICB3aWR0aCA9IE1hdGgubWluKFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgZGF0YS5jaGFydFdpZHRoICsgKHZlcnRpY2FsU2Nyb2xsRGV0ZWN0ZWQgPyBzY3JvbGxiYXIudmVydGljYWwgOiAwKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBgJHt3aWR0aH1weGA7XG4gIH1cblxuICBnZXRCb3R0b21MYWJlbFkoZGF0YTogQ2hhcnQuUmVuZGVyZWRDaGFydCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIGRhdGEuY2hhcnRIZWlnaHQgLVxuICAgICAgKGRhdGEuY2hhcnRTaXppbmdWYWx1ZXMuYm90dG9tUGFkZGluZyAtIGRhdGEuY2hhcnRTaXppbmdWYWx1ZXMuZm9udFNpemUpIC9cbiAgICAgICAgMlxuICAgICk7XG4gIH1cblxuICBnZXRGb250U2l6ZShkYXRhOiBDaGFydC5SZW5kZXJlZENoYXJ0IHwgbnVsbCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2hhcnRTaXppbmdGb250U2l6ZSA9IGRhdGE/LmNoYXJ0U2l6aW5nVmFsdWVzLmZvbnRTaXplO1xuICAgIGlmIChjaGFydFNpemluZ0ZvbnRTaXplICYmIGNoYXJ0U2l6aW5nRm9udFNpemUgPiAwKSB7XG4gICAgICByZXR1cm4gY2hhcnRTaXppbmdGb250U2l6ZS50b1N0cmluZygpLmNvbmNhdCgncHgnKTtcbiAgICB9XG4gICAgcmV0dXJuIENoYXJ0LkRFRkFVTFRfRk9OVF9TSVpFLnRvU3RyaW5nKCkuY29uY2F0KCdweCcpO1xuICB9XG5cbiAgY2hlY2tGb3JOb25EaXNwbGF5U3RhdGUoZGF0YTogRHJhd0RhdGEgfCBudWxsKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgZW1wdHkgPVxuICAgICAgZGF0YSA9PT0gbnVsbCB8fFxuICAgICAgKGRhdGEuZGF0YS54Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLmNvbmZpZy50eXBlICE9PSAnZG9udXQnKSB8fFxuICAgICAgZGF0YS5kYXRhLnlzLmxlbmd0aCA9PT0gMDtcbiAgICBpZiAoZW1wdHkpIHtcbiAgICAgIHJldHVybiAnemVyb1N0YXRlJztcbiAgICB9XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5jaGFydEVycm9yID09PSAnc2l6aW5nJykge1xuICAgICAgcmV0dXJuICdzaXppbmdFcnJvclN0YXRlJztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJjb250YWluZXJcIlxuICAocml2Q2xpZW50U2l6ZSk9XCJ3aWR0aCA9ICRldmVudC53aWR0aFwiXG4gICpuZ0lmPVwieyBkOiBkcmF3RGF0YSQgfCBhc3luYyB9IGFzIHZtXCJcbiAgW3N0eWxlLi0tb3ZlcnJpZGUtZm9udC1zaXplXT1cImdldEZvbnRTaXplKHZtLmQpXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICAhY2hlY2tGb3JOb25EaXNwbGF5U3RhdGUodm0uZCkgJiYgKGRyYXdEYXRhJCB8IGFzeW5jKTtcbiAgICAgIGxldCBkO1xuICAgICAgZWxzZTogbm9uRGlzcGxheVN0YXRlXG4gICAgXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIChtb3VzZW1vdmUpPVwibW91c2Vtb3ZlKCRldmVudCwgZC5ob3ZlcilcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwibW91c2VsZWF2ZSgkZXZlbnQpXCJcbiAgICAgIChjbGljayk9XCJjbGljaygpXCJcbiAgICAgICNjb250YWluZXJcbiAgICAgIGNsYXNzPVwic3ViLWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuY2xpY2thYmxlXT1cImlzSG92ZXJDbGlja2FibGVcIlxuICAgICAgdGFiSW5kZXg9XCIwXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2RvbnV0LWNvbnRhaW5lcic6IGNvbmZpZy50eXBlID09PSAnZG9udXQnIH1cIlxuICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICBoZWlnaHQ6IGdldFN1YmNvbnRhaW5lckhlaWdodChkKSxcbiAgICAgICAgd2lkdGg6IGdldFN1YmNvbnRhaW5lcldpZHRoKGQpXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8c3ZnOnN2Z1xuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgW2F0dHIudmlld0JveF09XCJkLnZpZXdCb3hcIlxuICAgICAgICBbYXR0ci5oZWlnaHRdPVwiZC5jaGFydEhlaWdodFwiXG4gICAgICAgIFthdHRyLndpZHRoXT1cImQuY2hhcnRXaWR0aFwiXG4gICAgICA+XG4gICAgICAgIDxkZWZzPlxuICAgICAgICAgIDwhLS0gU3RyaXBlIHBhdHRlcm4gLS0+XG4gICAgICAgICAgPHBhdHRlcm5cbiAgICAgICAgICAgIGlkPVwic3RyaXBlc1wiXG4gICAgICAgICAgICB4PVwiMFwiXG4gICAgICAgICAgICB5PVwiMFwiXG4gICAgICAgICAgICBbYXR0ci53aWR0aF09XCIxMFwiXG4gICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiMTBcIlxuICAgICAgICAgICAgcGF0dGVyblVuaXRzPVwidXNlclNwYWNlT25Vc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsaW5lXG4gICAgICAgICAgICAgIFthdHRyLngxXT1cIjBcIlxuICAgICAgICAgICAgICBbYXR0ci55MV09XCIxMFwiXG4gICAgICAgICAgICAgIFthdHRyLngyXT1cIjEwXCJcbiAgICAgICAgICAgICAgW2F0dHIueTJdPVwiMFwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cInZhcigtLXdoaXRlLTEwMClcIlxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxXCJcbiAgICAgICAgICAgID48L2xpbmU+XG4gICAgICAgICAgPC9wYXR0ZXJuPlxuICAgICAgICA8L2RlZnM+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGNvbmZpZy50eXBlID09PSAnaG9yaXpvbnRhbC1iYXInKVwiPlxuICAgICAgICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueFRpY2tzXCIgdGV4dC1hbmNob3I9XCJtaWRkbGVcIj5cbiAgICAgICAgICAgIDx0ZXh0XG4gICAgICAgICAgICAgIGNsYXNzPVwidGljay1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLnhdPVwidGljay54XCJcbiAgICAgICAgICAgICAgW2F0dHIueV09XCJnZXRCb3R0b21MYWJlbFkoZClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0aWNrLmxhYmVsIH19XG4gICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy50eXBlID09PSAnaG9yaXpvbnRhbC1iYXInXCI+XG4gICAgICAgICAgPGcgKm5nRm9yPVwibGV0IHRpY2sgb2YgZC54VGlja3NcIiB0ZXh0LWFuY2hvcj1cImxlZnRcIj5cbiAgICAgICAgICAgIDx0ZXh0XG4gICAgICAgICAgICAgIGNsYXNzPVwidGljay1sYWJlbFwiXG4gICAgICAgICAgICAgIFthdHRyLnhdPVwidGljay54XCJcbiAgICAgICAgICAgICAgW2F0dHIueV09XCJkLmNoYXJ0U2l6aW5nVmFsdWVzLmZvbnRTaXplXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGljay5sYWJlbCB9fVxuICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgPGxpbmVcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0aWNrLWxpbmVcIlxuICAgICAgICAgICAgICBbYXR0ci54MV09XCJ0aWNrLnhcIlxuICAgICAgICAgICAgICBbYXR0ci54Ml09XCJ0aWNrLnhcIlxuICAgICAgICAgICAgICB5MT1cIjBcIlxuICAgICAgICAgICAgICBbYXR0ci55Ml09XCJkLmNoYXJ0SGVpZ2h0XCJcbiAgICAgICAgICAgID48L2xpbmU+XG4gICAgICAgICAgICA8dGV4dFxuICAgICAgICAgICAgICAqbmdJZj1cInRpY2suc2Vjb25kYXJ5TGFiZWxcIlxuICAgICAgICAgICAgICBjbGFzcz1cInRpY2stbGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cInRpY2sueFwiXG4gICAgICAgICAgICAgIFthdHRyLnldPVwiZ2V0Qm90dG9tTGFiZWxZKGQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGljay5zZWNvbmRhcnlMYWJlbCB9fVxuICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueVRpY2tzXCI+XG4gICAgICAgICAgPGxpbmVcbiAgICAgICAgICAgICpuZ0lmPVwiIShjb25maWcudHlwZSA9PT0gJ2hvcml6b250YWwtYmFyJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0aWNrLWxpbmVcIlxuICAgICAgICAgICAgW2F0dHIueTFdPVwidGljay55XCJcbiAgICAgICAgICAgIFthdHRyLnkyXT1cInRpY2sueVwiXG4gICAgICAgICAgICB4MT1cIjBcIlxuICAgICAgICAgICAgW2F0dHIueDJdPVwiZC5jaGFydFdpZHRoXCJcbiAgICAgICAgICA+PC9saW5lPlxuICAgICAgICAgIDx0ZXh0XG4gICAgICAgICAgICByaXZTVkdUZXh0VHJ1bmNhdGVcbiAgICAgICAgICAgIFt0ZXh0XT1cInRpY2subGFiZWxcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIlxuICAgICAgICAgICAgICBjb25maWcudHlwZSA9PT0gJ2hvcml6b250YWwtYmFyJ1xuICAgICAgICAgICAgICAgID8gZC5jaGFydFNpemluZ1ZhbHVlcy5sZWZ0QnVja2V0TGFiZWxcbiAgICAgICAgICAgICAgICA6IGQuY2hhcnRTaXppbmdWYWx1ZXMubGVmdFBhZGRpbmdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cInRpY2stbGFiZWxcIlxuICAgICAgICAgICAgW2F0dHIueV09XCJ0aWNrLnlcIlxuICAgICAgICAgICAgW2F0dHIueF09XCIwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB0aWNrLmxhYmVsIH19XG4gICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgIDx0ZXh0XG4gICAgICAgICAgICAqbmdJZj1cInRpY2suc2Vjb25kYXJ5TGFiZWxcIlxuICAgICAgICAgICAgcml2U1ZHVGV4dFRydW5jYXRlXG4gICAgICAgICAgICBbdGV4dF09XCJ0aWNrLnNlY29uZGFyeUxhYmVsXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCJkLmNoYXJ0U2l6aW5nVmFsdWVzLnJpZ2h0UGFkZGluZ1wiXG4gICAgICAgICAgICBjbGFzcz1cInRpY2stbGFiZWxcIlxuICAgICAgICAgICAgW2F0dHIueV09XCJ0aWNrLnlcIlxuICAgICAgICAgICAgW2F0dHIueF09XCJkLmNoYXJ0V2lkdGhcIlxuICAgICAgICAgICAgdGV4dC1hbmNob3I9XCJlbmRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHRpY2suc2Vjb25kYXJ5TGFiZWwgfX1cbiAgICAgICAgICA8L3RleHQ+XG4gICAgICAgIDwvZz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhvdmVyIGFzIGhvdmVyRGF0YVwiPlxuICAgICAgICAgIDxnICpuZ0lmPVwiY29uZmlnLnR5cGUgIT09ICdob3Jpem9udGFsLWJhcidcIj5cbiAgICAgICAgICAgIDxsaW5lXG4gICAgICAgICAgICAgIGNsYXNzPVwidGljay1saW5lXCJcbiAgICAgICAgICAgICAgW2F0dHIueDFdPVwiaG92ZXJEYXRhPy54XCJcbiAgICAgICAgICAgICAgW2F0dHIueDJdPVwiaG92ZXJEYXRhPy54XCJcbiAgICAgICAgICAgICAgeTE9XCIwXCJcbiAgICAgICAgICAgICAgW2F0dHIueTJdPVwiZC5jaGFydEhlaWdodFwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICBzdHJva2UtZGFzaGFycmF5PVwiNFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxnICpuZ0Zvcj1cImxldCBiYXIgb2YgZC5iYXJzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVjdCBvZiBiYXI7IGxldCBqID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxkZWZzICpuZ0lmPVwicmVjdC5wYXR0ZXJuID09PSAnZG90cydcIj5cbiAgICAgICAgICAgICAgPHBhdHRlcm5cbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCInZG90cy0nICsgaSArICctJyArIGpcIlxuICAgICAgICAgICAgICAgIHBhdHRlcm5Vbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci54XT1cInJlY3QueFwiXG4gICAgICAgICAgICAgICAgW2F0dHIueV09XCJyZWN0LnlcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiNFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiNFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgICAgICBjeD1cIjJcIlxuICAgICAgICAgICAgICAgICAgY3k9XCIyXCJcbiAgICAgICAgICAgICAgICAgIHI9XCIxLjVcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJ2YXJDb2xvcihkLmNvbG9ycywgaSlcIlxuICAgICAgICAgICAgICAgID48L2NpcmNsZT5cbiAgICAgICAgICAgICAgPC9wYXR0ZXJuPlxuICAgICAgICAgICAgPC9kZWZzPlxuXG4gICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICBbYXR0ci54XT1cInJlY3QueFwiXG4gICAgICAgICAgICAgIFthdHRyLnldPVwicmVjdC55XCJcbiAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwicmVjdC53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJyZWN0LmhlaWdodFwiXG4gICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwiXG4gICAgICAgICAgICAgICAgcmVjdC5wYXR0ZXJuID09PSAnZG90cydcbiAgICAgICAgICAgICAgICAgID8gJ3VybCgjZG90cy0nICsgaSArICctJyArIGogKyAnKSdcbiAgICAgICAgICAgICAgICAgIDogdmFyQ29sb3IoZC5jb2xvcnMsIGkpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9yZWN0PlxuICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZWN0LnBhdHRlcm4gPT09ICdzdHJpcGVkJ1wiXG4gICAgICAgICAgICAgIFthdHRyLnhdPVwicmVjdC54XCJcbiAgICAgICAgICAgICAgW2F0dHIueV09XCJyZWN0LnlcIlxuICAgICAgICAgICAgICBbYXR0ci53aWR0aF09XCJyZWN0LndpZHRoXCJcbiAgICAgICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cInJlY3QuaGVpZ2h0XCJcbiAgICAgICAgICAgICAgZmlsbD1cInVybCgjc3RyaXBlcylcIlxuICAgICAgICAgICAgPjwvcmVjdD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9nPlxuICAgICAgICA8ZyAqbmdGb3I9XCJsZXQgYmFyIG9mIGQuaG9yaXpvbnRhbEJhcnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbmRCYXIgb2YgYmFyOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgICA8ZGVmcyAqbmdJZj1cImluZEJhci5wYXR0ZXJuID09PSAnZG90cydcIj5cbiAgICAgICAgICAgICAgPHBhdHRlcm5cbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCInZG90cy0nICsgaSArICctJyArIGpcIlxuICAgICAgICAgICAgICAgIHBhdHRlcm5Vbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci54XT1cImluZEJhci54XCJcbiAgICAgICAgICAgICAgICBbYXR0ci55XT1cImluZEJhci55XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjRcIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICAgICAgY3g9XCIyXCJcbiAgICAgICAgICAgICAgICAgIGN5PVwiMlwiXG4gICAgICAgICAgICAgICAgICByPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmFyQ29sb3IoZC5jb2xvcnMsIGkpXCJcbiAgICAgICAgICAgICAgICA+PC9jaXJjbGU+XG4gICAgICAgICAgICAgIDwvcGF0dGVybj5cbiAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIFthdHRyLmRdPVwiaW5kQmFyLmhvcml6b250YWxCYXJcIlxuICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cIlxuICAgICAgICAgICAgICAgIGluZEJhci5wYXR0ZXJuID09PSAnZG90cydcbiAgICAgICAgICAgICAgICAgID8gJ3VybCgjZG90cy0nICsgaSArICctJyArIGogKyAnKSdcbiAgICAgICAgICAgICAgICAgIDogdmFyQ29sb3IoZC5jb2xvcnMsIGkpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJcbiAgICAgICAgICAgICAgICBpbmRCYXIucGF0dGVybiA9PT0gJ2RvdHMnID8gJ25vbmUnIDogdmFyQ29sb3IoZC5jb2xvcnMsIGkpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJpbmRCYXIucGF0dGVybiA9PT0gJ2RvdHMnID8gMCA6IDJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICpuZ0lmPVwiaW5kQmFyLnBhdHRlcm4gPT09ICdzdHJpcGVkJ1wiXG4gICAgICAgICAgICAgIFthdHRyLmRdPVwiaW5kQmFyLmhvcml6b250YWxCYXJcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwidmFyQ29sb3IoZC5jb2xvcnMsIGkpXCJcbiAgICAgICAgICAgICAgZmlsbD1cInVybCgjc3RyaXBlcylcIlxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZz5cbiAgICAgICAgPGcgKm5nRm9yPVwibGV0IGdyYWRpZW50IG9mIGQuZ3JhZGllbnRzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVjdCBvZiBncmFkaWVudDsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudFxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIidncmFkLScgKyBpICsgJy0nICsgalwiXG4gICAgICAgICAgICAgICAgeDE9XCIwXCJcbiAgICAgICAgICAgICAgICB5MT1cIjBcIlxuICAgICAgICAgICAgICAgIHgyPVwiMFwiXG4gICAgICAgICAgICAgICAgeTI9XCIxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJ2YXJDb2xvcihkLmNvbG9ycywgaSlcIiAvPlxuICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjEwMCVcIiBzdG9wLWNvbG9yPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgW2F0dHIueF09XCJyZWN0LnhcIlxuICAgICAgICAgICAgICBbYXR0ci55XT1cInJlY3QueVwiXG4gICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cInJlY3Qud2lkdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwicmVjdC5oZWlnaHRcIlxuICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cIid1cmwoI2dyYWQtJyArIGkgKyAnLScgKyBqICsgJyknXCJcbiAgICAgICAgICAgICAgb3BhY2l0eT1cIjAuNFwiXG4gICAgICAgICAgICA+PC9yZWN0PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2c+XG4gICAgICAgIDxnICpuZ0Zvcj1cImxldCBsaW5lIG9mIGQubGluZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgW2F0dHIuZF09XCJsaW5lLmxpbmVcIlxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInZhckNvbG9yKGQuY29sb3JzLCBpKVwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZS1saW5lY2FwXT1cIlxuICAgICAgICAgICAgICBsaW5lLnBhdHRlcm4gPT09ICdkb3RzJyA/ICdyb3VuZCcgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5zdHJva2UtbGluZWpvaW5dPVwiXG4gICAgICAgICAgICAgIGxpbmUucGF0dGVybiA9PT0gJ2RvdHMnID8gJ3JvdW5kJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwiXG4gICAgICAgICAgICAgIGxpbmUucGF0dGVybiA9PT0gJ3N0cmlwZWQnXG4gICAgICAgICAgICAgICAgPyAnMTAgMTAnXG4gICAgICAgICAgICAgICAgOiBsaW5lLnBhdHRlcm4gPT09ICdkb3RzJ1xuICAgICAgICAgICAgICAgID8gJzAuMjUgNydcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICA8L2c+XG4gICAgICAgIDxnICpuZ0Zvcj1cImxldCBsaW5lU2luZ2xlUG9pbnRGYWxsYmFjayBvZiBkLmNpcmNsZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICBjbGFzcz1cIm1hcmtlclwiXG4gICAgICAgICAgICBbYXR0ci5jeF09XCJsaW5lU2luZ2xlUG9pbnRGYWxsYmFjay5jeFwiXG4gICAgICAgICAgICBbYXR0ci5jeV09XCJsaW5lU2luZ2xlUG9pbnRGYWxsYmFjay5jeVwiXG4gICAgICAgICAgICByPVwiMy41XCJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInZhckNvbG9yKGQuY29sb3JzLCBpKVwiXG4gICAgICAgICAgPjwvY2lyY2xlPlxuICAgICAgICA8L2c+XG4gICAgICAgIDxnICpuZ0Zvcj1cImxldCBsaW5lIG9mIGQubGluZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaG92ZXIgYXMgaG92ZXJEYXRhXCI+XG4gICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgIGNsYXNzPVwibWFya2VyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuZ3JvdXBlZFRvb2x0aXAgfHwgaSA9PT0gaG92ZXJEYXRhPy52aXNpYmxlWUluZGV4XCJcbiAgICAgICAgICAgICAgW2F0dHIuY3hdPVwiaG92ZXJEYXRhPy54XCJcbiAgICAgICAgICAgICAgW2F0dHIuY3ldPVwiaG92ZXJEYXRhPy55cz8uW2ldXCJcbiAgICAgICAgICAgICAgcj1cIjMuNVwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwidmFyQ29sb3IoZC5jb2xvcnMsIGkpXCJcbiAgICAgICAgICAgID48L2NpcmNsZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9nPlxuICAgICAgICA8ZyAqbmdGb3I9XCJsZXQgYXJlYSBvZiBkLmFyZWFzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJhcmVhLmFyZWFcIiBbYXR0ci5maWxsXT1cInZhckNvbG9yKGQuY29sb3JzLCBpKVwiPjwvcGF0aD5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgKm5nSWY9XCJhcmVhLnBhdHRlcm4gPT09ICdzdHJpcGVkJ1wiXG4gICAgICAgICAgICBbYXR0ci5kXT1cImFyZWEuYXJlYVwiXG4gICAgICAgICAgICBmaWxsPVwidXJsKCNzdHJpcGVzKVwiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9nPlxuICAgICAgICA8ZyAqbmdGb3I9XCJsZXQgYXJlYSBvZiBkLmFyZWFzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhvdmVyIGFzIGhvdmVyRGF0YVwiPlxuICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICBjbGFzcz1cIm1hcmtlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmdyb3VwZWRUb29sdGlwIHx8IGkgPT09IGhvdmVyRGF0YT8udmlzaWJsZVlJbmRleFwiXG4gICAgICAgICAgICAgIFthdHRyLmN4XT1cImhvdmVyRGF0YT8ueFwiXG4gICAgICAgICAgICAgIFthdHRyLmN5XT1cImhvdmVyRGF0YT8ueXM/LltpXVwiXG4gICAgICAgICAgICAgIHI9XCIzLjVcIlxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInZhckNvbG9yKGQuY29sb3JzLCBpKVwiXG4gICAgICAgICAgICA+PC9jaXJjbGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZz5cbiAgICAgICAgPGcgKm5nRm9yPVwibGV0IHdMaW5lIG9mIGQud2F0ZXJmYWxsTGluZXNcIj5cbiAgICAgICAgICA8bGluZVxuICAgICAgICAgICAgY2xhc3M9XCJ3YXRlcmZhbGwtbGluZVwiXG4gICAgICAgICAgICBbYXR0ci54MV09XCJ3TGluZS54MVwiXG4gICAgICAgICAgICBbYXR0ci54Ml09XCJ3TGluZS54MlwiXG4gICAgICAgICAgICBbYXR0ci55MV09XCJ3TGluZS55MVwiXG4gICAgICAgICAgICBbYXR0ci55Ml09XCJ3TGluZS55MlwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxXCJcbiAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk9XCI2XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2c+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHBhdGggb2YgZC5hcmNzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBbYXR0ci5kXT1cInBhdGhcIlxuICAgICAgICAgIFthdHRyLmZpbGxdPVwidmFyQ29sb3IoZC5jb2xvcnMsIGkpXCJcbiAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPGcgKm5nRm9yPVwibGV0IGRhdGFMYWJlbCBvZiBkLmRhdGFMYWJlbHM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICA8dGV4dFxuICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuc2hvd0RhdGFMYWJlbHMgJiYgZGF0YUxhYmVsLmxhYmVsXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1sYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci55XT1cImRhdGFMYWJlbC55UG9zXCJcbiAgICAgICAgICAgIFthdHRyLnhdPVwiZGF0YUxhYmVsLnhQb3NcIlxuICAgICAgICAgICAgW2F0dHIudGV4dC1hbmNob3JdPVwiZGF0YUxhYmVsLmFuY2hvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZGF0YUxhYmVsLmxhYmVsIH19XG4gICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgIDxsaW5lXG4gICAgICAgICAgICAqbmdJZj1cImRhdGFMYWJlbC5saW5lICYmIGNvbmZpZy5zaG93RGF0YUxhYmVsc1wiXG4gICAgICAgICAgICBbYXR0ci55MV09XCJkYXRhTGFiZWwubGluZS55MVwiXG4gICAgICAgICAgICBbYXR0ci55Ml09XCJkYXRhTGFiZWwubGluZS55MlwiXG4gICAgICAgICAgICBbYXR0ci54MV09XCJkYXRhTGFiZWwubGluZS54MVwiXG4gICAgICAgICAgICBbYXR0ci54Ml09XCJkYXRhTGFiZWwubGluZS54MlwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ2YXJDb2xvcihkLmNvbG9ycywgaSlcIlxuICAgICAgICAgID48L2xpbmU+XG4gICAgICAgIDwvZz5cbiAgICAgIDwvc3ZnOnN2Zz5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb25maWcudHlwZSA9PT0gJ2RvbnV0J1wiIGNsYXNzPVwiZG9udXQtZGlzcGxheVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9udXQtdmFsdWVcIiBbbmdDbGFzc109XCJjb25maWcuZG9udXREaXNwbGF5SW5mby5zaXplXCI+XG4gICAgICAgICAge3sgY29uZmlnLmRvbnV0RGlzcGxheUluZm8uZGlzcGxheVZhbHVlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG9udXQtbGFiZWxcIj5cbiAgICAgICAgICB7eyBjb25maWcuZG9udXREaXNwbGF5SW5mby5kaXNwbGF5TGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJob3ZlciBhcyBob3ZlckRhdGFcIj5cbiAgICAgICAgPHJpdi1jYWxsb3V0XG4gICAgICAgICAgKnJpdi1vdmVybGF5XG4gICAgICAgICAgW2FuY2hvcl09XCJcbiAgICAgICAgICAgIGhvdmVyRGF0YT8udG9vbHRpcD8uYW5jaG9yID8gaG92ZXJEYXRhLnRvb2x0aXAuYW5jaG9yIDogbnVsbFxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2lzTW9kYWxdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCInY2VudGVyLXJpZ2h0J1wiXG4gICAgICAgICAgW3RoZW1lXT1cIidsaWdodCdcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvb2x0aXBUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0VG9vbHRpcFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIHhJbmRleDogaG92ZXJEYXRhPy54SW5kZXgsXG4gICAgICAgICAgICAgICAgeUluZGV4OiBob3ZlckRhdGE/LnlJbmRleCxcbiAgICAgICAgICAgICAgICBpc1N1cHBWYWx1ZTogaG92ZXJEYXRhPy5pc1N1cHBWYWx1ZSxcbiAgICAgICAgICAgICAgICBzdXBwWUluZGV4OiBob3ZlckRhdGE/LnN1cHBZSW5kZXhcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VG9vbHRpcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImhvdmVyRGF0YT8udG9vbHRpcD8uZGF0ZVwiIGNsYXNzPVwiY2FsbG91dC1yb3dcIj5cbiAgICAgICAgICAgICAgICB7eyBob3ZlckRhdGE/LnRvb2x0aXA/LmRhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhbGxvdXQtcm93XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbWV0cmljIG9mIGhvdmVyRGF0YT8udG9vbHRpcD8ubWV0cmljc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlcmllcy1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgPHJpdi1sZWdlbmQtaXRlbVxuICAgICAgICAgICAgICAgICAgICBbY29sb3JUb2tlbl09XCJtZXRyaWMuY29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwibWV0cmljLnBhdHRlcm4gfHwgJ3NvbGlkJ1wiXG4gICAgICAgICAgICAgICAgICA+PC9yaXYtbGVnZW5kLWl0ZW0+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBtZXRyaWMubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IG1ldHJpYy52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3Jpdi1jYWxsb3V0PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGxlZ2VuZD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaXJzdEhpZGRlbkxlZ2VuZEl0ZW1JbmRleCQgfCBhc3luYzsgbGV0IGZpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZC5kYXRhLnlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPHJpdi1sZWdlbmQtaXRlbVxuICAgICAgICAgICAgKm5nSWY9XCJpIDwgZmkuZGF0YUluZGV4ICYmIGl0ZW0uc2hvd0xlZ2VuZEl0ZW0gIT09IGZhbHNlXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJpdGVtLnBhdHRlcm4gfHwgJ3NvbGlkJ1wiXG4gICAgICAgICAgICBbdmlzaWJpbGl0eV09XCJpdGVtLmhpZGRlbiA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCJcbiAgICAgICAgICAgIFtjbGlja2FibGVdPVwiY29uZmlnLmFsbG93TGVnZW5kVG9nZ2xlXCJcbiAgICAgICAgICAgIFtzaG93Q2hlY2tXaGVuQ2xpY2thYmxlXT1cIml0ZW0ucGF0dGVybiAhPT0gJ2RvdHMnXCJcbiAgICAgICAgICAgIFtjb2xvclRva2VuXT1cImdldEl0ZW1Db2xvcihpdGVtLCBpKVwiXG4gICAgICAgICAgICAoaXRlbUNsaWNrKT1cInRvZ2dsZUxlZ2VuZChpdGVtLCBpKVwiXG4gICAgICAgICAgPjwvcml2LWxlZ2VuZC1pdGVtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGQuZGF0YS5zdXBwbGVtZW50YXJ5WXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPHJpdi1sZWdlbmQtaXRlbVxuICAgICAgICAgICAgKm5nSWY9XCJpIDwgZmkuc3VwcEluZGV4ICYmIGl0ZW0uc2hvd0xlZ2VuZEl0ZW0gIT09IGZhbHNlXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJpdGVtLnBhdHRlcm4gfHwgJ3NvbGlkJ1wiXG4gICAgICAgICAgICBbdmlzaWJpbGl0eV09XCJpdGVtLmhpZGRlbiA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCJcbiAgICAgICAgICAgIFtjbGlja2FibGVdPVwiY29uZmlnLmFsbG93TGVnZW5kVG9nZ2xlXCJcbiAgICAgICAgICAgIFtzaG93Q2hlY2tXaGVuQ2xpY2thYmxlXT1cIml0ZW0ucGF0dGVybiAhPT0gJ2RvdHMnXCJcbiAgICAgICAgICAgIFtjb2xvclRva2VuXT1cImdldEl0ZW1Db2xvcihpdGVtLCBpKVwiXG4gICAgICAgICAgICAoaXRlbUNsaWNrKT1cInRvZ2dsZUxlZ2VuZChpdGVtLCBpKVwiXG4gICAgICAgICAgPjwvcml2LWxlZ2VuZC1pdGVtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICNtb3JlVGV4dENvbnRhaW5lclxuICAgICAgICAgIGNsYXNzPVwibW9yZS10ZXh0LWNvbnRhaW5lclwiXG4gICAgICAgICAgKG1vdXNlb3Zlcik9XCJtb3VzZW92ZXJMZWdlbmQoKVwiXG4gICAgICAgICAgKG1vdXNlbGVhdmUpPVwibW91c2VsZWF2ZUxlZ2VuZCgpXCJcbiAgICAgICAgICAoY2xpY2spPVwibW9yZUNsaWNrKClcIlxuICAgICAgICAgICpuZ0lmPVwiZmkuaGlkZGVuQ291bnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gcml2TGluayBjbGFzcz1cIm1vcmUtdGV4dFwiPlxuICAgICAgICAgICAgK1xuICAgICAgICAgICAge3sgZmkuaGlkZGVuQ291bnQgfX0gbW9yZVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TW9yZVRvb2x0aXAgfHwgbG9ja1Nob3dNb3JlVG9vbHRpcFwiPlxuICAgICAgICAgIDxyaXYtY2FsbG91dFxuICAgICAgICAgICAgKnJpdi1vdmVybGF5XG4gICAgICAgICAgICBbYW5jaG9yXT1cIm1vcmVUZXh0Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50XCJcbiAgICAgICAgICAgIFtpc01vZGFsXT1cImxvY2tTaG93TW9yZVRvb2x0aXBcIlxuICAgICAgICAgICAgKGNsb3NlKT1cImNsb3NlSGFuZGxlcigpXCJcbiAgICAgICAgICAgIFtwcmVmZXJyZWRQb3NpdGlvbl09XCInYm90dG9tLXJpZ2h0J1wiXG4gICAgICAgICAgICBbdGhlbWVdPVwiJ2xpZ2h0J1wiXG4gICAgICAgICAgICBbc2hvd0NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkLmRhdGEueXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8cml2LWxlZ2VuZC1pdGVtXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImkgPj0gZmkuZGF0YUluZGV4ICYmIGl0ZW0uc2hvd0xlZ2VuZEl0ZW0gIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJpdGVtLnBhdHRlcm4gfHwgJ3NvbGlkJ1wiXG4gICAgICAgICAgICAgICAgICBbdmlzaWJpbGl0eV09XCJpdGVtLmhpZGRlbiA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCJcbiAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVdPVwiY29uZmlnLmFsbG93TGVnZW5kVG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgIFtzaG93Q2hlY2tXaGVuQ2xpY2thYmxlXT1cIml0ZW0ucGF0dGVybiAhPT0gJ2RvdHMnXCJcbiAgICAgICAgICAgICAgICAgIFtjb2xvclRva2VuXT1cImdldEl0ZW1Db2xvcihpdGVtLCBpKVwiXG4gICAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cInRvZ2dsZUxlZ2VuZChpdGVtLCBpKVwiXG4gICAgICAgICAgICAgICAgPjwvcml2LWxlZ2VuZC1pdGVtPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGQuZGF0YS5zdXBwbGVtZW50YXJ5WXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHJpdi1sZWdlbmQtaXRlbVxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpID49IGZpLnN1cHBJbmRleCAmJiBpdGVtLnNob3dMZWdlbmRJdGVtICE9PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiaXRlbS5wYXR0ZXJuIHx8ICdzb2xpZCdcIlxuICAgICAgICAgICAgICAgICAgW3Zpc2liaWxpdHldPVwiaXRlbS5oaWRkZW4gPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiXG4gICAgICAgICAgICAgICAgICBbY29sb3JUb2tlbl09XCJnZXRJdGVtQ29sb3IoaXRlbSwgaSlcIlxuICAgICAgICAgICAgICAgICAgW2NsaWNrYWJsZV09XCJjb25maWcuYWxsb3dMZWdlbmRUb2dnbGVcIlxuICAgICAgICAgICAgICAgICAgW3Nob3dDaGVja1doZW5DbGlja2FibGVdPVwiaXRlbS5wYXR0ZXJuICE9PSAnZG90cydcIlxuICAgICAgICAgICAgICAgICAgKGl0ZW1DbGljayk9XCJ0b2dnbGVMZWdlbmQoaXRlbSwgaSlcIlxuICAgICAgICAgICAgICAgID48L3Jpdi1sZWdlbmQtaXRlbT5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3Jpdi1jYWxsb3V0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbGVnZW5kPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI25vbkRpc3BsYXlTdGF0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoZWNrRm9yTm9uRGlzcGxheVN0YXRlKGRyYXdEYXRhJCB8IGFzeW5jKTsgbGV0IHR5cGVcIj5cbiAgICA8cml2LXplcm8tc3RhdGVcbiAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ3plcm9TdGF0ZSdcIlxuICAgICAgW21lc3NhZ2VdPVwiY29uZmlnLnplcm9TdGF0ZU1lc3NhZ2VcIlxuICAgID48L3Jpdi16ZXJvLXN0YXRlPlxuICAgIDxyaXYtemVyby1zdGF0ZVxuICAgICAgKm5nSWY9XCJ0eXBlID09PSAnc2l6aW5nRXJyb3JTdGF0ZSdcIlxuICAgICAgW21lc3NhZ2VdPVwiY29uZmlnLnNpemluZ0Vycm9yU3RhdGVNZXNzYWdlXCJcbiAgICA+PC9yaXYtemVyby1zdGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
397
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdmlzdWFsaXphdGlvbi9jaGFydC9jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILElBQUksRUFDSixTQUFTLEVBQ1QsT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7Ozs7OztBQVloQyxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUE2QixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWExQyx1QkFBa0IsR0FBRyxHQUFHLENBQUM7UUFDekIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsd0ZBQXdGO1FBRXhILFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQVV2RCxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFVaEMsbUtBQW1LO1FBQ25LLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBa0IzRCxhQUFRLEdBQWtCLElBQUks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LHVCQUF1QixDQUFDLE1BQU07d0dBS3ZCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDVSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUc5QixlQUFlO3NCQURkLFlBQVk7dUJBQUMsU0FBUztnQkF3RW5CLE1BQU07c0JBRFQsS0FBSztnQkFvQkYsSUFBSTtzQkFEUCxLQUFLO2dCQW1ITixZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIHNjYW4sXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJy4vY2hhcnQnO1xuXG50eXBlIERyYXdEYXRhID0ge1xuICBkYXRhOiBDaGFydC5EYXRhO1xuICB2aWV3Qm94OiBzdHJpbmc7XG59ICYgQ2hhcnQuUmVuZGVyZWRDaGFydDtcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lcj86IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ21vcmVUZXh0Q29udGFpbmVyJykgbW9yZVRleHRDb250YWluZXI/OiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGQoJ3Rvb2x0aXAnKVxuICB0b29sdGlwVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7XG4gICAgeEluZGV4OiBudW1iZXI7XG4gICAgeUluZGV4OiBudW1iZXI7XG4gICAgaXNTdXBwVmFsdWU/OiBib29sZWFuO1xuICAgIHN1cHBZSW5kZXg/OiBudW1iZXI7XG4gIH0+O1xuXG4gIHJlYWRvbmx5IERFRkFVTFRfSEVJR0hUX1ZBTCA9IDMwMDtcbiAgcmVhZG9ubHkgREVGQVVMVF9XSURUSF9WQUwgPSAwOyAvL1RoZXJlJ3MgYW4gYXV0b21hdGljIHJlc2l6ZXIgaW4gdGhlIGh0bWwgdGhhdCBoYW5kbGVzIG1hdGNoaW5nIHdpZHRoIHRvIGNvbnRhaW5lciBzaXplXG5cbiAgaGVpZ2h0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5ERUZBVUxUX0hFSUdIVF9WQUwpO1xuICBzZXQgaGVpZ2h0KHc6IG51bWJlcikge1xuICAgIGlmICh0aGlzLm92ZXJyaWRlSGVpZ2h0ID09PSBudWxsKSB7XG4gICAgICB0aGlzLmhlaWdodCQubmV4dCh3KTtcbiAgICB9XG4gIH1cbiAgZ2V0IGhlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWlnaHQkLnZhbHVlO1xuICB9XG5cbiAgd2lkdGgkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcbiAgc2V0IHdpZHRoKHc6IG51bWJlcikge1xuICAgIGlmICh0aGlzLm92ZXJyaWRlV2lkdGggPT09IG51bGwpIHtcbiAgICAgIHRoaXMud2lkdGgkLm5leHQodyk7XG4gICAgfVxuICB9XG4gIGdldCB3aWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy53aWR0aCQudmFsdWU7XG4gIH1cblxuICAvL1RoZXNlIG92ZXJyaWRlcyBoYW5kbGUgc2l0dWF0aW9ucyB3aGVyZSB0aGUgY2hhcnQgbmVlZHMgdG8gYmUgc2V0IHRvIGEgcGFydGljdWxhciBzaXplIHRoYXQgZG9lc24ndCBtYXRjaCB3aGF0IGl0IHdvdWxkIGF1dG9tYXRpY2FsbHkgc2NhbGUgdG8gYmFzZWQgb24gY29udGFpbmVyXG4gIG9sZEhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIG92ZXJyaWRlSGVpZ2h0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHNldCBvdmVycmlkZUhlaWdodCh3OiBudW1iZXIgfCBudWxsKSB7XG4gICAgaWYgKHcgIT09IG51bGwpIHtcbiAgICAgIHRoaXMub2xkSGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICB0aGlzLmhlaWdodCQubmV4dCh3KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub2xkSGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuaGVpZ2h0JC5uZXh0KHRoaXMub2xkSGVpZ2h0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGVpZ2h0JC5uZXh0KHRoaXMuREVGQVVMVF9IRUlHSFRfVkFMKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vdmVycmlkZUhlaWdodCQubmV4dCh3KTtcbiAgfVxuICBnZXQgb3ZlcnJpZGVIZWlnaHQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcnJpZGVIZWlnaHQkLnZhbHVlO1xuICB9XG5cbiAgb2xkV2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBvdmVycmlkZVdpZHRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHNldCBvdmVycmlkZVdpZHRoKHc6IG51bWJlciB8IG51bGwpIHtcbiAgICBpZiAodyAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5vbGRXaWR0aCA9IHRoaXMud2lkdGg7XG4gICAgICB0aGlzLndpZHRoJC5uZXh0KHcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vbGRXaWR0aCkge1xuICAgICAgICB0aGlzLndpZHRoJC5uZXh0KHRoaXMub2xkV2lkdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53aWR0aCQubmV4dCh0aGlzLkRFRkFVTFRfV0lEVEhfVkFMKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vdmVycmlkZVdpZHRoJC5uZXh0KHcpO1xuICB9XG4gIGdldCBvdmVycmlkZVdpZHRoKCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm92ZXJyaWRlV2lkdGgkLnZhbHVlO1xuICB9XG5cbiAgY29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hhcnQuQ29uZmlnPihDaGFydC5kZWZhdWx0Q29uZmlnKTtcbiAgQElucHV0KClcbiAgc2V0IGNvbmZpZyhjOiBDaGFydC5Db25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyQubmV4dChjKTtcbiAgfVxuICBnZXQgY29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyQudmFsdWU7XG4gIH1cblxuICBkYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hhcnQuRGF0YT4oe1xuICAgIHR5cGU6ICd0aW1lc2VyaWVzJyxcbiAgICB4OiBbXSxcbiAgICB5czogW10sXG4gIH0pO1xuXG4gIHByaXZhdGUgY29sb3JJbmRpY2VzID0gbmV3IE1hcDxcbiAgICBDaGFydC5EYXRhWSB8IENoYXJ0LlN1cHBsZW1lbnRhcnlEYXRhWSxcbiAgICBudW1iZXJcbiAgPigpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhKGQ6IENoYXJ0LkRhdGEpIHtcbiAgICB0aGlzLmRhdGEkLm5leHQoZCk7XG4gICAgdGhpcy5jb2xvckluZGljZXMgPSBDaGFydC5jYWxjdWxhdGVDb2xvckluZGljZXMoZCk7XG4gIH1cbiAgZ2V0IGRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YSQudmFsdWU7XG4gIH1cblxuICBnZXRJdGVtS2V5KFxuICAgIGl0ZW06IENoYXJ0LkRhdGFZIHwgQ2hhcnQuU3VwcGxlbWVudGFyeURhdGFZLFxuICAgIGluZGV4OiBudW1iZXIsXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdzdXBwbGVtZW50YWxJbmRleCcgaW4gaXRlbSA/IGBzdXBwLSR7aW5kZXh9YCA6IGB5LSR7aW5kZXh9YDtcbiAgfVxuXG4gIHRvZ2dsZUxlZ2VuZChpdGVtOiBDaGFydC5EYXRhWSB8IENoYXJ0LlN1cHBsZW1lbnRhcnlEYXRhWSwgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMudG9nZ2xlTGVnZW5kJC5uZXh0KHRoaXMuZ2V0SXRlbUtleShpdGVtLCBpbmRleCkpO1xuICB9XG5cbiAgdG9nZ2xlTGVnZW5kJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAvLyB0b2dnbGVkTGVnZW5kJCBpcyBqdXN0IGEgc2V0IG9mIGJvb2xlYW5cbiAgLy8gdmFsdWVzIGZvciB3aGljaCBsZWdlbmRzIGhhdmUgYmVlbiB0b2dnbGVkLlxuICAvLyBXZSBkb24ndCBrbm93IGlmIHRob3NlIGxlZ2VuZHMgd2hlcmUgYWxyZWFkeVxuICAvLyBoaWRkZW4gb3Igbm90LCB3ZSBqdXN0IGtub3cgd2hldGhlciB0aGV5IGhhdmVcbiAgLy8gYmVlbiB0b2dnbGVkLlxuICB0b2dnbGVkTGVnZW5kcyQgPSB0aGlzLnRvZ2dsZUxlZ2VuZCQucGlwZShcbiAgICBzY2FuPHN0cmluZywgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KFxuICAgICAgKGFjYywgdmFsdWUpID0+ICh7IC4uLmFjYywgW3ZhbHVlXTogIWFjY1t2YWx1ZV0gfSksXG4gICAgICB7fSxcbiAgICApLFxuICAgIHN0YXJ0V2l0aDxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pLFxuICApO1xuXG4gIGRyYXdEYXRhJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMud2lkdGgkLFxuICAgIHRoaXMuaGVpZ2h0JCxcbiAgICB0aGlzLmNvbmZpZyQsXG4gICAgdGhpcy5kYXRhJCxcbiAgICB0aGlzLnRvZ2dsZWRMZWdlbmRzJCxcbiAgXSkucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycmVudCkgPT4gaXNFcXVhbChwcmV2LCBjdXJyZW50KSksXG4gICAgbWFwKChbd2lkdGgsIGhlaWdodCwgY29uZmlnLCBkYXRhLCB0b2dnbGVkTGVnZW5kc10pID0+IHtcbiAgICAgIGlmICh3aWR0aCA9PT0gMCB8fCBoZWlnaHQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBoaWRkZW5EYXRhID0ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICB5czogZGF0YS55cy5tYXAoKHksIGluZGV4KSA9PiAoe1xuICAgICAgICAgIC4uLnksXG4gICAgICAgICAgLy8gaWYgdG9nZ2xlZCwgZmxpcCB0aGUgaGlkZGVuIGJvb2xlYW5cbiAgICAgICAgICBoaWRkZW46IHRvZ2dsZWRMZWdlbmRzW2B5LSR7aW5kZXh9YF0gPyAheS5oaWRkZW4gOiB5LmhpZGRlbixcbiAgICAgICAgfSkpLFxuICAgICAgICBzdXBwbGVtZW50YXJ5WXM6IGRhdGEuc3VwcGxlbWVudGFyeVlzPy5tYXAoKHksIGluZGV4KSA9PiAoe1xuICAgICAgICAgIC4uLnksXG4gICAgICAgICAgaGlkZGVuOiB0b2dnbGVkTGVnZW5kc1tgc3VwcC0ke2luZGV4fWBdID8gIXkuaGlkZGVuIDogeS5oaWRkZW4sXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG5cbiAgICAgIGxldCBjaGFydERhdGEgPSBDaGFydC5jaGFydChjb25maWcsIGhpZGRlbkRhdGEsIHtcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBob3Jpem9udGFsU2Nyb2xsRGV0ZWN0ZWQgPSBjaGFydERhdGEuY2hhcnRXaWR0aCA+IHdpZHRoO1xuICAgICAgY29uc3QgdmVydGljYWxTY3JvbGxEZXRlY3RlZCA9IGNoYXJ0RGF0YS5jaGFydEhlaWdodCA+IGhlaWdodDtcbiAgICAgIGlmIChob3Jpem9udGFsU2Nyb2xsRGV0ZWN0ZWQgfHwgdmVydGljYWxTY3JvbGxEZXRlY3RlZCkge1xuICAgICAgICBjb25zdCBzY3JvbGxiYXIgPSB0aGlzLm1lYXN1cmVTY3JvbGxiYXJUaGlja25lc3MoKTtcbiAgICAgICAgY2hhcnREYXRhID0gQ2hhcnQuY2hhcnQoY29uZmlnLCBoaWRkZW5EYXRhLCB7XG4gICAgICAgICAgd2lkdGg6IHdpZHRoIC0gKHZlcnRpY2FsU2Nyb2xsRGV0ZWN0ZWQgPyBzY3JvbGxiYXIudmVydGljYWwgOiAwKSxcbiAgICAgICAgICBoZWlnaHQ6XG4gICAgICAgICAgICBoZWlnaHQgLSAoaG9yaXpvbnRhbFNjcm9sbERldGVjdGVkID8gc2Nyb2xsYmFyLmhvcml6b250YWwgOiAwKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZpZXdCb3ggPVxuICAgICAgICBjb25maWcudHlwZSA9PT0gJ2RvbnV0J1xuICAgICAgICAgID8gYCR7LWNoYXJ0RGF0YS5jaGFydFdpZHRoIC8gMn0gJHstY2hhcnREYXRhLmNoYXJ0SGVpZ2h0IC8gMn1cbiAgICAgICAgICAgICAgJHtjaGFydERhdGEuY2hhcnRXaWR0aH0gJHtjaGFydERhdGEuY2hhcnRIZWlnaHR9YFxuICAgICAgICAgIDogYDAgMCAke2NoYXJ0RGF0YS5jaGFydFdpZHRofSAke2NoYXJ0RGF0YS5jaGFydEhlaWdodH1gO1xuICAgICAgY29uc3QgcmV0dXJuT2JqOiBEcmF3RGF0YSA9IHtcbiAgICAgICAgdmlld0JveCxcbiAgICAgICAgZGF0YTogaGlkZGVuRGF0YSxcbiAgICAgICAgLi4uY2hhcnREYXRhLFxuICAgICAgfTtcbiAgICAgIHJldHVybiByZXR1cm5PYmo7XG4gICAgfSksXG4gICk7XG5cbiAgaG92ZXI6IFJldHVyblR5cGU8Q2hhcnQuSG92ZXI+ID0gbnVsbDtcblxuICBtb3VzZW1vdmUoJGV2ZW50OiBNb3VzZUV2ZW50LCBob3Zlcj86IENoYXJ0LkhvdmVyKSB7XG4gICAgaWYgKCFob3Zlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXJFbCA9IHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmIChjb250YWluZXJFbCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZWN0ID0gY29udGFpbmVyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdGhpcy5ob3ZlciA9IGhvdmVyKHtcbiAgICAgIHJlY3QsXG4gICAgICB4OiAkZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdCxcbiAgICAgIHk6ICRldmVudC5jbGllbnRZIC0gcmVjdC50b3AsXG4gICAgICBjb250YWluZXJTY3JvbGxYOiBjb250YWluZXJFbC5zY3JvbGxMZWZ0LFxuICAgICAgY29udGFpbmVyU2Nyb2xsWTogY29udGFpbmVyRWwuc2Nyb2xsVG9wLFxuICAgIH0pO1xuICB9XG5cbiAgbW91c2VsZWF2ZSgkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmhvdmVyID0gbnVsbDtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBjaGFydENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICB4SW5kZXg6IG51bWJlcjtcbiAgICB5SW5kZXg6IG51bWJlcjtcbiAgICBzdXBwWUluZGV4PzogbnVtYmVyO1xuICB9PigpO1xuXG4gIGNsaWNrKCkge1xuICAgIGlmICh0aGlzLmhvdmVyICYmIHRoaXMuaXNIb3ZlckNsaWNrYWJsZSkge1xuICAgICAgdGhpcy5jaGFydENsaWNrZWQuZW1pdCh7XG4gICAgICAgIHhJbmRleDogdGhpcy5ob3Zlci54SW5kZXgsXG4gICAgICAgIHlJbmRleDogdGhpcy5ob3Zlci55SW5kZXgsXG4gICAgICAgIC4uLih0aGlzLmhvdmVyLmlzU3VwcFZhbHVlICYmXG4gICAgICAgIHRoaXMuaG92ZXIuc3VwcFlJbmRleCAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgdGhpcy5ob3Zlci5zdXBwWUluZGV4ID49IDBcbiAgICAgICAgICA/IHsgc3VwcFlJbmRleDogdGhpcy5ob3Zlci5zdXBwWUluZGV4IH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5ob3ZlciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzSG92ZXJDbGlja2FibGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhvdmVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgaG92ZXJpbmcgYSBzdXBwbGVtZW50YXJ5IHZhbHVlIHNwZWNpZmljYWxseSwgY2hlY2sgaWYgaXQncyBjbGlja2FibGVcbiAgICBpZiAodGhpcy5ob3Zlci5pc1N1cHBWYWx1ZSAmJiB0aGlzLmhvdmVyLnN1cHBZSW5kZXggIT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VwcFlJbmRleCA9IHRoaXMuaG92ZXIuc3VwcFlJbmRleDtcbiAgICAgIGNvbnN0IHN1cHBsZW1lbnRhcnlZcyA9IHRoaXMuZGF0YS5zdXBwbGVtZW50YXJ5WXM7XG4gICAgICBpZiAoXG4gICAgICAgICFzdXBwbGVtZW50YXJ5WXMgfHxcbiAgICAgICAgc3VwcFlJbmRleCA8IDAgfHxcbiAgICAgICAgc3VwcFlJbmRleCA+PSBzdXBwbGVtZW50YXJ5WXMubGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN1cHBsZW1lbnRhcnlZc1tzdXBwWUluZGV4XT8uY2xpY2thYmxlID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8vIEZvciBncm91cGVkIHRvb2x0aXBzLCBjaGVjayBpZiBhbnkgdmlzaWJsZSBpdGVtIGlzIGNsaWNrYWJsZVxuICAgIGNvbnN0IHlJbmRleCA9IHRoaXMuaG92ZXIueUluZGV4O1xuICAgIGlmICh0aGlzLmNvbmZpZy5ncm91cGVkVG9vbHRpcCkge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIG1haW4gWSB2YWx1ZSBpcyBjbGlja2FibGVcbiAgICAgIGlmICh0aGlzLmRhdGEueXNbeUluZGV4XT8uY2xpY2thYmxlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNpbmdsZSBpdGVtIHRvb2x0aXA6IGNoZWNrIGlmIHRoZSBob3ZlcmVkIFkgdmFsdWUgaXMgY2xpY2thYmxlXG4gICAgcmV0dXJuIHRoaXMuZGF0YS55c1t5SW5kZXhdPy5jbGlja2FibGUgPT09IHRydWU7XG4gIH1cblxuICB2YXJDb2xvcihjb2xvcnM6IHN0cmluZ1tdLCBpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGB2YXIoJHtjb2xvcnNbaW5kZXggJSBjb2xvcnMubGVuZ3RoXX0pYDtcbiAgfVxuXG4gIGdldEl0ZW1Db2xvcihcbiAgICBpdGVtOiBDaGFydC5EYXRhWSB8IENoYXJ0LlN1cHBsZW1lbnRhcnlEYXRhWSxcbiAgICBpdGVtSW5kZXg6IG51bWJlcixcbiAgKTogc3RyaW5nIHtcbiAgICAvLyBVc2UgaW5kZXggdG8gZ2V0IHRoZSBvcmlnaW5hbCBpdGVtIChkcmF3RGF0YSQgbWFpbnRhaW5zIHNhbWUgaW5kaWNlcyBhcyB0aGlzLmRhdGEpXG4gICAgY29uc3Qgb3JpZ2luYWxJdGVtID1cbiAgICAgICdzdXBwbGVtZW50YWxJbmRleCcgaW4gaXRlbVxuICAgICAgICA/IHRoaXMuZGF0YS5zdXBwbGVtZW50YXJ5WXMhW2l0ZW1JbmRleF1cbiAgICAgICAgOiB0aGlzLmRhdGEueXNbaXRlbUluZGV4XTtcblxuICAgIHJldHVybiBDaGFydC5nZXRDb2xvcihvcmlnaW5hbEl0ZW0sIHRoaXMuY29sb3JJbmRpY2VzLCB0aGlzLmNvbmZpZy5jb2xvcnMpO1xuICB9XG5cbiAgc2hvd01vcmVUb29sdGlwID0gZmFsc2U7XG4gIGxvY2tTaG93TW9yZVRvb2x0aXAgPSBmYWxzZTtcblxuICBtb3JlVGV4dFdpZHRoID0gNTA7XG4gIGJhc2VMZWdlbmRJdGVtV2lkdGggPSA0MDtcblxuICBmaXJzdEhpZGRlbkxlZ2VuZEl0ZW1JbmRleCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLndpZHRoJCxcbiAgICB0aGlzLmNvbmZpZyQsXG4gICAgdGhpcy5kYXRhJCxcbiAgXSkucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycmVudCkgPT4gaXNFcXVhbChwcmV2LCBjdXJyZW50KSksXG4gICAgbWFwKChbd2lkdGgsIGNvbmZpZywgZGF0YV0pID0+IHtcbiAgICAgIGlmICghY29uZmlnLnRydW5jYXRlTGVnZW5kKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YUluZGV4OiBkYXRhLnlzLmxlbmd0aCxcbiAgICAgICAgICBzdXBwSW5kZXg6IGRhdGEuc3VwcGxlbWVudGFyeVlzPy5sZW5ndGggPz8gMCxcbiAgICAgICAgICBoaWRkZW5Db3VudDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgbGV0IHdpZHRoUnVubmluZ1RvdGFsID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS55cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZGF0YS55c1tpXS5zaG93TGVnZW5kSXRlbSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRJdGVtV2lkdGggPVxuICAgICAgICAgIHRoaXMuYmFzZUxlZ2VuZEl0ZW1XaWR0aCArXG4gICAgICAgICAgZGF0YS55c1tpXS5sYWJlbC5sZW5ndGggKiBDaGFydC5XSURUSF9QRVJfTEVUVEVSO1xuICAgICAgICBpZiAod2lkdGhSdW5uaW5nVG90YWwgKyBpbmRJdGVtV2lkdGggPj0gd2lkdGggLSB0aGlzLm1vcmVUZXh0V2lkdGgpIHtcbiAgICAgICAgICBjb25zdCByZW1haW5pbmdZc0NvdW50ID0gZGF0YS55c1xuICAgICAgICAgICAgLnNsaWNlKGkpXG4gICAgICAgICAgICAuZmlsdGVyKHkgPT4geS5zaG93TGVnZW5kSXRlbSAhPT0gZmFsc2UpLmxlbmd0aDtcbiAgICAgICAgICBjb25zdCBzdXBwWXNDb3VudCA9XG4gICAgICAgICAgICBkYXRhLnN1cHBsZW1lbnRhcnlZcz8uZmlsdGVyKHkgPT4geS5zaG93TGVnZW5kSXRlbSAhPT0gZmFsc2UpXG4gICAgICAgICAgICAgIC5sZW5ndGggPz8gMDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YUluZGV4OiBpLFxuICAgICAgICAgICAgc3VwcEluZGV4OiAwLFxuICAgICAgICAgICAgaGlkZGVuQ291bnQ6IHJlbWFpbmluZ1lzQ291bnQgKyBzdXBwWXNDb3VudCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHdpZHRoUnVubmluZ1RvdGFsICs9IGluZEl0ZW1XaWR0aDtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLnN1cHBsZW1lbnRhcnlZcykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuc3VwcGxlbWVudGFyeVlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGRhdGEuc3VwcGxlbWVudGFyeVlzW2ldLnNob3dMZWdlbmRJdGVtID09PSBmYWxzZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGluZEl0ZW1XaWR0aCA9XG4gICAgICAgICAgICB0aGlzLmJhc2VMZWdlbmRJdGVtV2lkdGggK1xuICAgICAgICAgICAgZGF0YS5zdXBwbGVtZW50YXJ5WXNbaV0ubGFiZWwubGVuZ3RoICogQ2hhcnQuV0lEVEhfUEVSX0xFVFRFUjtcbiAgICAgICAgICBpZiAod2lkdGhSdW5uaW5nVG90YWwgKyBpbmRJdGVtV2lkdGggPj0gd2lkdGggLSB0aGlzLm1vcmVUZXh0V2lkdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1N1cHBZc0NvdW50ID0gZGF0YS5zdXBwbGVtZW50YXJ5WXNcbiAgICAgICAgICAgICAgLnNsaWNlKGkpXG4gICAgICAgICAgICAgIC5maWx0ZXIoeSA9PiB5LnNob3dMZWdlbmRJdGVtICE9PSBmYWxzZSkubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YUluZGV4OiBkYXRhLnlzLmxlbmd0aCxcbiAgICAgICAgICAgICAgc3VwcEluZGV4OiBpLFxuICAgICAgICAgICAgICBoaWRkZW5Db3VudDogcmVtYWluaW5nU3VwcFlzQ291bnQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICB3aWR0aFJ1bm5pbmdUb3RhbCArPSBpbmRJdGVtV2lkdGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGFJbmRleDogZGF0YS55cy5sZW5ndGgsXG4gICAgICAgIHN1cHBJbmRleDogZGF0YS5zdXBwbGVtZW50YXJ5WXM/Lmxlbmd0aCA/PyAwLFxuICAgICAgICBoaWRkZW5Db3VudDogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcblxuICBtb3JlQ2xpY2soKSB7XG4gICAgdGhpcy5sb2NrU2hvd01vcmVUb29sdGlwID0gIXRoaXMubG9ja1Nob3dNb3JlVG9vbHRpcDtcbiAgfVxuXG4gIGNsb3NlSGFuZGxlcigpIHtcbiAgICB0aGlzLmxvY2tTaG93TW9yZVRvb2x0aXAgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG1vdXNlb3ZlckxlZ2VuZCgpIHtcbiAgICB0aGlzLnNob3dNb3JlVG9vbHRpcCA9IHRydWU7XG4gIH1cblxuICBtb3VzZWxlYXZlTGVnZW5kKCkge1xuICAgIHRoaXMuc2hvd01vcmVUb29sdGlwID0gZmFsc2U7XG4gIH1cblxuICAvL1NpbmNlIHNjcm9sbGJhciBzaXplIGRlcGVuZWRzIG9uIGJyb3dzZXIsIHdlIGhhdmUgdG8gdXNlIGEgbWV0aG9kIGxpa2UgdGhpcyB0byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IHNjcm9sbGJhciB0aGlja25lc3NcbiAgbWVhc3VyZVNjcm9sbGJhclRoaWNrbmVzcygpIHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIGRpdi5zdHlsZS53aWR0aCA9ICcxMDBweCc7XG4gICAgZGl2LnN0eWxlLmhlaWdodCA9ICcxMDBweCc7XG4gICAgZGl2LnN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7XG4gICAgZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBkaXYuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuXG4gICAgY29uc3QgdGhpY2tuZXNzID0ge1xuICAgICAgdmVydGljYWw6IGRpdi5vZmZzZXRXaWR0aCAtIGRpdi5jbGllbnRXaWR0aCxcbiAgICAgIGhvcml6b250YWw6IGRpdi5vZmZzZXRIZWlnaHQgLSBkaXYuY2xpZW50SGVpZ2h0LFxuICAgIH07XG5cbiAgICBkaXYucmVtb3ZlKCk7XG4gICAgcmV0dXJuIHRoaWNrbmVzcztcbiAgfVxuXG4gIGdldFN1YmNvbnRhaW5lckhlaWdodChkYXRhOiBEcmF3RGF0YSB8IG51bGwpOiBzdHJpbmcge1xuICAgIGlmIChkYXRhID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5oZWlnaHR9cHhgO1xuICAgIH1cbiAgICBsZXQgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgaWYgKFxuICAgICAgZGF0YS5jaGFydEhlaWdodCA8IHRoaXMuaGVpZ2h0ICYmXG4gICAgICBkYXRhLnZlcnRpY2FsQ29udGFpbmVyU2NhbGUgPT09ICdzaHJpbmsnXG4gICAgKSB7XG4gICAgICAvL1Nocmlua2luZyB0byBmaXQgY29udGVudCwgYnV0IGFjY291bnRpbmcgZm9yIHBvdGVudGlhbCBzY3JvbGxiYXJzXG4gICAgICBjb25zdCBob3Jpem9udGFsU2Nyb2xsRGV0ZWN0ZWQgPSBkYXRhLmNoYXJ0V2lkdGggPiB0aGlzLndpZHRoO1xuICAgICAgY29uc3Qgc2Nyb2xsYmFyID0gdGhpcy5tZWFzdXJlU2Nyb2xsYmFyVGhpY2tuZXNzKCk7XG4gICAgICBoZWlnaHQgPSBNYXRoLm1pbihcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBkYXRhLmNoYXJ0SGVpZ2h0ICtcbiAgICAgICAgICAoaG9yaXpvbnRhbFNjcm9sbERldGVjdGVkID8gc2Nyb2xsYmFyLmhvcml6b250YWwgOiAwKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBgJHtoZWlnaHR9cHhgO1xuICB9XG5cbiAgZ2V0U3ViY29udGFpbmVyV2lkdGgoZGF0YTogRHJhd0RhdGEgfCBudWxsKTogc3RyaW5nIHtcbiAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMud2lkdGh9cHhgO1xuICAgIH1cbiAgICBsZXQgd2lkdGggPSB0aGlzLndpZHRoO1xuICAgIGlmIChcbiAgICAgIGRhdGEuY2hhcnRXaWR0aCA8IHRoaXMud2lkdGggJiZcbiAgICAgIGRhdGEuaG9yaXpvbnRhbENvbnRhaW5lclNjYWxlID09PSAnc2hyaW5rJ1xuICAgICkge1xuICAgICAgLy9TaHJpbmtpbmcgdG8gZml0IGNvbnRlbnQsIGJ1dCBhY2NvdW50aW5nIGZvciBwb3RlbnRpYWwgc2Nyb2xsYmFyc1xuICAgICAgY29uc3QgdmVydGljYWxTY3JvbGxEZXRlY3RlZCA9IGRhdGEuY2hhcnRIZWlnaHQgPiB0aGlzLmhlaWdodDtcbiAgICAgIGNvbnN0IHNjcm9sbGJhciA9IHRoaXMubWVhc3VyZVNjcm9sbGJhclRoaWNrbmVzcygpO1xuICAgICAgd2lkdGggPSBNYXRoLm1pbihcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGRhdGEuY2hhcnRXaWR0aCArICh2ZXJ0aWNhbFNjcm9sbERldGVjdGVkID8gc2Nyb2xsYmFyLnZlcnRpY2FsIDogMCksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYCR7d2lkdGh9cHhgO1xuICB9XG5cbiAgZ2V0Qm90dG9tTGFiZWxZKGRhdGE6IENoYXJ0LlJlbmRlcmVkQ2hhcnQpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICBkYXRhLmNoYXJ0SGVpZ2h0IC1cbiAgICAgIChkYXRhLmNoYXJ0U2l6aW5nVmFsdWVzLmJvdHRvbVBhZGRpbmcgLSBkYXRhLmNoYXJ0U2l6aW5nVmFsdWVzLmZvbnRTaXplKSAvXG4gICAgICAgIDJcbiAgICApO1xuICB9XG5cbiAgZ2V0Rm9udFNpemUoZGF0YTogQ2hhcnQuUmVuZGVyZWRDaGFydCB8IG51bGwpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNoYXJ0U2l6aW5nRm9udFNpemUgPSBkYXRhPy5jaGFydFNpemluZ1ZhbHVlcy5mb250U2l6ZTtcbiAgICBpZiAoY2hhcnRTaXppbmdGb250U2l6ZSAmJiBjaGFydFNpemluZ0ZvbnRTaXplID4gMCkge1xuICAgICAgcmV0dXJuIGNoYXJ0U2l6aW5nRm9udFNpemUudG9TdHJpbmcoKS5jb25jYXQoJ3B4Jyk7XG4gICAgfVxuICAgIHJldHVybiBDaGFydC5ERUZBVUxUX0ZPTlRfU0laRS50b1N0cmluZygpLmNvbmNhdCgncHgnKTtcbiAgfVxuXG4gIGNoZWNrRm9yTm9uRGlzcGxheVN0YXRlKGRhdGE6IERyYXdEYXRhIHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGVtcHR5ID1cbiAgICAgIGRhdGEgPT09IG51bGwgfHxcbiAgICAgIChkYXRhLmRhdGEueC5sZW5ndGggPT09IDAgJiYgdGhpcy5jb25maWcudHlwZSAhPT0gJ2RvbnV0JykgfHxcbiAgICAgIGRhdGEuZGF0YS55cy5sZW5ndGggPT09IDA7XG4gICAgaWYgKGVtcHR5KSB7XG4gICAgICByZXR1cm4gJ3plcm9TdGF0ZSc7XG4gICAgfVxuICAgIGlmIChkYXRhICYmIGRhdGEuY2hhcnRFcnJvciA9PT0gJ3NpemluZycpIHtcbiAgICAgIHJldHVybiAnc2l6aW5nRXJyb3JTdGF0ZSc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiY29udGFpbmVyXCJcbiAgKHJpdkNsaWVudFNpemUpPVwid2lkdGggPSAkZXZlbnQud2lkdGhcIlxuICAqbmdJZj1cInsgZDogZHJhd0RhdGEkIHwgYXN5bmMgfSBhcyB2bVwiXG4gIFtzdHlsZS4tLW92ZXJyaWRlLWZvbnQtc2l6ZV09XCJnZXRGb250U2l6ZSh2bS5kKVwiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIlxuICAgICAgIWNoZWNrRm9yTm9uRGlzcGxheVN0YXRlKHZtLmQpICYmIChkcmF3RGF0YSQgfCBhc3luYyk7XG4gICAgICBsZXQgZDtcbiAgICAgIGVsc2U6IG5vbkRpc3BsYXlTdGF0ZVxuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAobW91c2Vtb3ZlKT1cIm1vdXNlbW92ZSgkZXZlbnQsIGQuaG92ZXIpXCJcbiAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlbGVhdmUoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwiY2xpY2soKVwiXG4gICAgICAjY29udGFpbmVyXG4gICAgICBjbGFzcz1cInN1Yi1jb250YWluZXJcIlxuICAgICAgW2NsYXNzLmNsaWNrYWJsZV09XCJpc0hvdmVyQ2xpY2thYmxlXCJcbiAgICAgIHRhYkluZGV4PVwiMFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdkb251dC1jb250YWluZXInOiBjb25maWcudHlwZSA9PT0gJ2RvbnV0JyB9XCJcbiAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgaGVpZ2h0OiBnZXRTdWJjb250YWluZXJIZWlnaHQoZCksXG4gICAgICAgIHdpZHRoOiBnZXRTdWJjb250YWluZXJXaWR0aChkKVxuICAgICAgfVwiXG4gICAgPlxuICAgICAgPHN2ZzpzdmdcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIFthdHRyLnZpZXdCb3hdPVwiZC52aWV3Qm94XCJcbiAgICAgICAgW2F0dHIuaGVpZ2h0XT1cImQuY2hhcnRIZWlnaHRcIlxuICAgICAgICBbYXR0ci53aWR0aF09XCJkLmNoYXJ0V2lkdGhcIlxuICAgICAgPlxuICAgICAgICA8ZGVmcz5cbiAgICAgICAgICA8IS0tIFN0cmlwZSBwYXR0ZXJuIC0tPlxuICAgICAgICAgIDxwYXR0ZXJuXG4gICAgICAgICAgICBpZD1cInN0cmlwZXNcIlxuICAgICAgICAgICAgeD1cIjBcIlxuICAgICAgICAgICAgeT1cIjBcIlxuICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiMTBcIlxuICAgICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cIjEwXCJcbiAgICAgICAgICAgIHBhdHRlcm5Vbml0cz1cInVzZXJTcGFjZU9uVXNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGluZVxuICAgICAgICAgICAgICBbYXR0ci54MV09XCIwXCJcbiAgICAgICAgICAgICAgW2F0dHIueTFdPVwiMTBcIlxuICAgICAgICAgICAgICBbYXR0ci54Ml09XCIxMFwiXG4gICAgICAgICAgICAgIFthdHRyLnkyXT1cIjBcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJ2YXIoLS13aGl0ZS0xMDApXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMVwiXG4gICAgICAgICAgICA+PC9saW5lPlxuICAgICAgICAgIDwvcGF0dGVybj5cbiAgICAgICAgPC9kZWZzPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShjb25maWcudHlwZSA9PT0gJ2hvcml6b250YWwtYmFyJylcIj5cbiAgICAgICAgICA8ZyAqbmdGb3I9XCJsZXQgdGljayBvZiBkLnhUaWNrc1wiIHRleHQtYW5jaG9yPVwibWlkZGxlXCI+XG4gICAgICAgICAgICA8dGV4dFxuICAgICAgICAgICAgICBjbGFzcz1cInRpY2stbGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cInRpY2sueFwiXG4gICAgICAgICAgICAgIFthdHRyLnldPVwiZ2V0Qm90dG9tTGFiZWxZKGQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGljay5sYWJlbCB9fVxuICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcudHlwZSA9PT0gJ2hvcml6b250YWwtYmFyJ1wiPlxuICAgICAgICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueFRpY2tzXCIgdGV4dC1hbmNob3I9XCJsZWZ0XCI+XG4gICAgICAgICAgICA8dGV4dFxuICAgICAgICAgICAgICBjbGFzcz1cInRpY2stbGFiZWxcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cInRpY2sueFwiXG4gICAgICAgICAgICAgIFthdHRyLnldPVwiZC5jaGFydFNpemluZ1ZhbHVlcy5mb250U2l6ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHRpY2subGFiZWwgfX1cbiAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgIDxsaW5lXG4gICAgICAgICAgICAgIGNsYXNzPVwidGljay1saW5lXCJcbiAgICAgICAgICAgICAgW2F0dHIueDFdPVwidGljay54XCJcbiAgICAgICAgICAgICAgW2F0dHIueDJdPVwidGljay54XCJcbiAgICAgICAgICAgICAgeTE9XCIwXCJcbiAgICAgICAgICAgICAgW2F0dHIueTJdPVwiZC5jaGFydEhlaWdodFwiXG4gICAgICAgICAgICA+PC9saW5lPlxuICAgICAgICAgICAgPHRleHRcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aWNrLnNlY29uZGFyeUxhYmVsXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0aWNrLWxhYmVsXCJcbiAgICAgICAgICAgICAgW2F0dHIueF09XCJ0aWNrLnhcIlxuICAgICAgICAgICAgICBbYXR0ci55XT1cImdldEJvdHRvbUxhYmVsWShkKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHRpY2suc2Vjb25kYXJ5TGFiZWwgfX1cbiAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICA8L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZyAqbmdGb3I9XCJsZXQgdGljayBvZiBkLnlUaWNrc1wiPlxuICAgICAgICAgIDxsaW5lXG4gICAgICAgICAgICAqbmdJZj1cIiEoY29uZmlnLnR5cGUgPT09ICdob3Jpem9udGFsLWJhcicpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGljay1saW5lXCJcbiAgICAgICAgICAgIFthdHRyLnkxXT1cInRpY2sueVwiXG4gICAgICAgICAgICBbYXR0ci55Ml09XCJ0aWNrLnlcIlxuICAgICAgICAgICAgeDE9XCIwXCJcbiAgICAgICAgICAgIFthdHRyLngyXT1cImQuY2hhcnRXaWR0aFwiXG4gICAgICAgICAgPjwvbGluZT5cbiAgICAgICAgICA8dGV4dFxuICAgICAgICAgICAgcml2U1ZHVGV4dFRydW5jYXRlXG4gICAgICAgICAgICBbdGV4dF09XCJ0aWNrLmxhYmVsXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCJcbiAgICAgICAgICAgICAgY29uZmlnLnR5cGUgPT09ICdob3Jpem9udGFsLWJhcidcbiAgICAgICAgICAgICAgICA/IGQuY2hhcnRTaXppbmdWYWx1ZXMubGVmdEJ1Y2tldExhYmVsXG4gICAgICAgICAgICAgICAgOiBkLmNoYXJ0U2l6aW5nVmFsdWVzLmxlZnRQYWRkaW5nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0aWNrLWxhYmVsXCJcbiAgICAgICAgICAgIFthdHRyLnldPVwidGljay55XCJcbiAgICAgICAgICAgIFthdHRyLnhdPVwiMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdGljay5sYWJlbCB9fVxuICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICA8dGV4dFxuICAgICAgICAgICAgKm5nSWY9XCJ0aWNrLnNlY29uZGFyeUxhYmVsXCJcbiAgICAgICAgICAgIHJpdlNWR1RleHRUcnVuY2F0ZVxuICAgICAgICAgICAgW3RleHRdPVwidGljay5zZWNvbmRhcnlMYWJlbFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiZC5jaGFydFNpemluZ1ZhbHVlcy5yaWdodFBhZGRpbmdcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0aWNrLWxhYmVsXCJcbiAgICAgICAgICAgIFthdHRyLnldPVwidGljay55XCJcbiAgICAgICAgICAgIFthdHRyLnhdPVwiZC5jaGFydFdpZHRoXCJcbiAgICAgICAgICAgIHRleHQtYW5jaG9yPVwiZW5kXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB0aWNrLnNlY29uZGFyeUxhYmVsIH19XG4gICAgICAgICAgPC90ZXh0PlxuICAgICAgICA8L2c+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJob3ZlciBhcyBob3ZlckRhdGFcIj5cbiAgICAgICAgICA8ZyAqbmdJZj1cImNvbmZpZy50eXBlICE9PSAnaG9yaXpvbnRhbC1iYXInXCI+XG4gICAgICAgICAgICA8bGluZVxuICAgICAgICAgICAgICBjbGFzcz1cInRpY2stbGluZVwiXG4gICAgICAgICAgICAgIFthdHRyLngxXT1cImhvdmVyRGF0YT8ueFwiXG4gICAgICAgICAgICAgIFthdHRyLngyXT1cImhvdmVyRGF0YT8ueFwiXG4gICAgICAgICAgICAgIHkxPVwiMFwiXG4gICAgICAgICAgICAgIFthdHRyLnkyXT1cImQuY2hhcnRIZWlnaHRcIlxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hhcnJheT1cIjRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2c+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZyAqbmdGb3I9XCJsZXQgYmFyIG9mIGQuYmFyczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlY3Qgb2YgYmFyOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgICA8ZGVmcyAqbmdJZj1cInJlY3QucGF0dGVybiA9PT0gJ2RvdHMnXCI+XG4gICAgICAgICAgICAgIDxwYXR0ZXJuXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ2RvdHMtJyArIGkgKyAnLScgKyBqXCJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIueF09XCJyZWN0LnhcIlxuICAgICAgICAgICAgICAgIFthdHRyLnldPVwicmVjdC55XCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjRcIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICAgICAgY3g9XCIyXCJcbiAgICAgICAgICAgICAgICAgIGN5PVwiMlwiXG4gICAgICAgICAgICAgICAgICByPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmZpbGxdPVwidmFyQ29sb3IoZC5jb2xvcnMsIGkpXCJcbiAgICAgICAgICAgICAgICA+PC9jaXJjbGU+XG4gICAgICAgICAgICAgIDwvcGF0dGVybj5cbiAgICAgICAgICAgIDwvZGVmcz5cblxuICAgICAgICAgICAgPHJlY3RcbiAgICAgICAgICAgICAgW2F0dHIueF09XCJyZWN0LnhcIlxuICAgICAgICAgICAgICBbYXR0ci55XT1cInJlY3QueVwiXG4gICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cInJlY3Qud2lkdGhcIlxuICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwicmVjdC5oZWlnaHRcIlxuICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cIlxuICAgICAgICAgICAgICAgIHJlY3QucGF0dGVybiA9PT0gJ2RvdHMnXG4gICAgICAgICAgICAgICAgICA/ICd1cmwoI2RvdHMtJyArIGkgKyAnLScgKyBqICsgJyknXG4gICAgICAgICAgICAgICAgICA6IHZhckNvbG9yKGQuY29sb3JzLCBpKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvcmVjdD5cbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgICpuZ0lmPVwicmVjdC5wYXR0ZXJuID09PSAnc3RyaXBlZCdcIlxuICAgICAgICAgICAgICBbYXR0ci54XT1cInJlY3QueFwiXG4gICAgICAgICAgICAgIFthdHRyLnldPVwicmVjdC55XCJcbiAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwicmVjdC53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJyZWN0LmhlaWdodFwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3N0cmlwZXMpXCJcbiAgICAgICAgICAgID48L3JlY3Q+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZz5cbiAgICAgICAgPGcgKm5nRm9yPVwibGV0IGJhciBvZiBkLmhvcml6b250YWxCYXJzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW5kQmFyIG9mIGJhcjsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgICAgPGRlZnMgKm5nSWY9XCJpbmRCYXIucGF0dGVybiA9PT0gJ2RvdHMnXCI+XG4gICAgICAgICAgICAgIDxwYXR0ZXJuXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ2RvdHMtJyArIGkgKyAnLScgKyBqXCJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIueF09XCJpbmRCYXIueFwiXG4gICAgICAgICAgICAgICAgW2F0dHIueV09XCJpbmRCYXIueVwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCI0XCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCI0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgICAgIGN4PVwiMlwiXG4gICAgICAgICAgICAgICAgICBjeT1cIjJcIlxuICAgICAgICAgICAgICAgICAgcj1cIjEuNVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5maWxsXT1cInZhckNvbG9yKGQuY29sb3JzLCBpKVwiXG4gICAgICAgICAgICAgICAgPjwvY2lyY2xlPlxuICAgICAgICAgICAgICA8L3BhdHRlcm4+XG4gICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBbYXR0ci5kXT1cImluZEJhci5ob3Jpem9udGFsQmFyXCJcbiAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJcbiAgICAgICAgICAgICAgICBpbmRCYXIucGF0dGVybiA9PT0gJ2RvdHMnXG4gICAgICAgICAgICAgICAgICA/ICd1cmwoI2RvdHMtJyArIGkgKyAnLScgKyBqICsgJyknXG4gICAgICAgICAgICAgICAgICA6IHZhckNvbG9yKGQuY29sb3JzLCBpKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwiXG4gICAgICAgICAgICAgICAgaW5kQmFyLnBhdHRlcm4gPT09ICdkb3RzJyA/ICdub25lJyA6IHZhckNvbG9yKGQuY29sb3JzLCBpKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwiaW5kQmFyLnBhdHRlcm4gPT09ICdkb3RzJyA/IDAgOiAyXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAqbmdJZj1cImluZEJhci5wYXR0ZXJuID09PSAnc3RyaXBlZCdcIlxuICAgICAgICAgICAgICBbYXR0ci5kXT1cImluZEJhci5ob3Jpem9udGFsQmFyXCJcbiAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInZhckNvbG9yKGQuY29sb3JzLCBpKVwiXG4gICAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3N0cmlwZXMpXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2c+XG4gICAgICAgIDxnICpuZ0Zvcj1cImxldCBncmFkaWVudCBvZiBkLmdyYWRpZW50czsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlY3Qgb2YgZ3JhZGllbnQ7IGxldCBqID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnRcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCInZ3JhZC0nICsgaSArICctJyArIGpcIlxuICAgICAgICAgICAgICAgIHgxPVwiMFwiXG4gICAgICAgICAgICAgICAgeTE9XCIwXCJcbiAgICAgICAgICAgICAgICB4Mj1cIjBcIlxuICAgICAgICAgICAgICAgIHkyPVwiMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwJVwiIFthdHRyLnN0b3AtY29sb3JdPVwidmFyQ29sb3IoZC5jb2xvcnMsIGkpXCIgLz5cbiAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxMDAlXCIgc3RvcC1jb2xvcj1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgIFthdHRyLnhdPVwicmVjdC54XCJcbiAgICAgICAgICAgICAgW2F0dHIueV09XCJyZWN0LnlcIlxuICAgICAgICAgICAgICBbYXR0ci53aWR0aF09XCJyZWN0LndpZHRoXCJcbiAgICAgICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cInJlY3QuaGVpZ2h0XCJcbiAgICAgICAgICAgICAgW2F0dHIuZmlsbF09XCIndXJsKCNncmFkLScgKyBpICsgJy0nICsgaiArICcpJ1wiXG4gICAgICAgICAgICAgIG9wYWNpdHk9XCIwLjRcIlxuICAgICAgICAgICAgPjwvcmVjdD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9nPlxuICAgICAgICA8ZyAqbmdGb3I9XCJsZXQgbGluZSBvZiBkLmxpbmVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIFthdHRyLmRdPVwibGluZS5saW5lXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ2YXJDb2xvcihkLmNvbG9ycywgaSlcIlxuICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICBbYXR0ci5zdHJva2UtbGluZWNhcF09XCJcbiAgICAgICAgICAgICAgbGluZS5wYXR0ZXJuID09PSAnZG90cycgPyAncm91bmQnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2F0dHIuc3Ryb2tlLWxpbmVqb2luXT1cIlxuICAgICAgICAgICAgICBsaW5lLnBhdHRlcm4gPT09ICdkb3RzJyA/ICdyb3VuZCcgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5zdHJva2UtZGFzaGFycmF5XT1cIlxuICAgICAgICAgICAgICBsaW5lLnBhdHRlcm4gPT09ICdzdHJpcGVkJ1xuICAgICAgICAgICAgICAgID8gJzEwIDEwJ1xuICAgICAgICAgICAgICAgIDogbGluZS5wYXR0ZXJuID09PSAnZG90cydcbiAgICAgICAgICAgICAgICA/ICcwLjI1IDcnXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9nPlxuICAgICAgICA8ZyAqbmdGb3I9XCJsZXQgbGluZVNpbmdsZVBvaW50RmFsbGJhY2sgb2YgZC5jaXJjbGVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgY2xhc3M9XCJtYXJrZXJcIlxuICAgICAgICAgICAgW2F0dHIuY3hdPVwibGluZVNpbmdsZVBvaW50RmFsbGJhY2suY3hcIlxuICAgICAgICAgICAgW2F0dHIuY3ldPVwibGluZVNpbmdsZVBvaW50RmFsbGJhY2suY3lcIlxuICAgICAgICAgICAgcj1cIjMuNVwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ2YXJDb2xvcihkLmNvbG9ycywgaSlcIlxuICAgICAgICAgID48L2NpcmNsZT5cbiAgICAgICAgPC9nPlxuICAgICAgICA8ZyAqbmdGb3I9XCJsZXQgbGluZSBvZiBkLmxpbmVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhvdmVyIGFzIGhvdmVyRGF0YVwiPlxuICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICBjbGFzcz1cIm1hcmtlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmdyb3VwZWRUb29sdGlwIHx8IGkgPT09IGhvdmVyRGF0YT8udmlzaWJsZVlJbmRleFwiXG4gICAgICAgICAgICAgIFthdHRyLmN4XT1cImhvdmVyRGF0YT8ueFwiXG4gICAgICAgICAgICAgIFthdHRyLmN5XT1cImhvdmVyRGF0YT8ueXM/LltpXVwiXG4gICAgICAgICAgICAgIHI9XCIzLjVcIlxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInZhckNvbG9yKGQuY29sb3JzLCBpKVwiXG4gICAgICAgICAgICA+PC9jaXJjbGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZz5cbiAgICAgICAgPGcgKm5nRm9yPVwibGV0IGFyZWEgb2YgZC5hcmVhczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwiYXJlYS5hcmVhXCIgW2F0dHIuZmlsbF09XCJ2YXJDb2xvcihkLmNvbG9ycywgaSlcIj48L3BhdGg+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICpuZ0lmPVwiYXJlYS5wYXR0ZXJuID09PSAnc3RyaXBlZCdcIlxuICAgICAgICAgICAgW2F0dHIuZF09XCJhcmVhLmFyZWFcIlxuICAgICAgICAgICAgZmlsbD1cInVybCgjc3RyaXBlcylcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvZz5cbiAgICAgICAgPGcgKm5nRm9yPVwibGV0IGFyZWEgb2YgZC5hcmVhczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJob3ZlciBhcyBob3ZlckRhdGFcIj5cbiAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXJrZXJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5ncm91cGVkVG9vbHRpcCB8fCBpID09PSBob3ZlckRhdGE/LnZpc2libGVZSW5kZXhcIlxuICAgICAgICAgICAgICBbYXR0ci5jeF09XCJob3ZlckRhdGE/LnhcIlxuICAgICAgICAgICAgICBbYXR0ci5jeV09XCJob3ZlckRhdGE/LnlzPy5baV1cIlxuICAgICAgICAgICAgICByPVwiMy41XCJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ2YXJDb2xvcihkLmNvbG9ycywgaSlcIlxuICAgICAgICAgICAgPjwvY2lyY2xlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2c+XG4gICAgICAgIDxnICpuZ0Zvcj1cImxldCB3TGluZSBvZiBkLndhdGVyZmFsbExpbmVzXCI+XG4gICAgICAgICAgPGxpbmVcbiAgICAgICAgICAgIGNsYXNzPVwid2F0ZXJmYWxsLWxpbmVcIlxuICAgICAgICAgICAgW2F0dHIueDFdPVwid0xpbmUueDFcIlxuICAgICAgICAgICAgW2F0dHIueDJdPVwid0xpbmUueDJcIlxuICAgICAgICAgICAgW2F0dHIueTFdPVwid0xpbmUueTFcIlxuICAgICAgICAgICAgW2F0dHIueTJdPVwid0xpbmUueTJcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMVwiXG4gICAgICAgICAgICBzdHJva2UtZGFzaGFycmF5PVwiNlwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9nPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwYXRoIG9mIGQuYXJjczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgW2F0dHIuZF09XCJwYXRoXCJcbiAgICAgICAgICBbYXR0ci5maWxsXT1cInZhckNvbG9yKGQuY29sb3JzLCBpKVwiXG4gICAgICAgID48L3BhdGg+XG4gICAgICAgIDxnICpuZ0Zvcj1cImxldCBkYXRhTGFiZWwgb2YgZC5kYXRhTGFiZWxzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPHRleHRcbiAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLnNob3dEYXRhTGFiZWxzICYmIGRhdGFMYWJlbC5sYWJlbFwiXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtbGFiZWxcIlxuICAgICAgICAgICAgW2F0dHIueV09XCJkYXRhTGFiZWwueVBvc1wiXG4gICAgICAgICAgICBbYXR0ci54XT1cImRhdGFMYWJlbC54UG9zXCJcbiAgICAgICAgICAgIFthdHRyLnRleHQtYW5jaG9yXT1cImRhdGFMYWJlbC5hbmNob3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGRhdGFMYWJlbC5sYWJlbCB9fVxuICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICA8bGluZVxuICAgICAgICAgICAgKm5nSWY9XCJkYXRhTGFiZWwubGluZSAmJiBjb25maWcuc2hvd0RhdGFMYWJlbHNcIlxuICAgICAgICAgICAgW2F0dHIueTFdPVwiZGF0YUxhYmVsLmxpbmUueTFcIlxuICAgICAgICAgICAgW2F0dHIueTJdPVwiZGF0YUxhYmVsLmxpbmUueTJcIlxuICAgICAgICAgICAgW2F0dHIueDFdPVwiZGF0YUxhYmVsLmxpbmUueDFcIlxuICAgICAgICAgICAgW2F0dHIueDJdPVwiZGF0YUxhYmVsLmxpbmUueDJcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwidmFyQ29sb3IoZC5jb2xvcnMsIGkpXCJcbiAgICAgICAgICA+PC9saW5lPlxuICAgICAgICA8L2c+XG4gICAgICA8L3N2Zzpzdmc+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLnR5cGUgPT09ICdkb251dCdcIiBjbGFzcz1cImRvbnV0LWRpc3BsYXlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRvbnV0LXZhbHVlXCIgW25nQ2xhc3NdPVwiY29uZmlnLmRvbnV0RGlzcGxheUluZm8uc2l6ZVwiPlxuICAgICAgICAgIHt7IGNvbmZpZy5kb251dERpc3BsYXlJbmZvLmRpc3BsYXlWYWx1ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRvbnV0LWxhYmVsXCI+XG4gICAgICAgICAge3sgY29uZmlnLmRvbnV0RGlzcGxheUluZm8uZGlzcGxheUxhYmVsIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaG92ZXIgYXMgaG92ZXJEYXRhXCI+XG4gICAgICAgIDxyaXYtY2FsbG91dFxuICAgICAgICAgICpyaXYtb3ZlcmxheVxuICAgICAgICAgIFthbmNob3JdPVwiXG4gICAgICAgICAgICBob3ZlckRhdGE/LnRvb2x0aXA/LmFuY2hvciA/IGhvdmVyRGF0YS50b29sdGlwLmFuY2hvciA6IG51bGxcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtpc01vZGFsXT1cImZhbHNlXCJcbiAgICAgICAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2NlbnRlci1yaWdodCdcIlxuICAgICAgICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b29sdGlwVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRvb2x0aXBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidG9vbHRpcFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICB4SW5kZXg6IGhvdmVyRGF0YT8ueEluZGV4LFxuICAgICAgICAgICAgICAgIHlJbmRleDogaG92ZXJEYXRhPy55SW5kZXgsXG4gICAgICAgICAgICAgICAgaXNTdXBwVmFsdWU6IGhvdmVyRGF0YT8uaXNTdXBwVmFsdWUsXG4gICAgICAgICAgICAgICAgc3VwcFlJbmRleDogaG92ZXJEYXRhPy5zdXBwWUluZGV4XG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRvb2x0aXA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbG91dC1jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJob3ZlckRhdGE/LnRvb2x0aXA/LmRhdGVcIiBjbGFzcz1cImNhbGxvdXQtcm93XCI+XG4gICAgICAgICAgICAgICAge3sgaG92ZXJEYXRhPy50b29sdGlwPy5kYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjYWxsb3V0LXJvd1wiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1ldHJpYyBvZiBob3ZlckRhdGE/LnRvb2x0aXA/Lm1ldHJpY3NcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXJpZXMtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgIDxyaXYtbGVnZW5kLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yVG9rZW5dPVwibWV0cmljLmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIm1ldHJpYy5wYXR0ZXJuIHx8ICdzb2xpZCdcIlxuICAgICAgICAgICAgICAgICAgPjwvcml2LWxlZ2VuZC1pdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgbWV0cmljLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBtZXRyaWMudmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9yaXYtY2FsbG91dD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxsZWdlbmQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlyc3RIaWRkZW5MZWdlbmRJdGVtSW5kZXgkIHwgYXN5bmM7IGxldCBmaVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGQuZGF0YS55czsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxyaXYtbGVnZW5kLWl0ZW1cbiAgICAgICAgICAgICpuZ0lmPVwiaSA8IGZpLmRhdGFJbmRleCAmJiBpdGVtLnNob3dMZWdlbmRJdGVtICE9PSBmYWxzZVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICBbc3R5bGVdPVwiaXRlbS5wYXR0ZXJuIHx8ICdzb2xpZCdcIlxuICAgICAgICAgICAgW3Zpc2liaWxpdHldPVwiaXRlbS5oaWRkZW4gPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiXG4gICAgICAgICAgICBbY2xpY2thYmxlXT1cImNvbmZpZy5hbGxvd0xlZ2VuZFRvZ2dsZVwiXG4gICAgICAgICAgICBbc2hvd0NoZWNrV2hlbkNsaWNrYWJsZV09XCJpdGVtLnBhdHRlcm4gIT09ICdkb3RzJ1wiXG4gICAgICAgICAgICBbY29sb3JUb2tlbl09XCJnZXRJdGVtQ29sb3IoaXRlbSwgaSlcIlxuICAgICAgICAgICAgKGl0ZW1DbGljayk9XCJ0b2dnbGVMZWdlbmQoaXRlbSwgaSlcIlxuICAgICAgICAgID48L3Jpdi1sZWdlbmQtaXRlbT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkLmRhdGEuc3VwcGxlbWVudGFyeVlzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxyaXYtbGVnZW5kLWl0ZW1cbiAgICAgICAgICAgICpuZ0lmPVwiaSA8IGZpLnN1cHBJbmRleCAmJiBpdGVtLnNob3dMZWdlbmRJdGVtICE9PSBmYWxzZVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICBbc3R5bGVdPVwiaXRlbS5wYXR0ZXJuIHx8ICdzb2xpZCdcIlxuICAgICAgICAgICAgW3Zpc2liaWxpdHldPVwiaXRlbS5oaWRkZW4gPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiXG4gICAgICAgICAgICBbY2xpY2thYmxlXT1cImNvbmZpZy5hbGxvd0xlZ2VuZFRvZ2dsZVwiXG4gICAgICAgICAgICBbc2hvd0NoZWNrV2hlbkNsaWNrYWJsZV09XCJpdGVtLnBhdHRlcm4gIT09ICdkb3RzJ1wiXG4gICAgICAgICAgICBbY29sb3JUb2tlbl09XCJnZXRJdGVtQ29sb3IoaXRlbSwgaSlcIlxuICAgICAgICAgICAgKGl0ZW1DbGljayk9XCJ0b2dnbGVMZWdlbmQoaXRlbSwgaSlcIlxuICAgICAgICAgID48L3Jpdi1sZWdlbmQtaXRlbT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAjbW9yZVRleHRDb250YWluZXJcbiAgICAgICAgICBjbGFzcz1cIm1vcmUtdGV4dC1jb250YWluZXJcIlxuICAgICAgICAgIChtb3VzZW92ZXIpPVwibW91c2VvdmVyTGVnZW5kKClcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cIm1vdXNlbGVhdmVMZWdlbmQoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1vcmVDbGljaygpXCJcbiAgICAgICAgICAqbmdJZj1cImZpLmhpZGRlbkNvdW50XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIHJpdkxpbmsgY2xhc3M9XCJtb3JlLXRleHRcIj5cbiAgICAgICAgICAgICtcbiAgICAgICAgICAgIHt7IGZpLmhpZGRlbkNvdW50IH19IG1vcmVcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd01vcmVUb29sdGlwIHx8IGxvY2tTaG93TW9yZVRvb2x0aXBcIj5cbiAgICAgICAgICA8cml2LWNhbGxvdXRcbiAgICAgICAgICAgICpyaXYtb3ZlcmxheVxuICAgICAgICAgICAgW2FuY2hvcl09XCJtb3JlVGV4dENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudFwiXG4gICAgICAgICAgICBbaXNNb2RhbF09XCJsb2NrU2hvd01vcmVUb29sdGlwXCJcbiAgICAgICAgICAgIChjbG9zZSk9XCJjbG9zZUhhbmRsZXIoKVwiXG4gICAgICAgICAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2JvdHRvbS1yaWdodCdcIlxuICAgICAgICAgICAgW3RoZW1lXT1cIidsaWdodCdcIlxuICAgICAgICAgICAgW3Nob3dDYXJldF09XCJmYWxzZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC10b29sdGlwXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZC5kYXRhLnlzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPHJpdi1sZWdlbmQtaXRlbVxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpID49IGZpLmRhdGFJbmRleCAmJiBpdGVtLnNob3dMZWdlbmRJdGVtICE9PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiaXRlbS5wYXR0ZXJuIHx8ICdzb2xpZCdcIlxuICAgICAgICAgICAgICAgICAgW3Zpc2liaWxpdHldPVwiaXRlbS5oaWRkZW4gPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiXG4gICAgICAgICAgICAgICAgICBbY2xpY2thYmxlXT1cImNvbmZpZy5hbGxvd0xlZ2VuZFRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICBbc2hvd0NoZWNrV2hlbkNsaWNrYWJsZV09XCJpdGVtLnBhdHRlcm4gIT09ICdkb3RzJ1wiXG4gICAgICAgICAgICAgICAgICBbY29sb3JUb2tlbl09XCJnZXRJdGVtQ29sb3IoaXRlbSwgaSlcIlxuICAgICAgICAgICAgICAgICAgKGl0ZW1DbGljayk9XCJ0b2dnbGVMZWdlbmQoaXRlbSwgaSlcIlxuICAgICAgICAgICAgICAgID48L3Jpdi1sZWdlbmQtaXRlbT5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkLmRhdGEuc3VwcGxlbWVudGFyeVlzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxyaXYtbGVnZW5kLWl0ZW1cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaSA+PSBmaS5zdXBwSW5kZXggJiYgaXRlbS5zaG93TGVnZW5kSXRlbSAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIml0ZW0ucGF0dGVybiB8fCAnc29saWQnXCJcbiAgICAgICAgICAgICAgICAgIFt2aXNpYmlsaXR5XT1cIml0ZW0uaGlkZGVuID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIlxuICAgICAgICAgICAgICAgICAgW2NvbG9yVG9rZW5dPVwiZ2V0SXRlbUNvbG9yKGl0ZW0sIGkpXCJcbiAgICAgICAgICAgICAgICAgIFtjbGlja2FibGVdPVwiY29uZmlnLmFsbG93TGVnZW5kVG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgIFtzaG93Q2hlY2tXaGVuQ2xpY2thYmxlXT1cIml0ZW0ucGF0dGVybiAhPT0gJ2RvdHMnXCJcbiAgICAgICAgICAgICAgICAgIChpdGVtQ2xpY2spPVwidG9nZ2xlTGVnZW5kKGl0ZW0sIGkpXCJcbiAgICAgICAgICAgICAgICA+PC9yaXYtbGVnZW5kLWl0ZW0+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9yaXYtY2FsbG91dD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2xlZ2VuZD5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNub25EaXNwbGF5U3RhdGU+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGVja0Zvck5vbkRpc3BsYXlTdGF0ZShkcmF3RGF0YSQgfCBhc3luYyk7IGxldCB0eXBlXCI+XG4gICAgPHJpdi16ZXJvLXN0YXRlXG4gICAgICAqbmdJZj1cInR5cGUgPT09ICd6ZXJvU3RhdGUnXCJcbiAgICAgIFttZXNzYWdlXT1cImNvbmZpZy56ZXJvU3RhdGVNZXNzYWdlXCJcbiAgICA+PC9yaXYtemVyby1zdGF0ZT5cbiAgICA8cml2LXplcm8tc3RhdGVcbiAgICAgICpuZ0lmPVwidHlwZSA9PT0gJ3NpemluZ0Vycm9yU3RhdGUnXCJcbiAgICAgIFttZXNzYWdlXT1cImNvbmZpZy5zaXppbmdFcnJvclN0YXRlTWVzc2FnZVwiXG4gICAgPjwvcml2LXplcm8tc3RhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|