@firestitch/report 18.10.0 → 18.10.1
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/app/reports/data/report.data.d.ts +3 -5
- package/app/reports/dialogs/report-settings/report-settings.component.d.ts +30 -2
- package/app/reports/filter-settings-rules.d.ts +4 -0
- package/app/reports/interfaces/report-filter-group-changes.interface.d.ts +7 -0
- package/app/reports/interfaces/report.interface.d.ts +1 -14
- package/app/reports/report-filter-items.d.ts +2 -8
- package/app/reports/report-view-config.d.ts +1 -3
- package/app/reports/services/report-filter-state.service.d.ts +5 -14
- package/app/reports/services/report-view.service.d.ts +1 -13
- package/app/reports/views/report/fs-ai-report.component.d.ts +2 -8
- package/esm2022/app/reports/canvas-landing-page.mjs +7 -6
- package/esm2022/app/reports/components/component-list/component-list.component.mjs +5 -5
- package/esm2022/app/reports/components/report-canvas/report-canvas.component.mjs +13 -12
- package/esm2022/app/reports/components/report-component/report-component.component.mjs +9 -9
- package/esm2022/app/reports/data/report.data.mjs +8 -5
- package/esm2022/app/reports/dialogs/report-settings/report-settings.component.mjs +169 -21
- package/esm2022/app/reports/filter-settings-rules.mjs +8 -1
- package/esm2022/app/reports/interfaces/canvas-landing-input.interface.mjs +1 -1
- package/esm2022/app/reports/interfaces/report-filter-group-changes.interface.mjs +2 -0
- package/esm2022/app/reports/interfaces/report-temporary-state.interface.mjs +1 -1
- package/esm2022/app/reports/interfaces/report-view-config.interface.mjs +1 -1
- package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
- package/esm2022/app/reports/report-date-presets.mjs +2 -2
- package/esm2022/app/reports/report-filter-items.mjs +25 -105
- package/esm2022/app/reports/report-view-config.mjs +6 -116
- package/esm2022/app/reports/services/report-filter-state.service.mjs +92 -269
- package/esm2022/app/reports/services/report-view.service.mjs +25 -165
- package/esm2022/app/reports/views/report/fs-ai-report.component.mjs +56 -120
- package/esm2022/app/reports/views/report/report.component.mjs +11 -8
- package/fesm2022/{firestitch-report-echarts-UBg8Wlhd.mjs → firestitch-report-echarts-DHEH_K_q.mjs} +2 -2
- package/fesm2022/{firestitch-report-echarts-UBg8Wlhd.mjs.map → firestitch-report-echarts-DHEH_K_q.mjs.map} +1 -1
- package/fesm2022/{firestitch-report-firestitch-report-B1keNrcK.mjs → firestitch-report-firestitch-report-ZcHTnNKq.mjs} +454 -1470
- package/fesm2022/firestitch-report-firestitch-report-ZcHTnNKq.mjs.map +1 -0
- package/fesm2022/firestitch-report.mjs +1 -1
- package/package.json +1 -1
- package/app/reports/interfaces/report-url-link.interface.d.ts +0 -4
- package/app/reports/interfaces/report-url-value-name.type.d.ts +0 -1
- package/app/reports/interfaces/report-url-write.interface.d.ts +0 -4
- package/app/reports/report-url-state.d.ts +0 -36
- package/esm2022/app/reports/interfaces/report-url-link.interface.mjs +0 -2
- package/esm2022/app/reports/interfaces/report-url-value-name.type.mjs +0 -2
- package/esm2022/app/reports/interfaces/report-url-write.interface.mjs +0 -2
- package/esm2022/app/reports/report-url-state.mjs +0 -677
- package/fesm2022/firestitch-report-firestitch-report-B1keNrcK.mjs.map +0 -1
|
@@ -13,6 +13,13 @@ export const COMPONENT_TOGGLE_TOOLTIP = 'Show on this component';
|
|
|
13
13
|
export const FIXED_DATES_PERIOD = 'fixed';
|
|
14
14
|
// How many decimals a Default minimum or Default maximum takes.
|
|
15
15
|
export const DEFAULT_BOUND_SCALE = 6;
|
|
16
|
+
// A filter's Name and Label, checked as the server checks them, so a bad one
|
|
17
|
+
// is caught before Save. The name is an identifier: a letter, then letters
|
|
18
|
+
// and digits. That it is unique in the report is the server's to check.
|
|
19
|
+
export const FILTER_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9]*$/;
|
|
20
|
+
export const FILTER_NAME_PATTERN_MESSAGE = 'A name starts with a letter and holds only letters and digits.';
|
|
21
|
+
export const FILTER_NAME_MAX_LENGTH = 50;
|
|
22
|
+
export const FILTER_LABEL_MAX_LENGTH = 200;
|
|
16
23
|
// Every Report bar choice, in the order the select lists them.
|
|
17
24
|
const BAR_PLACEMENT_OPTIONS = [
|
|
18
25
|
{ value: 'off', name: 'Off' },
|
|
@@ -280,4 +287,4 @@ export function normalizeDefault(value) {
|
|
|
280
287
|
export function defaultChanged(stored, draft) {
|
|
281
288
|
return JSON.stringify(normalizeDefault(stored)) !== JSON.stringify(normalizeDefault(draft));
|
|
282
289
|
}
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNldHRpbmdzLXJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2ZpbHRlci1zZXR0aW5ncy1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RCxxRUFBcUU7QUFDckUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQTZDO0lBQzNFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQ25DLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFO0NBQy9DLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyx1Q0FBdUMsQ0FBQztBQUMzRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRywyQ0FBMkMsQ0FBQztBQUMvRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztBQUVqRSwyRUFBMkU7QUFDM0UsdUJBQXVCO0FBQ3ZCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztBQUUxQyxnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBRXJDLCtEQUErRDtBQUMvRCxNQUFNLHFCQUFxQixHQUErQztJQUN4RSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtJQUM3QixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTtJQUN0QyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO0NBQzFDLENBQUM7QUFHRixrRUFBa0U7QUFDbEUsTUFBTSxlQUFl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TUFBTSxVQUFVLGNBQWMsQ0FDNUIsTUFBNkMsRUFDN0MsS0FBNEM7SUFFNUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzlGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgcnVsZXMgYmVoaW5kIHRoZSB0d28gZmlsdGVyIHNldHRpbmdzIGRpYWxvZ3MsIGtlcHQgcHVyZSBzbyB0aGUgbm9kZVxuLy8gaGFybmVzcyBjaGVja3MgdGhlbSB3aXRob3V0IGEgZGlhbG9nLiBUaGUgY29tcG9uZW50IHNldHRpbmdzJyBGaWx0ZXJzIHRhYlxuLy8gcmVhZHMgdGhlIFR5cGUgc2VsZWN0LCB0aGUgUmVwb3J0IGJhciBzZWxlY3QgYW5kIHRoZSBUaGlzIGNvbXBvbmVudCB0b2dnbGVcbi8vIGZyb20gaGVyZTsgdGhlIHJlcG9ydCBzZXR0aW5ncycgRmlsdGVycyB0YWIgcmVhZHMgaXRzIGRlZmF1bHQgcm93cyAodGhlXG4vLyBwZXJpb2QsIHRoZSBleGNsdWRlIHRvZ2dsZSwgdGhlIG51bWJlciByYW5nZSBlbmRzIGFuZCB0aGVpciBjaGVjaykgZnJvbVxuLy8gaGVyZS4gVGhlIGRpYWxvZ3Mgb25seSBjYWxsIHRoZXNlLlxuaW1wb3J0IHsgRmlsdGVyQmFyUGxhY2VtZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci1iYXItcGxhY2VtZW50LnR5cGUnO1xuaW1wb3J0IHsgRmlsdGVyQ29tcG9uZW50VG9nZ2xlU3RhdGUgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWNvbXBvbmVudC10b2dnbGUtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlclNldHRpbmdzT3B0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci1zZXR0aW5ncy1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEZpbHRlclR5cGVTZWxlY3RTdGF0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXItdHlwZS1zZWxlY3Qtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydFZpZXdlckZlYXR1cmUgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LXZpZXdlci1mZWF0dXJlLnR5cGUnO1xuaW1wb3J0IHtcbiAgRmlsdGVyR3JvdXBEZWZhdWx0LFxuICBSZXBvcnRGaWx0ZXJHcm91cCxcbiAgUmVwb3J0RmlsdGVyTGV2ZWwsXG4gIFJlcG9ydEZpbHRlclR5cGUsXG4gIFJlcG9ydFBhZ2UsXG4gIFJlcG9ydFJlbGF0aXZlUmFuZ2UsXG59IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJFTEFUSVZFX1JBTkdFX05BTUVTLCBpc1JlbGF0aXZlUmFuZ2UgfSBmcm9tICcuL3JlcG9ydC12aWV3LWNvbmZpZyc7XG5pbXBvcnQgeyBvZmZlcnNFeGNsdWRlIH0gZnJvbSAnLi9yZXBvcnQtdmlld2VyLWZlYXR1cmVzJztcblxuXG4vLyBUaGUgVHlwZSBzZWxlY3QncyBjaG9pY2VzLiBBIGNvbHVtbiB0aGF0IGNhbiBiZSBlaXRoZXIgaG9sZHMgYm90aC5cbmV4cG9ydCBjb25zdCBGSUxURVJfVFlQRV9PUFRJT05TOiBGaWx0ZXJTZXR0aW5nc09wdGlvbjxSZXBvcnRGaWx0ZXJUeXBlPltdID0gW1xuICB7IHZhbHVlOiAnc2VsZWN0JywgbmFtZTogJ1ZhbHVlcycgfSxcbiAgeyB2YWx1ZTogJ251bWJlclJhbmdlJywgbmFtZTogJ051bWJlciByYW5nZScgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBUWVBFX0xPQ0tFRF9UT09MVElQID0gJ1JlbW92ZSB0aGUgZmlsdGVyIHRvIGNoYW5nZSBpdHMgdHlwZS4nO1xuZXhwb3J0IGNvbnN0IFBBR0VfRklMVEVSX1RPT0xUSVAgPSAnQSBwYWdlIGZpbHRlciBzaG93cyBpbiB0aGUgcGFnZSBiYXIgb25seS4nO1xuZXhwb3J0IGNvbnN0IENPTVBPTkVOVF9UT0dHTEVfVE9PTFRJUCA9ICdTaG93IG9uIHRoaXMgY29tcG9uZW50JztcblxuLy8gVGhlIERlZmF1bHQgcGVyaW9kIHNlbGVjdCdzIHZhbHVlIGZvciBhIHJhbmdlIG9mIGZpeGVkIGRheXMuIE5vIHJlbGF0aXZlXG4vLyByYW5nZSBpcyBuYW1lZCB0aGlzLlxuZXhwb3J0IGNvbnN0IEZJWEVEX0RBVEVTX1BFUklPRCA9ICdmaXhlZCc7XG5cbi8vIEhvdyBtYW55IGRlY2ltYWxzIGEgRGVmYXVsdCBtaW5pbXVtIG9yIERlZmF1bHQgbWF4aW11bSB0YWtlcy5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JPVU5EX1NDQUxFID0gNjtcblxuLy8gRXZlcnkgUmVwb3J0IGJhciBjaG9pY2UsIGluIHRoZSBvcmRlciB0aGUgc2VsZWN0IGxpc3RzIHRoZW0uXG5jb25zdCBCQVJfUExBQ0VNRU5UX09QVElPTlM6IEZpbHRlclNldHRpbmdzT3B0aW9uPEZpbHRlckJhclBsYWNlbWVudD5bXSA9IFtcbiAgeyB2YWx1ZTogJ29mZicsIG5hbWU6ICdPZmYnIH0sXG4gIHsgdmFsdWU6ICdldmVyeScsIG5hbWU6ICdFdmVyeSBwYWdlJyB9LFxuICB7IHZhbHVlOiAncGFnZScsIG5hbWU6ICdUaGlzIHBhZ2Ugb25seScgfSxcbl07XG5cblxuLy8gQSBudW1iZXIgd2l0aCBpdHMgZ3JvdXAgY29tbWFzIGluIHBsYWNlICgnMSwyNTAuNScsICctMTIsMDAwJykuXG5jb25zdCBHUk9VUEVEX0RFQ0lNQUwgPSAvXi0/XFxkezEsM30oLFxcZHszfSkrKFxcLlxcZCopPyQvO1xuLy8gQSBwbGFpbiBkZWNpbWFsIG51bWJlciAoJzEyNTAuNScsICctMycsICcwJywgJy41JykuIEhleCwgYmluYXJ5LCBvY3RhbCxcbi8vIGV4cG9uZW50cyBhbmQgaW5uZXIgc3BhY2VzIGRvIG5vdCBtYXRjaCwgdGhvdWdoIE51bWJlcigpIHJlYWRzIHNvbWUuXG5jb25zdCBQTEFJTl9ERUNJTUFMID0gL14tPyhcXGQrKFxcLlxcZCopP3xcXC5cXGQrKSQvO1xuXG4vLyBBIGRlZmF1bHQgcmFuZ2UgZW5kIGFzIHR5cGVkLiBBbiBlbXB0eSBmaWVsZCBpcyBubyBlbmQuIEEgbnVtYmVyIGlucHV0XG4vLyB3aXRoIGEgbWFzayBoYW5kcyBiYWNrIHRleHQgd2l0aCBpdHMgZ3JvdXAgY29tbWFzICgnMSwyNTAuNScpLCBzbyB0aG9zZSBnb1xuLy8gYmVmb3JlIE51bWJlcigpIHJlYWRzIGl0OyAwIGlzIGFuIGVuZCBsaWtlIGFueSBvdGhlci4gQW55dGhpbmcgdGhhdCBpcyBub3Rcbi8vIGEgZGVjaW1hbCBudW1iZXIgaXMgbm8gZW5kLlxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRGVmYXVsdEJvdW5kKHJhdzogdW5rbm93bik6IG51bWJlciB8IG51bGwge1xuICBpZiAodHlwZW9mIHJhdyA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHJhdykgPyByYXcgOiBudWxsO1xuICB9XG5cbiAgaWYgKHR5cGVvZiByYXcgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB0cmltbWVkID0gcmF3LnRyaW0oKTtcbiAgY29uc3QgdGV4dCA9IEdST1VQRURfREVDSU1BTC50ZXN0KHRyaW1tZWQpID8gdHJpbW1lZC5yZXBsYWNlKC8sL2csICcnKSA6IHRyaW1tZWQ7XG4gIGlmICghUExBSU5fREVDSU1BTC50ZXN0KHRleHQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IE51bWJlcih0ZXh0KTtcblxuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHZhbHVlKSA/IHZhbHVlIDogbnVsbDtcbn1cblxuLy8gV2h5IHR3byByYW5nZSBlbmRzIGNhbm5vdCBiZSBzYXZlZCwgaW4gdGhlIHNlcnZlcidzIHdvcmRzLCBvciBudWxsLiBBbiBvcGVuXG4vLyBlbmQgaXMgYWx3YXlzIGZpbmUuXG5leHBvcnQgZnVuY3Rpb24gYm91bmRzRXJyb3IobWluOiBudW1iZXIgfCBudWxsLCBtYXg6IG51bWJlciB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKG1pbiA9PT0gbnVsbCB8fCBtYXggPT09IG51bGwgfHwgbWluIDw9IG1heCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGBtaW4gKCR7bWlufSkgaXMgYWJvdmUgbWF4ICgke21heH0pLmA7XG59XG5cbi8vIFRoZSBUeXBlIHNlbGVjdCBvZiBhIGNvbHVtbiBvbiB0aGUgY29tcG9uZW50IHNldHRpbmdzJyBGaWx0ZXJzIHRhYi4gSXRcbi8vIHNob3dzIHdoZW4gdGhlIGNvbHVtbiBjYW4gdGFrZSBlaXRoZXIgdHlwZSBhbmQgdGhlIHNlcnZlciBzZXJ2ZXMgbnVtYmVyXG4vLyByYW5nZXMgKGFuIG9sZGVyIHNlcnZlciBsaXN0cyBubyBmZWF0dXJlcykuIEEgZmlsdGVyJ3MgdHlwZSBjYW5ub3QgY2hhbmdlLFxuLy8gc28gaXQgaXMgbG9ja2VkIHdoaWxlIHRoZSBjb2x1bW4gaGFzIGEgZmlsdGVyIG9uIHRoaXMgY29tcG9uZW50LlxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVTZWxlY3RTdGF0ZShcbiAgdHlwZXM6IFJlcG9ydEZpbHRlclR5cGVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGhhc0ZpbHRlck9uVGhpc0NvbXBvbmVudDogYm9vbGVhbixcbiAgZmVhdHVyZXM6IFJlcG9ydFZpZXdlckZlYXR1cmVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBGaWx0ZXJUeXBlU2VsZWN0U3RhdGUge1xuICBjb25zdCBzaG93ID0gKGZlYXR1cmVzID8/IFtdKS5pbmNsdWRlcygnbnVtYmVyUmFuZ2UnKVxuICAgICYmIEZJTFRFUl9UWVBFX09QVElPTlMuZXZlcnkoKG9wdGlvbikgPT4gKHR5cGVzID8/IFtdKS5pbmNsdWRlcyhvcHRpb24udmFsdWUpKTtcblxuICBpZiAoIXNob3cpIHtcbiAgICByZXR1cm4geyBzaG93OiBmYWxzZSwgZGlzYWJsZWQ6IGZhbHNlLCB0b29sdGlwOiBudWxsIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNob3c6IHRydWUsXG4gICAgZGlzYWJsZWQ6IGhhc0ZpbHRlck9uVGhpc0NvbXBvbmVudCxcbiAgICB0b29sdGlwOiBoYXNGaWx0ZXJPblRoaXNDb21wb25lbnQgPyBUWVBFX0xPQ0tFRF9UT09MVElQIDogbnVsbCxcbiAgfTtcbn1cblxuLy8gVGhlIGxldmVscyBhIG5ldyBvciBtb3ZlZCBmaWx0ZXIgY2FuIHRha2Ugb24gYSBjb21wb25lbnQuIFRoaXMgcGFnZSBvbmx5XG4vLyBuZWVkcyBhIHNlcnZlciB0aGF0IHNlcnZlcyBwYWdlIGZpbHRlcnMgYW5kIGEgY29tcG9uZW50IG9uIGEgcGFnZSAoYVxuLy8gaGVhZGVyIG9yIGZvb3RlciBjb21wb25lbnQgaXMgb24gbm8gcGFnZSkuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyTGV2ZWxDaG9pY2VzKFxuICBmZWF0dXJlczogUmVwb3J0Vmlld2VyRmVhdHVyZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgb25QYWdlOiBib29sZWFuLFxuKTogUmVwb3J0RmlsdGVyTGV2ZWxbXSB7XG4gIGNvbnN0IGxldmVsczogUmVwb3J0RmlsdGVyTGV2ZWxbXSA9IFsnY29tcG9uZW50JywgJ3JlcG9ydCcsICdib3RoJ107XG5cbiAgcmV0dXJuIG9uUGFnZSAmJiAoZmVhdHVyZXMgPz8gW10pLmluY2x1ZGVzKCdwYWdlU2NvcGUnKVxuICAgID8gWy4uLmxldmVscywgJ3BhZ2UnXVxuICAgIDogbGV2ZWxzO1xufVxuXG4vLyBUaGUgUmVwb3J0IGJhciBzZWxlY3QncyBjaG9pY2VzIGZvciB0aGUgbGV2ZWxzIG9uIG9mZmVyLiBUaGUgY2hvaWNlIGEgcm93XG4vLyBhbHJlYWR5IGhvbGRzIGlzIGFsd2F5cyBsaXN0ZWQsIHNvIHRoZSBzZWxlY3QgbmV2ZXIgc2hvd3MgYmxhbmsuXG5leHBvcnQgZnVuY3Rpb24gYmFyUGxhY2VtZW50T3B0aW9ucyhcbiAgbGV2ZWxDaG9pY2VzOiBSZXBvcnRGaWx0ZXJMZXZlbFtdLFxuICBjdXJyZW50OiBGaWx0ZXJCYXJQbGFjZW1lbnQgPSAnb2ZmJyxcbik6IEZpbHRlclNldHRpbmdzT3B0aW9uPEZpbHRlckJhclBsYWNlbWVudD5bXSB7XG4gIHJldHVybiBCQVJfUExBQ0VNRU5UX09QVElPTlMuZmlsdGVyKChvcHRpb24pID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbi52YWx1ZSkge1xuICAgICAgY2FzZSAnZXZlcnknOlxuICAgICAgICByZXR1cm4gbGV2ZWxDaG9pY2VzLmluY2x1ZGVzKCdyZXBvcnQnKSB8fCBsZXZlbENob2ljZXMuaW5jbHVkZXMoJ2JvdGgnKSB8fCBjdXJyZW50ID09PSAnZXZlcnknO1xuICAgICAgY2FzZSAncGFnZSc6XG4gICAgICAgIHJldHVybiBsZXZlbENob2ljZXMuaW5jbHVkZXMoJ3BhZ2UnKSB8fCBjdXJyZW50ID09PSAncGFnZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG4vLyBBIHZhbHVlJ3MgUmVwb3J0IGJhciBjaG9pY2VzLiBBIHZhbHVlIGhhcyBubyBzdHJpcCBvZiBpdHMgb3duIGFuZCBpdHNcbi8vIGdyb3VwIG1heSBiZSBzaGFyZWQsIHNvIGEgcGljayBuZXZlciBsb3dlcnMgdGhlIGdyb3VwICh0aGUgaW5saW5lIHZhbHVlc1xuLy8gcnVsZSk6IFRoaXMgcGFnZSBvbmx5IGlzIG9mZmVyZWQgZm9yIGEgbmV3IGZpbHRlciwgb3IgZm9yIGEgZ3JvdXAgdGhhdCBpc1xuLy8gYWxyZWFkeSBhIHBhZ2UgZ3JvdXAsIG5ldmVyIHRvIG1vdmUgYSBzaGFyZWQgZ3JvdXAgdG8gb25lIHBhZ2UuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVQbGFjZW1lbnRPcHRpb25zKFxuICBsZXZlbENob2ljZXM6IFJlcG9ydEZpbHRlckxldmVsW10sXG4gIGN1cnJlbnQ6IFJlcG9ydEZpbHRlckxldmVsIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IEZpbHRlclNldHRpbmdzT3B0aW9uPEZpbHRlckJhclBsYWNlbWVudD5bXSB7XG4gIGNvbnN0IGNob2ljZXMgPSAhY3VycmVudCB8fCBjdXJyZW50ID09PSAncGFnZSdcbiAgICA/IGxldmVsQ2hvaWNlc1xuICAgIDogbGV2ZWxDaG9pY2VzLmZpbHRlcigobGV2ZWwpID0+IGxldmVsICE9PSAncGFnZScpO1xuXG4gIHJldHVybiBiYXJQbGFjZW1lbnRPcHRpb25zKGNob2ljZXMsIGJhclBsYWNlbWVudChjdXJyZW50KSk7XG59XG5cbi8vIFRoZSBsZXZlbCBhIHZhbHVlJ3MgZmlsdGVyIGdyb3VwIGVuZHMgYXQgYWZ0ZXIgYSBSZXBvcnQgYmFyIHBpY2ssIG9yIG51bGxcbi8vIHdoZW4gdGhlIHZhbHVlIGxlYXZlcyBpdC4gT2ZmIHVubGlua3MgdGhpcyB2YWx1ZSBhbG9uZSBhbmQgdGhlIGdyb3VwIGtlZXBzXG4vLyBpdHMgb3RoZXIgbWVtYmVycy4gQSBuZXcgZmlsdGVyIHRha2VzIHRoZSBwaWNrJ3MgbGV2ZWwuIEV2ZXJ5IHBhZ2UgcmFpc2VzIGFcbi8vIHN0cmlwLW9ubHkgZ3JvdXAgdG8gYm90aCwga2VlcGluZyBpdHMgc3RyaXBzLCBhbmQgYSBwYWdlIGdyb3VwIHRvIHRoZVxuLy8gcmVwb3J0IGJhci4gTm90aGluZyBlbHNlIG1vdmVzIHRoZSBncm91cCwgc28gYSB2YWx1ZSBuZXZlciBsb3dlcnMgaXQuXG5leHBvcnQgZnVuY3Rpb24gdmFsdWVGaWx0ZXJMZXZlbChcbiAgcGxhY2VtZW50OiBGaWx0ZXJCYXJQbGFjZW1lbnQsXG4gIGN1cnJlbnQ6IFJlcG9ydEZpbHRlckxldmVsIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IFJlcG9ydEZpbHRlckxldmVsIHwgbnVsbCB7XG4gIGlmIChwbGFjZW1lbnQgPT09ICdvZmYnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIWN1cnJlbnQpIHtcbiAgICByZXR1cm4gcGxhY2VtZW50ID09PSAncGFnZScgPyAncGFnZScgOiAncmVwb3J0JztcbiAgfVxuXG4gIGlmIChwbGFjZW1lbnQgIT09ICdldmVyeScpIHtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIHN3aXRjaCAoY3VycmVudCkge1xuICAgIGNhc2UgJ2NvbXBvbmVudCc6XG4gICAgICByZXR1cm4gJ2JvdGgnO1xuICAgIGNhc2UgJ3BhZ2UnOlxuICAgICAgcmV0dXJuICdyZXBvcnQnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgfVxufVxuXG4vLyBXaGVyZSBhIGdyb3VwIG9mIGEgbGV2ZWwgc2hvd3MgaW4gdGhlIHJlcG9ydCBiYXIuIE5vIGdyb3VwIChubyBmaWx0ZXIpIGlzXG4vLyBvZmYuXG5leHBvcnQgZnVuY3Rpb24gYmFyUGxhY2VtZW50KGxldmVsOiBSZXBvcnRGaWx0ZXJMZXZlbCB8IG51bGwgfCB1bmRlZmluZWQpOiBGaWx0ZXJCYXJQbGFjZW1lbnQge1xuICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgY2FzZSAncmVwb3J0JzpcbiAgICBjYXNlICdib3RoJzpcbiAgICAgIHJldHVybiAnZXZlcnknO1xuICAgIGNhc2UgJ3BhZ2UnOlxuICAgICAgcmV0dXJuICdwYWdlJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdvZmYnO1xuICB9XG59XG5cbi8vIFdoZXRoZXIgYSBncm91cCBvZiBhIGxldmVsIHNob3dzIG9uIGl0cyBjb21wb25lbnRzLlxuZXhwb3J0IGZ1bmN0aW9uIHNob3duT25Db21wb25lbnQobGV2ZWw6IFJlcG9ydEZpbHRlckxldmVsIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gbGV2ZWwgPT09ICdjb21wb25lbnQnIHx8IGxldmVsID09PSAnYm90aCc7XG59XG5cbi8vIFRoZSBsZXZlbCB0aGUgdHdvIGNvbnRyb2xzIG9mIGEgcm93IGFzayBmb3IsIG9yIG51bGwgd2hlbiB0aGV5IGFzayBmb3Igbm9cbi8vIGZpbHRlciBhdCBhbGwuIEEgcGFnZSBmaWx0ZXIgc2hvd3MgaW4gaXRzIHBhZ2UncyBiYXIgb25seSwgc28gVGhpcyBwYWdlXG4vLyBvbmx5IGlnbm9yZXMgdGhlIFRoaXMgY29tcG9uZW50IHRvZ2dsZS5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJMZXZlbChwbGFjZW1lbnQ6IEZpbHRlckJhclBsYWNlbWVudCwgY29tcG9uZW50OiBib29sZWFuKTogUmVwb3J0RmlsdGVyTGV2ZWwgfCBudWxsIHtcbiAgc3dpdGNoIChwbGFjZW1lbnQpIHtcbiAgICBjYXNlICdwYWdlJzpcbiAgICAgIHJldHVybiAncGFnZSc7XG4gICAgY2FzZSAnZXZlcnknOlxuICAgICAgcmV0dXJuIGNvbXBvbmVudCA/ICdib3RoJyA6ICdyZXBvcnQnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gY29tcG9uZW50ID8gJ2NvbXBvbmVudCcgOiBudWxsO1xuICB9XG59XG5cbi8vIFRoZSBUaGlzIGNvbXBvbmVudCB0b2dnbGUgb2YgYSByb3c6IGxvY2tlZCB3aGlsZSBUaGlzIHBhZ2Ugb25seSBpcyBwaWNrZWQuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9uZW50VG9nZ2xlU3RhdGUocGxhY2VtZW50OiBGaWx0ZXJCYXJQbGFjZW1lbnQpOiBGaWx0ZXJDb21wb25lbnRUb2dnbGVTdGF0ZSB7XG4gIHJldHVybiBwbGFjZW1lbnQgPT09ICdwYWdlJ1xuICAgID8geyBkaXNhYmxlZDogdHJ1ZSwgdG9vbHRpcDogUEFHRV9GSUxURVJfVE9PTFRJUCB9XG4gICAgOiB7IGRpc2FibGVkOiBmYWxzZSwgdG9vbHRpcDogQ09NUE9ORU5UX1RPR0dMRV9UT09MVElQIH07XG59XG5cbi8vIFRoZSBncm91cHMgdGhlIHJlcG9ydCBzZXR0aW5ncycgRmlsdGVycyB0YWIgbGlzdHMgZGVmYXVsdHMgZm9yOiB0aG9zZSBvZlxuLy8gdGhlIHJlcG9ydCBiYXIsIGV2ZXJ5IHBhZ2Ugb3Igb25lLCBpbiBiYXIgb3JkZXIuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFJvd0dyb3Vwcyhncm91cHM6IFJlcG9ydEZpbHRlckdyb3VwW10gfCBudWxsIHwgdW5kZWZpbmVkKTogUmVwb3J0RmlsdGVyR3JvdXBbXSB7XG4gIHJldHVybiAoZ3JvdXBzID8/IFtdKVxuICAgIC5maWx0ZXIoKGdyb3VwKSA9PiBncm91cC5sZXZlbCA9PT0gJ3JlcG9ydCcgfHwgZ3JvdXAubGV2ZWwgPT09ICdib3RoJyB8fCBncm91cC5sZXZlbCA9PT0gJ3BhZ2UnKVxuICAgIC5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcik7XG59XG5cbi8vIEEgZGVmYXVsdCByb3cncyBsYWJlbDogYSBwYWdlIGdyb3VwIG5hbWVzIGl0cyBwYWdlLCAnUmVnaW9uIChwYWdlXG4vLyBcIk92ZXJ2aWV3XCIpJy4gQSBwYWdlIHdpdGggbm8gbmFtZSByZWFkcyBhcyB0aGUgY2FudmFzIG5hbWVzIGl0ICgnUGFnZSAyJykuXG4vLyBBIHBhZ2UgdGhpcyByZXBvcnQgbm8gbG9uZ2VyIGhvbGRzIGFkZHMgbm90aGluZy5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0Um93TGFiZWwoZ3JvdXA6IFJlcG9ydEZpbHRlckdyb3VwLCBwYWdlczogUmVwb3J0UGFnZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGNvbnN0IGxhYmVsID0gZ3JvdXAubGFiZWwgfHwgZ3JvdXAuZmlsdGVycz8uWzBdPy5maWx0ZXJDb2x1bW4gfHwgJ0ZpbHRlcic7XG5cbiAgaWYgKGdyb3VwLmxldmVsICE9PSAncGFnZScpIHtcbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IChwYWdlcyA/PyBbXSkuZmluZEluZGV4KChwYWdlKSA9PiBwYWdlLmlkID09PSBncm91cC5wYWdlSWQpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG5cbiAgcmV0dXJuIGAke2xhYmVsfSAocGFnZSBcIiR7cGFnZXNbaW5kZXhdLm5hbWUgfHwgYFBhZ2UgJHtpbmRleCArIDF9YH1cIilgO1xufVxuXG4vLyBUaGUgRGVmYXVsdCBwZXJpb2Qgc2VsZWN0J3MgY2hvaWNlczogRml4ZWQgZGF0ZXMsIHRoZW4gZXZlcnkgcmVsYXRpdmVcbi8vIHJhbmdlIGluIHRoZSBzZXJ2ZXIgZW51bSdzIG9yZGVyLCBuYW1lZCBieSBgbGFiZWxzYC4gQSBzdG9yZWQgcmFuZ2UgdGhpc1xuLy8gdmlld2VyIGRvZXMgbm90IGtub3cgaXMgbGlzdGVkIGxhc3QsIHNvIHRoZSBzZWxlY3Qgc3RpbGwgc2hvd3MgaXQuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFBlcmlvZE9wdGlvbnMoXG4gIGxhYmVsczogKHJlbGF0aXZlOiBSZXBvcnRSZWxhdGl2ZVJhbmdlKSA9PiBzdHJpbmcsXG4gIHN0b3JlZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsXG4pOiBGaWx0ZXJTZXR0aW5nc09wdGlvbltdIHtcbiAgY29uc3Qgb3B0aW9uczogRmlsdGVyU2V0dGluZ3NPcHRpb25bXSA9IFtcbiAgICB7IHZhbHVlOiBGSVhFRF9EQVRFU19QRVJJT0QsIG5hbWU6ICdGaXhlZCBkYXRlcycgfSxcbiAgICAuLi5SRUxBVElWRV9SQU5HRV9OQU1FUy5tYXAoKHJlbGF0aXZlKSA9PiAoeyB2YWx1ZTogcmVsYXRpdmUsIG5hbWU6IGxhYmVscyhyZWxhdGl2ZSkgfSkpLFxuICBdO1xuXG4gIHJldHVybiBzdG9yZWQgJiYgc3RvcmVkICE9PSBGSVhFRF9EQVRFU19QRVJJT0QgJiYgIWlzUmVsYXRpdmVSYW5nZShzdG9yZWQpXG4gICAgPyBbLi4ub3B0aW9ucywgeyB2YWx1ZTogc3RvcmVkLCBuYW1lOiBsYWJlbHMoc3RvcmVkIGFzIFJlcG9ydFJlbGF0aXZlUmFuZ2UpIH1dXG4gICAgOiBvcHRpb25zO1xufVxuXG4vLyBUaGUgRGVmYXVsdCBwZXJpb2QgYSBzdG9yZWQgZGF0ZSByYW5nZSBkZWZhdWx0IG9wZW5zIG9uOiBpdHMgcmVsYXRpdmVcbi8vIHJhbmdlLCBlbHNlIEZpeGVkIGRhdGVzICh0aGUgZGF5cywgb3Igbm9uZSkuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFBlcmlvZChzdG9yZWQ6IEZpbHRlckdyb3VwRGVmYXVsdCB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICByZXR1cm4gc3RvcmVkPy5yZWxhdGl2ZSAmJiAhc3RvcmVkLnN0YXJ0ICYmICFzdG9yZWQuZW5kXG4gICAgPyBzdG9yZWQucmVsYXRpdmVcbiAgICA6IEZJWEVEX0RBVEVTX1BFUklPRDtcbn1cblxuLy8gQSBkYXRlIHJhbmdlIGRlZmF1bHQgaW4gaXRzIHN0b3JlZCBzaGFwZTogdGhlIHJlbGF0aXZlIHJhbmdlIHBpY2tlZCwgZWxzZVxuLy8gdGhlIGZpeGVkIGRheXMsIG9yIG51bGwgd2hlbiB0aGVyZSBhcmUgbm9uZS4gTmV2ZXIgYm90aDogdGhlIHNlcnZlclxuLy8gcmVmdXNlcyBhIHJlbGF0aXZlIHJhbmdlIHdpdGggZGF5cy5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmFuZ2VEZWZhdWx0KFxuICBwZXJpb2Q6IHN0cmluZyxcbiAgc3RhcnQ6IHN0cmluZyB8IG51bGwsXG4gIGVuZDogc3RyaW5nIHwgbnVsbCxcbik6IEZpbHRlckdyb3VwRGVmYXVsdCB8IG51bGwge1xuICBpZiAocGVyaW9kICE9PSBGSVhFRF9EQVRFU19QRVJJT0QpIHtcbiAgICByZXR1cm4geyByZWxhdGl2ZTogcGVyaW9kIH07XG4gIH1cblxuICBpZiAoIXN0YXJ0ICYmICFlbmQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7IC4uLihzdGFydCA/IHsgc3RhcnQgfSA6IHt9KSwgLi4uKGVuZCA/IHsgZW5kIH0gOiB7fSkgfTtcbn1cblxuLy8gQSBzZWxlY3QgZGVmYXVsdCBpbiBpdHMgc3RvcmVkIHNoYXBlOiB0aGUgcGlja3Mga2VwdCwgb3IgbGVmdCBvdXQgd2hpbGVcbi8vIEV4Y2x1ZGUgdGhlc2UgdmFsdWVzIGlzIG9uLCBvciBudWxsIHdoZW4gbm90aGluZyBpcyBwaWNrZWQuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0RGVmYXVsdCh2YWx1ZXM6IHVua25vd25bXSwgZXhjbHVkZTogYm9vbGVhbik6IEZpbHRlckdyb3VwRGVmYXVsdCB8IG51bGwge1xuICBpZiAoIXZhbHVlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBleGNsdWRlID8geyBleGNsdWRlVmFsdWVzOiB2YWx1ZXMgfSA6IHsgdmFsdWVzIH07XG59XG5cbi8vIEEgbnVtYmVyIHJhbmdlIGRlZmF1bHQgaW4gaXRzIHN0b3JlZCBzaGFwZSBmcm9tIHRoZSBlbmRzIGFzIHR5cGVkOiBhblxuLy8gb3BlbiBlbmQgaXMgbGVmdCBvdXQsIDAgaXMga2VwdCwgYW5kIHR3byBvcGVuIGVuZHMgYXJlIG5vIGRlZmF1bHQuXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyUmFuZ2VEZWZhdWx0KHJhd01pbjogdW5rbm93biwgcmF3TWF4OiB1bmtub3duKTogRmlsdGVyR3JvdXBEZWZhdWx0IHwgbnVsbCB7XG4gIGNvbnN0IG1pbiA9IHBhcnNlRGVmYXVsdEJvdW5kKHJhd01pbik7XG4gIGNvbnN0IG1heCA9IHBhcnNlRGVmYXVsdEJvdW5kKHJhd01heCk7XG5cbiAgaWYgKG1pbiA9PT0gbnVsbCAmJiBtYXggPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7IC4uLihtaW4gIT09IG51bGwgPyB7IG1pbiB9IDoge30pLCAuLi4obWF4ICE9PSBudWxsID8geyBtYXggfSA6IHt9KSB9O1xufVxuXG4vLyBXaGV0aGVyIGEgc2VsZWN0IGdyb3VwJ3MgZGVmYXVsdCByb3cgb2ZmZXJzIEV4Y2x1ZGUgdGhlc2UgdmFsdWVzOiB0aGVcbi8vIHJlcG9ydCBiYXIncyBydWxlIChvZmZlcnNFeGNsdWRlKSwgc28gbm90IG9uIGEgc2VydmVyIHRoYXQgZG9lcyBub3Qgc2VydmVcbi8vIGV4Y2x1ZGUgKGFuIG9sZGVyIHNlcnZlciBsaXN0cyBubyBmZWF0dXJlcykgbm9yIG9uIGEgZ3JvdXAgd2l0aCBhIG1lbWJlclxuLy8gdGhhdCBiaW5kcyBzZXZlcmFsIGNvbHVtbnMgKG11bHRpQ29sdW1uKS4gQSBkZWZhdWx0IHRoYXQgYWxyZWFkeSBsZWF2ZXNcbi8vIHZhbHVlcyBvdXQga2VlcHMgdGhlIHRvZ2dsZSwgc28gaXQgY2FuIGJlIHR1cm5lZCBvZmYuXG5leHBvcnQgZnVuY3Rpb24gc2hvd0V4Y2x1ZGVUb2dnbGUoXG4gIGdyb3VwOiBSZXBvcnRGaWx0ZXJHcm91cCxcbiAgZmVhdHVyZXM6IFJlcG9ydFZpZXdlckZlYXR1cmVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgaWYgKGdyb3VwLnR5cGUgPT09ICdzZWxlY3QnICYmIGdyb3VwLmNvbmZpZz8uZGVmYXVsdD8uZXhjbHVkZVZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gb2ZmZXJzRXhjbHVkZShncm91cCwgZmVhdHVyZXMpO1xufVxuXG4vLyBBIHN0b3JlZCBvciBkcmFmdCBkZWZhdWx0IGluIGEgc3RhYmxlIGZvcm0gZm9yIGNvbXBhcmluZzogZW1wdHkgYW5kXG4vLyBhYnNlbnQga2V5cyBhcmUgZHJvcHBlZCwgc28gYSBuby1vcCBlZGl0IGRvZXMgbm90IHJlYWQgYXMgYSBjaGFuZ2UuIDAgaXMgYW5cbi8vIGVuZCBsaWtlIGFueSBvdGhlci4gTm90aGluZyBsZWZ0IGlzIG51bGwuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRGVmYXVsdCh2YWx1ZTogRmlsdGVyR3JvdXBEZWZhdWx0IHwgbnVsbCB8IHVuZGVmaW5lZCk6IEZpbHRlckdyb3VwRGVmYXVsdCB8IG51bGwge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBub3JtYWxpemVkOiBGaWx0ZXJHcm91cERlZmF1bHQgPSB7fTtcbiAgaWYgKHZhbHVlLnN0YXJ0KSB7XG4gICAgbm9ybWFsaXplZC5zdGFydCA9IHZhbHVlLnN0YXJ0O1xuICB9XG4gIGlmICh2YWx1ZS5lbmQpIHtcbiAgICBub3JtYWxpemVkLmVuZCA9IHZhbHVlLmVuZDtcbiAgfVxuICBpZiAodmFsdWUudmFsdWVzPy5sZW5ndGgpIHtcbiAgICBub3JtYWxpemVkLnZhbHVlcyA9IHZhbHVlLnZhbHVlcztcbiAgfVxuICBpZiAodmFsdWUuZXhjbHVkZVZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgbm9ybWFsaXplZC5leGNsdWRlVmFsdWVzID0gdmFsdWUuZXhjbHVkZVZhbHVlcztcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlLm1pbiA9PT0gJ251bWJlcicpIHtcbiAgICBub3JtYWxpemVkLm1pbiA9IHZhbHVlLm1pbjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlLm1heCA9PT0gJ251bWJlcicpIHtcbiAgICBub3JtYWxpemVkLm1heCA9IHZhbHVlLm1heDtcbiAgfVxuICBpZiAodmFsdWUudmFsdWUpIHtcbiAgICBub3JtYWxpemVkLnZhbHVlID0gdmFsdWUudmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlLnJlbGF0aXZlKSB7XG4gICAgbm9ybWFsaXplZC5yZWxhdGl2ZSA9IHZhbHVlLnJlbGF0aXZlO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG5vcm1hbGl6ZWQpLmxlbmd0aCA/IG5vcm1hbGl6ZWQgOiBudWxsO1xufVxuXG4vLyBXaGV0aGVyIGEgcm93J3MgZHJhZnQgZGVmYXVsdCBkaWZmZXJzIGZyb20gdGhlIGdyb3VwJ3Mgc3RvcmVkIG9uZS4gT25seSBhXG4vLyBjaGFuZ2VkIHJvdyBpcyBzYXZlZC5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0Q2hhbmdlZChcbiAgc3RvcmVkOiBGaWx0ZXJHcm91cERlZmF1bHQgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBkcmFmdDogRmlsdGVyR3JvdXBEZWZhdWx0IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobm9ybWFsaXplRGVmYXVsdChzdG9yZWQpKSAhPT0gSlNPTi5zdHJpbmdpZnkobm9ybWFsaXplRGVmYXVsdChkcmFmdCkpO1xufVxuIl19
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNldHRpbmdzLXJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2ZpbHRlci1zZXR0aW5ncy1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RCxxRUFBcUU7QUFDckUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQTZDO0lBQzNFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO0lBQ25DLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFO0NBQy9DLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyx1Q0FBdUMsQ0FBQztBQUMzRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRywyQ0FBMkMsQ0FBQztBQUMvRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztBQUVqRSwyRUFBMkU7QUFDM0UsdUJBQXVCO0FBQ3ZCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztBQUUxQyxnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBRXJDLDZFQUE2RTtBQUM3RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHdCQUF3QixDQUFDO0FBQzVELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLGdFQUFnRSxDQUFDO0FBQzVHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFFM0MsK0RBQStEO0FB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LENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkIsVUFBVSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM1RCxDQUFDO0FBRUQsNEVBQTRFO0FBQzVFLHdCQUF3QjtBQUN4QixNQUFNLFVBQVUsY0FBYyxDQUM1QixNQUE2QyxFQUM3QyxLQUE0QztJQUU1QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBydWxlcyBiZWhpbmQgdGhlIHR3byBmaWx0ZXIgc2V0dGluZ3MgZGlhbG9ncywga2VwdCBwdXJlIHNvIHRoZSBub2RlXG4vLyBoYXJuZXNzIGNoZWNrcyB0aGVtIHdpdGhvdXQgYSBkaWFsb2cuIFRoZSBjb21wb25lbnQgc2V0dGluZ3MnIEZpbHRlcnMgdGFiXG4vLyByZWFkcyB0aGUgVHlwZSBzZWxlY3QsIHRoZSBSZXBvcnQgYmFyIHNlbGVjdCBhbmQgdGhlIFRoaXMgY29tcG9uZW50IHRvZ2dsZVxuLy8gZnJvbSBoZXJlOyB0aGUgcmVwb3J0IHNldHRpbmdzJyBGaWx0ZXJzIHRhYiByZWFkcyBpdHMgZGVmYXVsdCByb3dzICh0aGVcbi8vIHBlcmlvZCwgdGhlIGV4Y2x1ZGUgdG9nZ2xlLCB0aGUgbnVtYmVyIHJhbmdlIGVuZHMgYW5kIHRoZWlyIGNoZWNrKSBmcm9tXG4vLyBoZXJlLiBUaGUgZGlhbG9ncyBvbmx5IGNhbGwgdGhlc2UuXG5pbXBvcnQgeyBGaWx0ZXJCYXJQbGFjZW1lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWJhci1wbGFjZW1lbnQudHlwZSc7XG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnRUb2dnbGVTdGF0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXItY29tcG9uZW50LXRvZ2dsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyU2V0dGluZ3NPcHRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLXNldHRpbmdzLW9wdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyVHlwZVNlbGVjdFN0YXRlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci10eXBlLXNlbGVjdC1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0Vmlld2VyRmVhdHVyZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXBvcnQtdmlld2VyLWZlYXR1cmUudHlwZSc7XG5pbXBvcnQge1xuICBGaWx0ZXJHcm91cERlZmF1bHQsXG4gIFJlcG9ydEZpbHRlckdyb3VwLFxuICBSZXBvcnRGaWx0ZXJMZXZlbCxcbiAgUmVwb3J0RmlsdGVyVHlwZSxcbiAgUmVwb3J0UGFnZSxcbiAgUmVwb3J0UmVsYXRpdmVSYW5nZSxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUkVMQVRJVkVfUkFOR0VfTkFNRVMsIGlzUmVsYXRpdmVSYW5nZSB9IGZyb20gJy4vcmVwb3J0LXZpZXctY29uZmlnJztcbmltcG9ydCB7IG9mZmVyc0V4Y2x1ZGUgfSBmcm9tICcuL3JlcG9ydC12aWV3ZXItZmVhdHVyZXMnO1xuXG5cbi8vIFRoZSBUeXBlIHNlbGVjdCdzIGNob2ljZXMuIEEgY29sdW1uIHRoYXQgY2FuIGJlIGVpdGhlciBob2xkcyBib3RoLlxuZXhwb3J0IGNvbnN0IEZJTFRFUl9UWVBFX09QVElPTlM6IEZpbHRlclNldHRpbmdzT3B0aW9uPFJlcG9ydEZpbHRlclR5cGU+W10gPSBbXG4gIHsgdmFsdWU6ICdzZWxlY3QnLCBuYW1lOiAnVmFsdWVzJyB9LFxuICB7IHZhbHVlOiAnbnVtYmVyUmFuZ2UnLCBuYW1lOiAnTnVtYmVyIHJhbmdlJyB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IFRZUEVfTE9DS0VEX1RPT0xUSVAgPSAnUmVtb3ZlIHRoZSBmaWx0ZXIgdG8gY2hhbmdlIGl0cyB0eXBlLic7XG5leHBvcnQgY29uc3QgUEFHRV9GSUxURVJfVE9PTFRJUCA9ICdBIHBhZ2UgZmlsdGVyIHNob3dzIGluIHRoZSBwYWdlIGJhciBvbmx5Lic7XG5leHBvcnQgY29uc3QgQ09NUE9ORU5UX1RPR0dMRV9UT09MVElQID0gJ1Nob3cgb24gdGhpcyBjb21wb25lbnQnO1xuXG4vLyBUaGUgRGVmYXVsdCBwZXJpb2Qgc2VsZWN0J3MgdmFsdWUgZm9yIGEgcmFuZ2Ugb2YgZml4ZWQgZGF5cy4gTm8gcmVsYXRpdmVcbi8vIHJhbmdlIGlzIG5hbWVkIHRoaXMuXG5leHBvcnQgY29uc3QgRklYRURfREFURVNfUEVSSU9EID0gJ2ZpeGVkJztcblxuLy8gSG93IG1hbnkgZGVjaW1hbHMgYSBEZWZhdWx0IG1pbmltdW0gb3IgRGVmYXVsdCBtYXhpbXVtIHRha2VzLlxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQk9VTkRfU0NBTEUgPSA2O1xuXG4vLyBBIGZpbHRlcidzIE5hbWUgYW5kIExhYmVsLCBjaGVja2VkIGFzIHRoZSBzZXJ2ZXIgY2hlY2tzIHRoZW0sIHNvIGEgYmFkIG9uZVxuLy8gaXMgY2F1Z2h0IGJlZm9yZSBTYXZlLiBUaGUgbmFtZSBpcyBhbiBpZGVudGlmaWVyOiBhIGxldHRlciwgdGhlbiBsZXR0ZXJzXG4vLyBhbmQgZGlnaXRzLiBUaGF0IGl0IGlzIHVuaXF1ZSBpbiB0aGUgcmVwb3J0IGlzIHRoZSBzZXJ2ZXIncyB0byBjaGVjay5cbmV4cG9ydCBjb25zdCBGSUxURVJfTkFNRV9QQVRURVJOID0gL15bQS1aYS16XVtBLVphLXowLTldKiQvO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9OQU1FX1BBVFRFUk5fTUVTU0FHRSA9ICdBIG5hbWUgc3RhcnRzIHdpdGggYSBsZXR0ZXIgYW5kIGhvbGRzIG9ubHkgbGV0dGVycyBhbmQgZGlnaXRzLic7XG5leHBvcnQgY29uc3QgRklMVEVSX05BTUVfTUFYX0xFTkdUSCA9IDUwO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9MQUJFTF9NQVhfTEVOR1RIID0gMjAwO1xuXG4vLyBFdmVyeSBSZXBvcnQgYmFyIGNob2ljZSwgaW4gdGhlIG9yZGVyIHRoZSBzZWxlY3QgbGlzdHMgdGhlbS5cbmNvbnN0IEJBUl9QTEFDRU1FTlRfT1BUSU9OUzogRmlsdGVyU2V0dGluZ3NPcHRpb248RmlsdGVyQmFyUGxhY2VtZW50PltdID0gW1xuICB7IHZhbHVlOiAnb2ZmJywgbmFtZTogJ09mZicgfSxcbiAgeyB2YWx1ZTogJ2V2ZXJ5JywgbmFtZTogJ0V2ZXJ5IHBhZ2UnIH0sXG4gIHsgdmFsdWU6ICdwYWdlJywgbmFtZTogJ1RoaXMgcGFnZSBvbmx5JyB9LFxuXTtcblxuXG4vLyBBIG51bWJlciB3aXRoIGl0cyBncm91cCBjb21tYXMgaW4gcGxhY2UgKCcxLDI1MC41JywgJy0xMiwwMDAnKS5cbmNvbnN0IEdST1VQRURfREVDSU1BTCA9IC9eLT9cXGR7MSwzfSgsXFxkezN9KSsoXFwuXFxkKik/JC87XG4vLyBBIHBsYWluIGRlY2ltYWwgbnVtYmVyICgnMTI1MC41JywgJy0zJywgJzAnLCAnLjUnKS4gSGV4LCBiaW5hcnksIG9jdGFsLFxuLy8gZXhwb25lbnRzIGFuZCBpbm5lciBzcGFjZXMgZG8gbm90IG1hdGNoLCB0aG91Z2ggTnVtYmVyKCkgcmVhZHMgc29tZS5cbmNvbnN0IFBMQUlOX0RFQ0lNQUwgPSAvXi0/KFxcZCsoXFwuXFxkKik/fFxcLlxcZCspJC87XG5cbi8vIEEgZGVmYXVsdCByYW5nZSBlbmQgYXMgdHlwZWQuIEFuIGVtcHR5IGZpZWxkIGlzIG5vIGVuZC4gQSBudW1iZXIgaW5wdXRcbi8vIHdpdGggYSBtYXNrIGhhbmRzIGJhY2sgdGV4dCB3aXRoIGl0cyBncm91cCBjb21tYXMgKCcxLDI1MC41JyksIHNvIHRob3NlIGdvXG4vLyBiZWZvcmUgTnVtYmVyKCkgcmVhZHMgaXQ7IDAgaXMgYW4gZW5kIGxpa2UgYW55IG90aGVyLiBBbnl0aGluZyB0aGF0IGlzIG5vdFxuLy8gYSBkZWNpbWFsIG51bWJlciBpcyBubyBlbmQuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEZWZhdWx0Qm91bmQocmF3OiB1bmtub3duKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgcmF3ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocmF3KSA/IHJhdyA6IG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHJhdyAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHRyaW1tZWQgPSByYXcudHJpbSgpO1xuICBjb25zdCB0ZXh0ID0gR1JPVVBFRF9ERUNJTUFMLnRlc3QodHJpbW1lZCkgPyB0cmltbWVkLnJlcGxhY2UoLywvZywgJycpIDogdHJpbW1lZDtcbiAgaWYgKCFQTEFJTl9ERUNJTUFMLnRlc3QodGV4dCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHZhbHVlID0gTnVtYmVyKHRleHQpO1xuXG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpID8gdmFsdWUgOiBudWxsO1xufVxuXG4vLyBXaHkgdHdvIHJhbmdlIGVuZHMgY2Fubm90IGJlIHNhdmVkLCBpbiB0aGUgc2VydmVyJ3Mgd29yZHMsIG9yIG51bGwuIEFuIG9wZW5cbi8vIGVuZCBpcyBhbHdheXMgZmluZS5cbmV4cG9ydCBmdW5jdGlvbiBib3VuZHNFcnJvcihtaW46IG51bWJlciB8IG51bGwsIG1heDogbnVtYmVyIHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xuICBpZiAobWluID09PSBudWxsIHx8IG1heCA9PT0gbnVsbCB8fCBtaW4gPD0gbWF4KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gYG1pbiAoJHttaW59KSBpcyBhYm92ZSBtYXggKCR7bWF4fSkuYDtcbn1cblxuLy8gVGhlIFR5cGUgc2VsZWN0IG9mIGEgY29sdW1uIG9uIHRoZSBjb21wb25lbnQgc2V0dGluZ3MnIEZpbHRlcnMgdGFiLiBJdFxuLy8gc2hvd3Mgd2hlbiB0aGUgY29sdW1uIGNhbiB0YWtlIGVpdGhlciB0eXBlIGFuZCB0aGUgc2VydmVyIHNlcnZlcyBudW1iZXJcbi8vIHJhbmdlcyAoYW4gb2xkZXIgc2VydmVyIGxpc3RzIG5vIGZlYXR1cmVzKS4gQSBmaWx0ZXIncyB0eXBlIGNhbm5vdCBjaGFuZ2UsXG4vLyBzbyBpdCBpcyBsb2NrZWQgd2hpbGUgdGhlIGNvbHVtbiBoYXMgYSBmaWx0ZXIgb24gdGhpcyBjb21wb25lbnQuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVNlbGVjdFN0YXRlKFxuICB0eXBlczogUmVwb3J0RmlsdGVyVHlwZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgaGFzRmlsdGVyT25UaGlzQ29tcG9uZW50OiBib29sZWFuLFxuICBmZWF0dXJlczogUmVwb3J0Vmlld2VyRmVhdHVyZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IEZpbHRlclR5cGVTZWxlY3RTdGF0ZSB7XG4gIGNvbnN0IHNob3cgPSAoZmVhdHVyZXMgPz8gW10pLmluY2x1ZGVzKCdudW1iZXJSYW5nZScpXG4gICAgJiYgRklMVEVSX1RZUEVfT1BUSU9OUy5ldmVyeSgob3B0aW9uKSA9PiAodHlwZXMgPz8gW10pLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkpO1xuXG4gIGlmICghc2hvdykge1xuICAgIHJldHVybiB7IHNob3c6IGZhbHNlLCBkaXNhYmxlZDogZmFsc2UsIHRvb2x0aXA6IG51bGwgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2hvdzogdHJ1ZSxcbiAgICBkaXNhYmxlZDogaGFzRmlsdGVyT25UaGlzQ29tcG9uZW50LFxuICAgIHRvb2x0aXA6IGhhc0ZpbHRlck9uVGhpc0NvbXBvbmVudCA/IFRZUEVfTE9DS0VEX1RPT0xUSVAgOiBudWxsLFxuICB9O1xufVxuXG4vLyBUaGUgbGV2ZWxzIGEgbmV3IG9yIG1vdmVkIGZpbHRlciBjYW4gdGFrZSBvbiBhIGNvbXBvbmVudC4gVGhpcyBwYWdlIG9ubHlcbi8vIG5lZWRzIGEgc2VydmVyIHRoYXQgc2VydmVzIHBhZ2UgZmlsdGVycyBhbmQgYSBjb21wb25lbnQgb24gYSBwYWdlIChhXG4vLyBoZWFkZXIgb3IgZm9vdGVyIGNvbXBvbmVudCBpcyBvbiBubyBwYWdlKS5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJMZXZlbENob2ljZXMoXG4gIGZlYXR1cmVzOiBSZXBvcnRWaWV3ZXJGZWF0dXJlW10gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBvblBhZ2U6IGJvb2xlYW4sXG4pOiBSZXBvcnRGaWx0ZXJMZXZlbFtdIHtcbiAgY29uc3QgbGV2ZWxzOiBSZXBvcnRGaWx0ZXJMZXZlbFtdID0gWydjb21wb25lbnQnLCAncmVwb3J0JywgJ2JvdGgnXTtcblxuICByZXR1cm4gb25QYWdlICYmIChmZWF0dXJlcyA/PyBbXSkuaW5jbHVkZXMoJ3BhZ2VTY29wZScpXG4gICAgPyBbLi4ubGV2ZWxzLCAncGFnZSddXG4gICAgOiBsZXZlbHM7XG59XG5cbi8vIFRoZSBSZXBvcnQgYmFyIHNlbGVjdCdzIGNob2ljZXMgZm9yIHRoZSBsZXZlbHMgb24gb2ZmZXIuIFRoZSBjaG9pY2UgYSByb3dcbi8vIGFscmVhZHkgaG9sZHMgaXMgYWx3YXlzIGxpc3RlZCwgc28gdGhlIHNlbGVjdCBuZXZlciBzaG93cyBibGFuay5cbmV4cG9ydCBmdW5jdGlvbiBiYXJQbGFjZW1lbnRPcHRpb25zKFxuICBsZXZlbENob2ljZXM6IFJlcG9ydEZpbHRlckxldmVsW10sXG4gIGN1cnJlbnQ6IEZpbHRlckJhclBsYWNlbWVudCA9ICdvZmYnLFxuKTogRmlsdGVyU2V0dGluZ3NPcHRpb248RmlsdGVyQmFyUGxhY2VtZW50PltdIHtcbiAgcmV0dXJuIEJBUl9QTEFDRU1FTlRfT1BUSU9OUy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgIHN3aXRjaCAob3B0aW9uLnZhbHVlKSB7XG4gICAgICBjYXNlICdldmVyeSc6XG4gICAgICAgIHJldHVybiBsZXZlbENob2ljZXMuaW5jbHVkZXMoJ3JlcG9ydCcpIHx8IGxldmVsQ2hvaWNlcy5pbmNsdWRlcygnYm90aCcpIHx8IGN1cnJlbnQgPT09ICdldmVyeSc7XG4gICAgICBjYXNlICdwYWdlJzpcbiAgICAgICAgcmV0dXJuIGxldmVsQ2hvaWNlcy5pbmNsdWRlcygncGFnZScpIHx8IGN1cnJlbnQgPT09ICdwYWdlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEEgdmFsdWUncyBSZXBvcnQgYmFyIGNob2ljZXMuIEEgdmFsdWUgaGFzIG5vIHN0cmlwIG9mIGl0cyBvd24gYW5kIGl0c1xuLy8gZ3JvdXAgbWF5IGJlIHNoYXJlZCwgc28gYSBwaWNrIG5ldmVyIGxvd2VycyB0aGUgZ3JvdXAgKHRoZSBpbmxpbmUgdmFsdWVzXG4vLyBydWxlKTogVGhpcyBwYWdlIG9ubHkgaXMgb2ZmZXJlZCBmb3IgYSBuZXcgZmlsdGVyLCBvciBmb3IgYSBncm91cCB0aGF0IGlzXG4vLyBhbHJlYWR5IGEgcGFnZSBncm91cCwgbmV2ZXIgdG8gbW92ZSBhIHNoYXJlZCBncm91cCB0byBvbmUgcGFnZS5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZVBsYWNlbWVudE9wdGlvbnMoXG4gIGxldmVsQ2hvaWNlczogUmVwb3J0RmlsdGVyTGV2ZWxbXSxcbiAgY3VycmVudDogUmVwb3J0RmlsdGVyTGV2ZWwgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogRmlsdGVyU2V0dGluZ3NPcHRpb248RmlsdGVyQmFyUGxhY2VtZW50PltdIHtcbiAgY29uc3QgY2hvaWNlcyA9ICFjdXJyZW50IHx8IGN1cnJlbnQgPT09ICdwYWdlJ1xuICAgID8gbGV2ZWxDaG9pY2VzXG4gICAgOiBsZXZlbENob2ljZXMuZmlsdGVyKChsZXZlbCkgPT4gbGV2ZWwgIT09ICdwYWdlJyk7XG5cbiAgcmV0dXJuIGJhclBsYWNlbWVudE9wdGlvbnMoY2hvaWNlcywgYmFyUGxhY2VtZW50KGN1cnJlbnQpKTtcbn1cblxuLy8gVGhlIGxldmVsIGEgdmFsdWUncyBmaWx0ZXIgZ3JvdXAgZW5kcyBhdCBhZnRlciBhIFJlcG9ydCBiYXIgcGljaywgb3IgbnVsbFxuLy8gd2hlbiB0aGUgdmFsdWUgbGVhdmVzIGl0LiBPZmYgdW5saW5rcyB0aGlzIHZhbHVlIGFsb25lIGFuZCB0aGUgZ3JvdXAga2VlcHNcbi8vIGl0cyBvdGhlciBtZW1iZXJzLiBBIG5ldyBmaWx0ZXIgdGFrZXMgdGhlIHBpY2sncyBsZXZlbC4gRXZlcnkgcGFnZSByYWlzZXMgYVxuLy8gc3RyaXAtb25seSBncm91cCB0byBib3RoLCBrZWVwaW5nIGl0cyBzdHJpcHMsIGFuZCBhIHBhZ2UgZ3JvdXAgdG8gdGhlXG4vLyByZXBvcnQgYmFyLiBOb3RoaW5nIGVsc2UgbW92ZXMgdGhlIGdyb3VwLCBzbyBhIHZhbHVlIG5ldmVyIGxvd2VycyBpdC5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZpbHRlckxldmVsKFxuICBwbGFjZW1lbnQ6IEZpbHRlckJhclBsYWNlbWVudCxcbiAgY3VycmVudDogUmVwb3J0RmlsdGVyTGV2ZWwgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogUmVwb3J0RmlsdGVyTGV2ZWwgfCBudWxsIHtcbiAgaWYgKHBsYWNlbWVudCA9PT0gJ29mZicpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICghY3VycmVudCkge1xuICAgIHJldHVybiBwbGFjZW1lbnQgPT09ICdwYWdlJyA/ICdwYWdlJyA6ICdyZXBvcnQnO1xuICB9XG5cbiAgaWYgKHBsYWNlbWVudCAhPT0gJ2V2ZXJ5Jykge1xuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgc3dpdGNoIChjdXJyZW50KSB7XG4gICAgY2FzZSAnY29tcG9uZW50JzpcbiAgICAgIHJldHVybiAnYm90aCc7XG4gICAgY2FzZSAncGFnZSc6XG4gICAgICByZXR1cm4gJ3JlcG9ydCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjdXJyZW50O1xuICB9XG59XG5cbi8vIFdoZXJlIGEgZ3JvdXAgb2YgYSBsZXZlbCBzaG93cyBpbiB0aGUgcmVwb3J0IGJhci4gTm8gZ3JvdXAgKG5vIGZpbHRlcikgaXNcbi8vIG9mZi5cbmV4cG9ydCBmdW5jdGlvbiBiYXJQbGFjZW1lbnQobGV2ZWw6IFJlcG9ydEZpbHRlckxldmVsIHwgbnVsbCB8IHVuZGVmaW5lZCk6IEZpbHRlckJhclBsYWNlbWVudCB7XG4gIHN3aXRjaCAobGV2ZWwpIHtcbiAgICBjYXNlICdyZXBvcnQnOlxuICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgcmV0dXJuICdldmVyeSc7XG4gICAgY2FzZSAncGFnZSc6XG4gICAgICByZXR1cm4gJ3BhZ2UnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ29mZic7XG4gIH1cbn1cblxuLy8gV2hldGhlciBhIGdyb3VwIG9mIGEgbGV2ZWwgc2hvd3Mgb24gaXRzIGNvbXBvbmVudHMuXG5leHBvcnQgZnVuY3Rpb24gc2hvd25PbkNvbXBvbmVudChsZXZlbDogUmVwb3J0RmlsdGVyTGV2ZWwgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiBsZXZlbCA9PT0gJ2NvbXBvbmVudCcgfHwgbGV2ZWwgPT09ICdib3RoJztcbn1cblxuLy8gVGhlIGxldmVsIHRoZSB0d28gY29udHJvbHMgb2YgYSByb3cgYXNrIGZvciwgb3IgbnVsbCB3aGVuIHRoZXkgYXNrIGZvciBub1xuLy8gZmlsdGVyIGF0IGFsbC4gQSBwYWdlIGZpbHRlciBzaG93cyBpbiBpdHMgcGFnZSdzIGJhciBvbmx5LCBzbyBUaGlzIHBhZ2Vcbi8vIG9ubHkgaWdub3JlcyB0aGUgVGhpcyBjb21wb25lbnQgdG9nZ2xlLlxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckxldmVsKHBsYWNlbWVudDogRmlsdGVyQmFyUGxhY2VtZW50LCBjb21wb25lbnQ6IGJvb2xlYW4pOiBSZXBvcnRGaWx0ZXJMZXZlbCB8IG51bGwge1xuICBzd2l0Y2ggKHBsYWNlbWVudCkge1xuICAgIGNhc2UgJ3BhZ2UnOlxuICAgICAgcmV0dXJuICdwYWdlJztcbiAgICBjYXNlICdldmVyeSc6XG4gICAgICByZXR1cm4gY29tcG9uZW50ID8gJ2JvdGgnIDogJ3JlcG9ydCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBjb21wb25lbnQgPyAnY29tcG9uZW50JyA6IG51bGw7XG4gIH1cbn1cblxuLy8gVGhlIFRoaXMgY29tcG9uZW50IHRvZ2dsZSBvZiBhIHJvdzogbG9ja2VkIHdoaWxlIFRoaXMgcGFnZSBvbmx5IGlzIHBpY2tlZC5cbmV4cG9ydCBmdW5jdGlvbiBjb21wb25lbnRUb2dnbGVTdGF0ZShwbGFjZW1lbnQ6IEZpbHRlckJhclBsYWNlbWVudCk6IEZpbHRlckNvbXBvbmVudFRvZ2dsZVN0YXRlIHtcbiAgcmV0dXJuIHBsYWNlbWVudCA9PT0gJ3BhZ2UnXG4gICAgPyB7IGRpc2FibGVkOiB0cnVlLCB0b29sdGlwOiBQQUdFX0ZJTFRFUl9UT09MVElQIH1cbiAgICA6IHsgZGlzYWJsZWQ6IGZhbHNlLCB0b29sdGlwOiBDT01QT05FTlRfVE9HR0xFX1RPT0xUSVAgfTtcbn1cblxuLy8gVGhlIGdyb3VwcyB0aGUgcmVwb3J0IHNldHRpbmdzJyBGaWx0ZXJzIHRhYiBsaXN0cyBkZWZhdWx0cyBmb3I6IHRob3NlIG9mXG4vLyB0aGUgcmVwb3J0IGJhciwgZXZlcnkgcGFnZSBvciBvbmUsIGluIGJhciBvcmRlci5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0Um93R3JvdXBzKGdyb3VwczogUmVwb3J0RmlsdGVyR3JvdXBbXSB8IG51bGwgfCB1bmRlZmluZWQpOiBSZXBvcnRGaWx0ZXJHcm91cFtdIHtcbiAgcmV0dXJuIChncm91cHMgPz8gW10pXG4gICAgLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwLmxldmVsID09PSAncmVwb3J0JyB8fCBncm91cC5sZXZlbCA9PT0gJ2JvdGgnIHx8IGdyb3VwLmxldmVsID09PSAncGFnZScpXG4gICAgLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcbn1cblxuLy8gQSBkZWZhdWx0IHJvdydzIGxhYmVsOiBhIHBhZ2UgZ3JvdXAgbmFtZXMgaXRzIHBhZ2UsICdSZWdpb24gKHBhZ2Vcbi8vIFwiT3ZlcnZpZXdcIiknLiBBIHBhZ2Ugd2l0aCBubyBuYW1lIHJlYWRzIGFzIHRoZSBjYW52YXMgbmFtZXMgaXQgKCdQYWdlIDInKS5cbi8vIEEgcGFnZSB0aGlzIHJlcG9ydCBubyBsb25nZXIgaG9sZHMgYWRkcyBub3RoaW5nLlxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRSb3dMYWJlbChncm91cDogUmVwb3J0RmlsdGVyR3JvdXAsIHBhZ2VzOiBSZXBvcnRQYWdlW10gfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgY29uc3QgbGFiZWwgPSBncm91cC5sYWJlbCB8fCBncm91cC5maWx0ZXJzPy5bMF0/LmZpbHRlckNvbHVtbiB8fCAnRmlsdGVyJztcblxuICBpZiAoZ3JvdXAubGV2ZWwgIT09ICdwYWdlJykge1xuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gKHBhZ2VzID8/IFtdKS5maW5kSW5kZXgoKHBhZ2UpID0+IHBhZ2UuaWQgPT09IGdyb3VwLnBhZ2VJZCk7XG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICByZXR1cm4gYCR7bGFiZWx9IChwYWdlIFwiJHtwYWdlc1tpbmRleF0ubmFtZSB8fCBgUGFnZSAke2luZGV4ICsgMX1gfVwiKWA7XG59XG5cbi8vIFRoZSBEZWZhdWx0IHBlcmlvZCBzZWxlY3QncyBjaG9pY2VzOiBGaXhlZCBkYXRlcywgdGhlbiBldmVyeSByZWxhdGl2ZVxuLy8gcmFuZ2UgaW4gdGhlIHNlcnZlciBlbnVtJ3Mgb3JkZXIsIG5hbWVkIGJ5IGBsYWJlbHNgLiBBIHN0b3JlZCByYW5nZSB0aGlzXG4vLyB2aWV3ZXIgZG9lcyBub3Qga25vdyBpcyBsaXN0ZWQgbGFzdCwgc28gdGhlIHNlbGVjdCBzdGlsbCBzaG93cyBpdC5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0UGVyaW9kT3B0aW9ucyhcbiAgbGFiZWxzOiAocmVsYXRpdmU6IFJlcG9ydFJlbGF0aXZlUmFuZ2UpID0+IHN0cmluZyxcbiAgc3RvcmVkOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbik6IEZpbHRlclNldHRpbmdzT3B0aW9uW10ge1xuICBjb25zdCBvcHRpb25zOiBGaWx0ZXJTZXR0aW5nc09wdGlvbltdID0gW1xuICAgIHsgdmFsdWU6IEZJWEVEX0RBVEVTX1BFUklPRCwgbmFtZTogJ0ZpeGVkIGRhdGVzJyB9LFxuICAgIC4uLlJFTEFUSVZFX1JBTkdFX05BTUVTLm1hcCgocmVsYXRpdmUpID0+ICh7IHZhbHVlOiByZWxhdGl2ZSwgbmFtZTogbGFiZWxzKHJlbGF0aXZlKSB9KSksXG4gIF07XG5cbiAgcmV0dXJuIHN0b3JlZCAmJiBzdG9yZWQgIT09IEZJWEVEX0RBVEVTX1BFUklPRCAmJiAhaXNSZWxhdGl2ZVJhbmdlKHN0b3JlZClcbiAgICA/IFsuLi5vcHRpb25zLCB7IHZhbHVlOiBzdG9yZWQsIG5hbWU6IGxhYmVscyhzdG9yZWQgYXMgUmVwb3J0UmVsYXRpdmVSYW5nZSkgfV1cbiAgICA6IG9wdGlvbnM7XG59XG5cbi8vIFRoZSBEZWZhdWx0IHBlcmlvZCBhIHN0b3JlZCBkYXRlIHJhbmdlIGRlZmF1bHQgb3BlbnMgb246IGl0cyByZWxhdGl2ZVxuLy8gcmFuZ2UsIGVsc2UgRml4ZWQgZGF0ZXMgKHRoZSBkYXlzLCBvciBub25lKS5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0UGVyaW9kKHN0b3JlZDogRmlsdGVyR3JvdXBEZWZhdWx0IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIHJldHVybiBzdG9yZWQ/LnJlbGF0aXZlICYmICFzdG9yZWQuc3RhcnQgJiYgIXN0b3JlZC5lbmRcbiAgICA/IHN0b3JlZC5yZWxhdGl2ZVxuICAgIDogRklYRURfREFURVNfUEVSSU9EO1xufVxuXG4vLyBBIGRhdGUgcmFuZ2UgZGVmYXVsdCBpbiBpdHMgc3RvcmVkIHNoYXBlOiB0aGUgcmVsYXRpdmUgcmFuZ2UgcGlja2VkLCBlbHNlXG4vLyB0aGUgZml4ZWQgZGF5cywgb3IgbnVsbCB3aGVuIHRoZXJlIGFyZSBub25lLiBOZXZlciBib3RoOiB0aGUgc2VydmVyXG4vLyByZWZ1c2VzIGEgcmVsYXRpdmUgcmFuZ2Ugd2l0aCBkYXlzLlxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVSYW5nZURlZmF1bHQoXG4gIHBlcmlvZDogc3RyaW5nLFxuICBzdGFydDogc3RyaW5nIHwgbnVsbCxcbiAgZW5kOiBzdHJpbmcgfCBudWxsLFxuKTogRmlsdGVyR3JvdXBEZWZhdWx0IHwgbnVsbCB7XG4gIGlmIChwZXJpb2QgIT09IEZJWEVEX0RBVEVTX1BFUklPRCkge1xuICAgIHJldHVybiB7IHJlbGF0aXZlOiBwZXJpb2QgfTtcbiAgfVxuXG4gIGlmICghc3RhcnQgJiYgIWVuZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHsgLi4uKHN0YXJ0ID8geyBzdGFydCB9IDoge30pLCAuLi4oZW5kID8geyBlbmQgfSA6IHt9KSB9O1xufVxuXG4vLyBBIHNlbGVjdCBkZWZhdWx0IGluIGl0cyBzdG9yZWQgc2hhcGU6IHRoZSBwaWNrcyBrZXB0LCBvciBsZWZ0IG91dCB3aGlsZVxuLy8gRXhjbHVkZSB0aGVzZSB2YWx1ZXMgaXMgb24sIG9yIG51bGwgd2hlbiBub3RoaW5nIGlzIHBpY2tlZC5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3REZWZhdWx0KHZhbHVlczogdW5rbm93bltdLCBleGNsdWRlOiBib29sZWFuKTogRmlsdGVyR3JvdXBEZWZhdWx0IHwgbnVsbCB7XG4gIGlmICghdmFsdWVzLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGV4Y2x1ZGUgPyB7IGV4Y2x1ZGVWYWx1ZXM6IHZhbHVlcyB9IDogeyB2YWx1ZXMgfTtcbn1cblxuLy8gQSBudW1iZXIgcmFuZ2UgZGVmYXVsdCBpbiBpdHMgc3RvcmVkIHNoYXBlIGZyb20gdGhlIGVuZHMgYXMgdHlwZWQ6IGFuXG4vLyBvcGVuIGVuZCBpcyBsZWZ0IG91dCwgMCBpcyBrZXB0LCBhbmQgdHdvIG9wZW4gZW5kcyBhcmUgbm8gZGVmYXVsdC5cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJSYW5nZURlZmF1bHQocmF3TWluOiB1bmtub3duLCByYXdNYXg6IHVua25vd24pOiBGaWx0ZXJHcm91cERlZmF1bHQgfCBudWxsIHtcbiAgY29uc3QgbWluID0gcGFyc2VEZWZhdWx0Qm91bmQocmF3TWluKTtcbiAgY29uc3QgbWF4ID0gcGFyc2VEZWZhdWx0Qm91bmQocmF3TWF4KTtcblxuICBpZiAobWluID09PSBudWxsICYmIG1heCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHsgLi4uKG1pbiAhPT0gbnVsbCA/IHsgbWluIH0gOiB7fSksIC4uLihtYXggIT09IG51bGwgPyB7IG1heCB9IDoge30pIH07XG59XG5cbi8vIFdoZXRoZXIgYSBzZWxlY3QgZ3JvdXAncyBkZWZhdWx0IHJvdyBvZmZlcnMgRXhjbHVkZSB0aGVzZSB2YWx1ZXM6IHRoZVxuLy8gcmVwb3J0IGJhcidzIHJ1bGUgKG9mZmVyc0V4Y2x1ZGUpLCBzbyBub3Qgb24gYSBzZXJ2ZXIgdGhhdCBkb2VzIG5vdCBzZXJ2ZVxuLy8gZXhjbHVkZSAoYW4gb2xkZXIgc2VydmVyIGxpc3RzIG5vIGZlYXR1cmVzKSBub3Igb24gYSBncm91cCB3aXRoIGEgbWVtYmVyXG4vLyB0aGF0IGJpbmRzIHNldmVyYWwgY29sdW1ucyAobXVsdGlDb2x1bW4pLiBBIGRlZmF1bHQgdGhhdCBhbHJlYWR5IGxlYXZlc1xuLy8gdmFsdWVzIG91dCBrZWVwcyB0aGUgdG9nZ2xlLCBzbyBpdCBjYW4gYmUgdHVybmVkIG9mZi5cbmV4cG9ydCBmdW5jdGlvbiBzaG93RXhjbHVkZVRvZ2dsZShcbiAgZ3JvdXA6IFJlcG9ydEZpbHRlckdyb3VwLFxuICBmZWF0dXJlczogUmVwb3J0Vmlld2VyRmVhdHVyZVtdIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IGJvb2xlYW4ge1xuICBpZiAoZ3JvdXAudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZ3JvdXAuY29uZmlnPy5kZWZhdWx0Py5leGNsdWRlVmFsdWVzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBvZmZlcnNFeGNsdWRlKGdyb3VwLCBmZWF0dXJlcyk7XG59XG5cbi8vIEEgc3RvcmVkIG9yIGRyYWZ0IGRlZmF1bHQgaW4gYSBzdGFibGUgZm9ybSBmb3IgY29tcGFyaW5nOiBlbXB0eSBhbmRcbi8vIGFic2VudCBrZXlzIGFyZSBkcm9wcGVkLCBzbyBhIG5vLW9wIGVkaXQgZG9lcyBub3QgcmVhZCBhcyBhIGNoYW5nZS4gMCBpcyBhblxuLy8gZW5kIGxpa2UgYW55IG90aGVyLiBOb3RoaW5nIGxlZnQgaXMgbnVsbC5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVEZWZhdWx0KHZhbHVlOiBGaWx0ZXJHcm91cERlZmF1bHQgfCBudWxsIHwgdW5kZWZpbmVkKTogRmlsdGVyR3JvdXBEZWZhdWx0IHwgbnVsbCB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWQ6IEZpbHRlckdyb3VwRGVmYXVsdCA9IHt9O1xuICBpZiAodmFsdWUuc3RhcnQpIHtcbiAgICBub3JtYWxpemVkLnN0YXJ0ID0gdmFsdWUuc3RhcnQ7XG4gIH1cbiAgaWYgKHZhbHVlLmVuZCkge1xuICAgIG5vcm1hbGl6ZWQuZW5kID0gdmFsdWUuZW5kO1xuICB9XG4gIGlmICh2YWx1ZS52YWx1ZXM/Lmxlbmd0aCkge1xuICAgIG5vcm1hbGl6ZWQudmFsdWVzID0gdmFsdWUudmFsdWVzO1xuICB9XG4gIGlmICh2YWx1ZS5leGNsdWRlVmFsdWVzPy5sZW5ndGgpIHtcbiAgICBub3JtYWxpemVkLmV4Y2x1ZGVWYWx1ZXMgPSB2YWx1ZS5leGNsdWRlVmFsdWVzO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUubWluID09PSAnbnVtYmVyJykge1xuICAgIG5vcm1hbGl6ZWQubWluID0gdmFsdWUubWluO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUubWF4ID09PSAnbnVtYmVyJykge1xuICAgIG5vcm1hbGl6ZWQubWF4ID0gdmFsdWUubWF4O1xuICB9XG4gIGlmICh2YWx1ZS52YWx1ZSkge1xuICAgIG5vcm1hbGl6ZWQudmFsdWUgPSB2YWx1ZS52YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUucmVsYXRpdmUpIHtcbiAgICBub3JtYWxpemVkLnJlbGF0aXZlID0gdmFsdWUucmVsYXRpdmU7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmtleXMobm9ybWFsaXplZCkubGVuZ3RoID8gbm9ybWFsaXplZCA6IG51bGw7XG59XG5cbi8vIFdoZXRoZXIgYSByb3cncyBkcmFmdCBkZWZhdWx0IGRpZmZlcnMgZnJvbSB0aGUgZ3JvdXAncyBzdG9yZWQgb25lLiBPbmx5IGFcbi8vIGNoYW5nZWQgcm93IGlzIHNhdmVkLlxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRDaGFuZ2VkKFxuICBzdG9yZWQ6IEZpbHRlckdyb3VwRGVmYXVsdCB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGRyYWZ0OiBGaWx0ZXJHcm91cERlZmF1bHQgfCBudWxsIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShub3JtYWxpemVEZWZhdWx0KHN0b3JlZCkpICE9PSBKU09OLnN0cmluZ2lmeShub3JtYWxpemVEZWZhdWx0KGRyYWZ0KSk7XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLWxhbmRpbmctaW5wdXQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2ludGVyZmFjZXMvY2FudmFzLWxhbmRpbmctaW5wdXQuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXaGF0IHRoZSBjYW52YXMga25vd3Mgd2hlbiBpdHMgcmVwb3J0IGlucHV0IGNoYW5nZXM6IHRoZSByZXBvcnQgaXQgc2hvd2VkXG4vLyBiZWZvcmUsIGl0cyBwYWdlIGNvdW50IHRoZW4sIGFuZCB0aGUgcGFnZSB0aGUgaG9zdCBhc2tzIGZvciAoYSA/cGFnZT0gdGhlXG4vLyByZXBvcnQgb3BlbmVkIHdpdGgsIG9yIHRoZSBvcGVuIHZpZXcncykuIFNlZSBjYW52YXNMYW5kaW5nUGFnZS5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FudmFzTGFuZGluZ0lucHV0IHtcbiAgcmVwb3J0SWQ6IG51bWJlciB8IG51bGw7XG4gIHByZXZpb3VzUmVwb3J0SWQ6IG51bWJlciB8IG51bGw7XG4gIHByZXZpb3VzUGFnZUNvdW50OiBudW1iZXI7XG4gIHBhZ2VJZHM6IG51bWJlcltdO1xuICBwYWdlSWQ6IG51bWJlciB8IG51bGw7XG4gIGFjdGl2ZVBhZ2VJbmRleDogbnVtYmVyO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWZpbHRlci1ncm91cC1jaGFuZ2VzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC1maWx0ZXItZ3JvdXAtY2hhbmdlcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbHRlckdyb3VwRGVmYXVsdCwgUmVwb3J0RmlsdGVyTGV2ZWwgfSBmcm9tICcuL3JlcG9ydC5pbnRlcmZhY2UnO1xuXG4vLyBUaGUgZWRpdHMgYSBmaWx0ZXIgZ3JvdXAgdXBkYXRlIGNhcnJpZXMuIE9ubHkgdGhlIGtleXMgcHJlc2VudCBhcmUgY2hhbmdlZCxcbi8vIGluIHRoZSBvcmRlciBuYW1lLCBsYWJlbCwgbGV2ZWwsIGRlZmF1bHQuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlckdyb3VwQ2hhbmdlcyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBsZXZlbD86IFJlcG9ydEZpbHRlckxldmVsO1xuICBkZWZhdWx0PzogRmlsdGVyR3JvdXBEZWZhdWx0IHwgbnVsbDtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRlbXBvcmFyeS1zdGF0ZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3JlcG9ydHMvaW50ZXJmYWNlcy9yZXBvcnQtdGVtcG9yYXJ5LXN0YXRlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIHZpZXdlcidzIHRlbXBvcmFyeSBzdGF0ZTogd2hhdCBpdCBwaWNrZWQgb24gYSB0aWxlIGZvciB0aGlzIHZpc2l0IG9ubHkuXG4vLyBEYXRhIHJlcXVlc3RzIGFuZCBleHBvcnRzIHJlYWQgaXQ7IGEgc2F2ZWQgdmlldyBhbmQgdGhlIHNjcmVlbidzXG4vLyBcImVkaXRlZFwiIGNoZWNrIG5ldmVyIGRvIChSZXBvcnRGaWx0ZXJTdGF0ZVNlcnZpY2Uuc25hcHNob3QoKSBsZWF2ZXMgaXQgb3V0KS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0VGVtcG9yYXJ5U3RhdGUge1xuICAvLyBUaGUgY3Jvc3MtZmlsdGVyIGVudHJpZXMgaW4gZm9yY2UgKHRoZSB2aWV3ZXIga2VlcHMgYXQgbW9zdCBvbmUpLlxuICBjcm9zc0ZpbHRlcnM6IHVua25vd25bXTtcbiAgLy8gVGhlIHRpbGUgYW5kIHZhbHVlIHdob3NlIHJvd3MgcGFuZWwgaXMgb3Blbiwgb3IgbnVsbC5cbiAgZGV0YWlsOiB1bmtub3duO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXctY29uZmlnLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC12aWV3LWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydEZpbHRlck1hdGNoIH0gZnJvbSAnLi9yZXBvcnQtZmlsdGVyLW1hdGNoLnR5cGUnO1xuaW1wb3J0IHsgUmVwb3J0VGlsZVN0YXRlIH0gZnJvbSAnLi9yZXBvcnQtdGlsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2hhcnRHcmFudWxhcml0eSwgRmlsdGVyR3JvdXBEZWZhdWx0IH0gZnJvbSAnLi9yZXBvcnQuaW50ZXJmYWNlJztcblxuXG4vLyBUaGUgdmlld2VyJ3MgZHVyYWJsZSBzdGF0ZSBhcyBvbmUgSlNPTiBkb2N1bWVudDogYSBzYXZlZCB2aWV3J3MgY29uZmlnLlxuLy8gS2V5cyB0aGlzIHZpZXdlciBkb2VzIG5vdCBrbm93LCBhdCB0aGUgdG9wIGFuZCBpbiBhIHRpbGUsIGFyZSBrZXB0IGFzIHRoZXlcbi8vIHdlcmUgc3RvcmVkIGFuZCBuZXZlciByZWFkIChyZXBvcnQtdmlldy1jb25maWcudHMpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRWaWV3Q29uZmlnIHtcbiAgLy8gVGhlIHZlcnNpb24gdGhlIGRvY3VtZW50IHdhcyB3cml0dGVuIGluIChSRVBPUlRfVklFV19DT05GSUdfVkVSU0lPTikuXG4gIHY6IG51bWJlcjtcbiAgLy8gVGhlIG9wZW4gcGFnZS5cbiAgcGFnZUlkPzogbnVtYmVyO1xuICAvLyBUaGUgcmVwb3J0J3MgZ3JvdXAtYnkgZ3JhaW4uXG4gIGdyb3VwQnk/OiBDaGFydEdyYW51bGFyaXR5O1xuICAvLyBBYnNlbnQgPSAnYWxsJy5cbiAgbWF0Y2g/OiBSZXBvcnRGaWx0ZXJNYXRjaDtcbiAgLy8gR3JvdXAgaWQgLT4gaXRzIHZhbHVlIGluIHRoZSBzdG9yZWQgc2hhcGU7IG51bGwgPSBjbGVhcmVkIG9uIHB1cnBvc2UuXG4gIGdyb3Vwcz86IFJlY29yZDxudW1iZXIsIEZpbHRlckdyb3VwRGVmYXVsdCB8IG51bGw+O1xuICAvLyBDb21wb25lbnQgaWQgLT4gdGhhdCB0aWxlJ3Mgb3duIHN0YXRlLlxuICB0aWxlcz86IFJlY29yZDxudW1iZXIsIFJlcG9ydFRpbGVTdGF0ZT47XG59XG4iXX0=
|
|
@@ -27,4 +27,4 @@ export var ReportState;
|
|
|
27
27
|
ReportState["Active"] = "active";
|
|
28
28
|
ReportState["Deleted"] = "deleted";
|
|
29
29
|
})(ReportState || (ReportState = {}));
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQTBTbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUErdUJGLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBdUJELGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBhc3NlbWJsZWQgcmVwb3J0IHN0cnVjdHVyZSByZXR1cm5lZCBieSBHRVQgL2FwaS9yZXBvcnRzLzppZCDigJQgY29tcG9zZWRcbi8vIHNlcnZlci1zaWRlIGZyb20gdGhlIG5vcm1hbGl6ZWQgdGFibGVzIChyZXBvcnRzIOKGkiByZXBvcnRfcGFnZXMg4oaSXG4vLyByZXBvcnRfY29tcG9uZW50cyArIHJlcG9ydF9maWx0ZXJzLCBwbHVzIHJlcG9ydF9maWx0ZXJfZ3JvdXBzKS4gQWxsIGtleXMgYXJlXG4vLyBjYW1lbENhc2U7IGNvbXBvbmVudCBgY29uZmlnYCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRoZSByZW5kZXJlciBtYXBzIHRvXG4vLyBFQ2hhcnRzIG9wdGlvbnMgLyBGc0xpc3QgY29uZmlnLlxuXG5pbXBvcnQgeyBSZXBvcnRDaGFuZ2VQb2xhcml0eSB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1jaGFuZ2UtcG9sYXJpdHkuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydENvbG9yIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRhTGFiZWxzIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWRhdGEtbGFiZWxzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRlTGFiZWwgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0ZS1sYWJlbC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0TGluZVN0eWxlIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWxpbmUtc3R5bGUuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydE1hcmtTdGF0IH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LW1hcmstc3RhdC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydExpc3RDb2x1bW5Gb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbGlzdC1jb2x1bW4tZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0TnVtYmVyVW5pdHMgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbnVtYmVyLXVuaXRzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtdWxhIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LXZhbHVlLWZvcm11bGEuZW51bSc7XG5cbmltcG9ydCB7IENvbXBvbmVudERhdGFBcHBsaWVkIH0gZnJvbSAnLi9jb21wb25lbnQtZGF0YS1hcHBsaWVkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnREYXRhRHJpbGwgfSBmcm9tICcuL2NvbXBvbmVudC1kYXRhLWRyaWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnREcmlsbFN0ZXAgfSBmcm9tICcuL3JlcG9ydC1kcmlsbC1zdGVwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRWaWV3ZXJGZWF0dXJlIH0gZnJvbSAnLi9yZXBvcnQtdmlld2VyLWZlYXR1cmUudHlwZSc7XG5cbi8vIEEgQkNQIDQ3IGxhbmd1YWdlIHRhZyBuYW1pbmcgaG93IG51bWJlcnMgYW5kIGRhdGVzIGFyZSB3cml0dGVuLCBlLmcuICdmci1DQScuXG4vLyBUaGUgc2V0IGlzIG9wZW4gKHRoZSBzZXJ2ZXIncyBwcm92aWRlciBkZWNpZGVzIHdoaWNoIGl0IG9mZmVycyksIHNvIHRoaXMgaXMgYVxuLy8gbmFtZWQgYWxpYXMgcmF0aGVyIHRoYW4gYSB1bmlvbi5cbmV4cG9ydCB0eXBlIFJlcG9ydExvY2FsZVRhZyA9IHN0cmluZztcblxuLy8gQW4gSVNPIDQyMTcgY3VycmVuY3kgY29kZSwgZS5nLiAnQ0FEJy4gT3BlbiBmb3IgdGhlIHNhbWUgcmVhc29uLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q3VycmVuY3lDb2RlID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydCB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgLy8gVGhlIHJlcG9ydCdzIG93biBzdG9yZWQgSUFOQSB6b25lIChlLmcuIEFtZXJpY2EvTmV3X1lvcmspLiBudWxsID0gdGhlXG4gIC8vIHJlcG9ydCBmb2xsb3dzIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQgcmVwb3J0aW5nIHpvbmUuXG4gIHRpbWV6b25lOiBzdHJpbmcgfCBudWxsO1xuICAvLyBUaGUgem9uZSBldmVyeSBkYXRlIGZpbHRlciwgdGltZSBidWNrZXQgYW5kIGRhdGUgY2VsbCBvZiB0aGlzIHJlcG9ydCB1c2VzLlxuICAvLyBSZXNvbHZlZCBzZXJ2ZXItc2lkZTsgdGhlIHNhbWUgZm9yIGV2ZXJ5IHZpZXdlciwgZXhwb3J0IGFuZCB0aGUgYXNzaXN0YW50LlxuICAvLyBPcHRpb25hbCBvbmx5IGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0OyByZXNvbHZlUmVwb3J0VGltZXpvbmUoKSB0aGVuXG4gIC8vIGZhbGxzIGJhY2sgdG8gdGhlIHJlcG9ydCdzIG93biBgdGltZXpvbmVgLCB0aGVuIHRoZSBicm93c2VyJ3Mgem9uZS4gUmVzb2x2ZVxuICAvLyB0aGUgem9uZSBmb3IgcmVuZGVyaW5nIHRocm91Z2ggcmVzb2x2ZVJlcG9ydFRpbWV6b25lKCkgKGZvcm1hdC50cyk7IHJlYWQgdGhlXG4gIC8vIGZpZWxkIGRpcmVjdGx5IG9ubHkgdG8gY2hlY2sgd2hldGhlciB0aGUgc2VydmVyIHNlbnQgaXQuXG4gIGVmZmVjdGl2ZVRpbWV6b25lPzogc3RyaW5nO1xuICAvLyBUaGUgcmVwb3J0J3Mgb3duIHN0b3JlZCBsb2NhbGUuIG51bGwgPSB0aGUgcmVwb3J0IGZvbGxvd3MgdGhlIGRlZmF1bHQuXG4gIGxvY2FsZT86IFJlcG9ydExvY2FsZVRhZyB8IG51bGw7XG4gIC8vIFRoZSBsb2NhbGUgZXZlcnkgbnVtYmVyIGFuZCBkYXRlIG9mIHRoaXMgcmVwb3J0IGlzIHdyaXR0ZW4gaW4sIHJlc29sdmVkXG4gIC8vIHNlcnZlci1zaWRlICh0aGUgcmVwb3J0J3Mgb3duLCBlbHNlIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQsIGVsc2VcbiAgLy8gZW4tVVMpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hvc2UgcmVwb3J0cyB0aGVuIHJlYWQgZW4tVVMuIFJlc29sdmUgaXRcbiAgLy8gZm9yIHJlbmRlcmluZyB0aHJvdWdoIHJlc29sdmVGb3JtYXRDb250ZXh0KCkgKGZvcm1hdC50cyksIG5ldmVyIGRpcmVjdGx5LlxuICBlZmZlY3RpdmVMb2NhbGU/OiBSZXBvcnRMb2NhbGVUYWc7XG4gIC8vIFRoZSByZXBvcnQncyBvd24gc3RvcmVkIGN1cnJlbmN5LiBudWxsID0gdGhlIHJlcG9ydCBmb2xsb3dzIHRoZSBkZWZhdWx0LlxuICBjdXJyZW5jeT86IFJlcG9ydEN1cnJlbmN5Q29kZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW5jeSBtb25leSBhbW91bnRzIGFyZSBsYWJlbGVkIGluLCByZXNvbHZlZCBsaWtlIGVmZmVjdGl2ZUxvY2FsZVxuICAvLyAoZmFsbGluZyBiYWNrIHRvIHRoZSBsb2NhbGUncyBvd24gY3VycmVuY3ksIHRoZW4gVVNEKS4gQSBsYWJlbCBvbmx5OlxuICAvLyBhbW91bnRzIGFyZSBuZXZlciBjb252ZXJ0ZWQuXG4gIGVmZmVjdGl2ZUN1cnJlbmN5PzogUmVwb3J0Q3VycmVuY3lDb2RlO1xuICAvLyBIb3cgdGhlIHNlcnZlciBzZW5kcyBhIHBlcmNlbnQgbWVhc3VyZTogJ3JhdGlvJyA9IGEgMC0xIHJhdGlvICgwLjM4NSByZWFkc1xuICAvLyAzOC41JSkuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLCB3aG9zZSBwZXJjZW50IHZhbHVlcyBhcmUgYWxyZWFkeSB4MTAwXG4gIC8vICgzOC41IHJlYWRzIDM4LjUlKS5cbiAgcGVyY2VudEZvcm1hdD86ICdyYXRpbyc7XG4gIC8vIFJlcG9ydC1sZXZlbCBjb25maWc6IHR5cG9ncmFwaGljIHN0eWxlcywgZXRjLiAoY2FtZWxDYXNlIEpTT04gY29sdW1uKS5cbiAgY29uZmlnOiBSZXBvcnRDb25maWc7XG4gIC8vIFRoZSBwYWdlIGluIElOQ0hFUyAodGhlIHJlcG9ydCdzIG5hdGl2ZSB1bml0IOKAlCBQREZzIGFuZCBQb3dlclBvaW50IGFyZVxuICAvLyBpbmNoLWJhc2VkLCBzbyBleHBvcnRzIGFyZSBkaW1lbnNpb25hbGx5IGV4YWN0KS4gT3JpZW50YXRpb24gaXMgbm90IGEgZmllbGRcbiAgLy8gb2YgaXRzIG93bjogYSBwYWdlIHdpZGVyIHRoYW4gaXQgaXMgdGFsbCBJUyBsYW5kc2NhcGUuXG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xuICBwYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHBhZ2VzOiBSZXBvcnRQYWdlW107XG4gIC8vIFRoZSBoZWFkZXIgYW5kIGZvb3RlcjogdGhlIHJlcG9ydCdzIG1hc3RlciBwYWdlLCB3aG9zZSBjb21wb25lbnRzIGRyYXdcbiAgLy8gdW5kZXIgZXZlcnkgcGFnZSB0aGF0IGRvZXMgbm90IGhpZGUgdGhlbSAoUG93ZXJQb2ludCdzIHNsaWRlIG1hc3RlcikuIE51bGxcbiAgLy8gdW50aWwgYW55dGhpbmcgaGFzIGJlZW4gcGxhY2VkIGluIHRoZW0uXG4gIG1hc3RlcjogUmVwb3J0TWFzdGVyIHwgbnVsbDtcbiAgZmlsdGVyR3JvdXBzOiBSZXBvcnRGaWx0ZXJHcm91cFtdO1xuICAvLyBUaGUgdmlld2VyIGZlYXR1cmVzIHRoaXMgc2VydmVyIHNlcnZlcyBmb3IgdGhlIHJlcG9ydC4gVGhlIHZpZXdlciBvZmZlcnNcbiAgLy8gYSBjb250cm9sIG9ubHkgd2hlbiBpdHMgZmVhdHVyZSBpcyBsaXN0ZWQuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLCB3aGljaFxuICAvLyBzZXJ2ZSBub25lLlxuICB2aWV3ZXJGZWF0dXJlcz86IFJlcG9ydFZpZXdlckZlYXR1cmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRNYXN0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbiAgLy8gVGhlIHZhbHVlcyB0aGUgaGVhZGVyIGFuZCBmb290ZXIgdGV4dCBzaG93cywgYXMgUmVwb3J0UGFnZS52YWx1ZXMuXG4gIHZhbHVlcz86IFJlcG9ydENvbXBvbmVudFtdO1xufVxuXG4vLyBIb3cgdGhlIG9wZW4gcmVwb3J0IHdyaXRlcyBpdHMgbnVtYmVycyBhbmQgZGF0ZXMsIHJlc29sdmVkIG9uY2UgcGVyIHJlcG9ydFxuLy8gKHJlc29sdmVGb3JtYXRDb250ZXh0KSBhbmQgcmVhZCBieSB0aGUgdmlld2VyLCB0aGUgUERGIGFuZCBQb3dlclBvaW50IGFsaWtlLlxuLy8gTmV2ZXIgdGhlIGJyb3dzZXIncyBsb2NhbGUuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZvcm1hdENvbnRleHQge1xuICBsb2NhbGU6IFJlcG9ydExvY2FsZVRhZztcbiAgY3VycmVuY3k6IFJlcG9ydEN1cnJlbmN5Q29kZTtcbiAgLy8gV2hldGhlciBhIHBlcmNlbnQgbWVhc3VyZSBhcnJpdmVzIGFzIGEgMC0xIHJhdGlvICh0aGUgcmVwb3J0J3NcbiAgLy8gcGVyY2VudEZvcm1hdCkuIEFuIG9sZGVyIHNlcnZlciBzZW5kcyBpdCBhbHJlYWR5IHgxMDAuXG4gIHJhdGlvUGVyY2VudDogYm9vbGVhbjtcbn1cblxuLy8gT25lIGxvY2FsZSB0aGUgc2VydmVyIG9mZmVycywgd2l0aCB0aGUgY3VycmVuY3kgYSByZXBvcnQgaW4gaXQgdXNlcyB3aGVuIGl0XG4vLyBuYW1lcyBub25lIG9mIGl0cyBvd24uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydExvY2FsZU9wdGlvbiB7XG4gIGxvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBkZWZhdWx0Q3VycmVuY3k6IFJlcG9ydEN1cnJlbmN5Q29kZTtcbn1cblxuLy8gR0VUIHJlcG9ydHMvbG9jYWxlczogd2hhdCB0aGUgcmVwb3J0IHNldHRpbmdzJyBMb2NhbGUgYW5kIEN1cnJlbmN5IHNlbGVjdHNcbi8vIG9mZmVyLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMb2NhbGVzIHtcbiAgZGVmYXVsdExvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBvcHRpb25zOiBSZXBvcnRMb2NhbGVPcHRpb25bXTtcbiAgY3VycmVuY2llczogUmVwb3J0Q3VycmVuY3lDb2RlW107XG59XG5cbi8vIFRoZSBkZXB0aCBvZiB0aGUgaGVhZGVyIGJhbmQgKHRvcCBvZiBldmVyeSBwYWdlKSBhbmQgdGhlIGZvb3RlciBiYW5kIChib3R0b21cbi8vIG9mIGV2ZXJ5IHBhZ2UpLCBpbiBJTkNIRVMuIFRoZSBiYW5kcyBob2xkIG5vIGNvbnRlbnQgb2YgdGhlaXIgb3duIOKAlCB0aGVcbi8vIG1hc3RlcidzIGNvbXBvbmVudHMgc2l0IGluIHRoZW0g4oCUIHRoZXkgYXJlIHRoZSByZXNlcnZlZCBtYXJnaW5zIHRoZSBlZGl0b3Jcbi8vIGRyYXdzIGFzIGd1aWRlcyBhbmQgc25hcHMgdG8uIEFsd2F5cyBhcnJpdmVzIHJlc29sdmVkICgwID0gbm8gYmFuZCkuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEhlYWRlckZvb3RlciB7XG4gIGhlYWRlckhlaWdodDogbnVtYmVyO1xuICBmb290ZXJIZWlnaHQ6IG51bWJlcjtcbn1cblxuLy8gUmVwb3J0LWxldmVsIHN0eWxpbmcuIFNpemVzIGFyZSBpbiBQT0lOVFMgKDEvNzJcIikg4oCUIHRoZSByZXBvcnQncyB0eXBvZ3JhcGh5XG4vLyBtYXBzIDE6MSB0byBQREYgKDcycHQvaW4pIGFuZCBQb3dlclBvaW50IChwb2ludCBmb250IHNpemVzKSwgc28gYSBwb2ludFxuLy8gdmFsdWUgaXMgZGltZW5zaW9uYWxseSBleGFjdCBvbiBzY3JlZW4gYW5kIGluIGV2ZXJ5IGV4cG9ydC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29uZmlnIHtcbiAgc3R5bGVzPzogUmVwb3J0U3R5bGVzO1xuICAvLyBUaGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbC4gT3B0aW9uYWwgb24gdGhlIHR5cGUgYmVjYXVzZSBhIFJlcG9ydENvbmZpZ1xuICAvLyBsaXRlcmFsIG5lZWQgbm90IGNhcnJ5IGl0OyB0aGUgQVBJIGFsd2F5cyBzZW5kcyBpdCwgcmVzb2x2ZWQuXG4gIGdyb3VwQnk/OiBSZXBvcnRHcm91cEJ5O1xuICAvLyBSZXNvbHZlZCBieSB0aGUgQVBJIGxpa2UgZ3JvdXBCeS5cbiAgaGVhZGVyRm9vdGVyPzogUmVwb3J0SGVhZGVyRm9vdGVyO1xufVxuXG4vLyBUaGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCDigJQgdGhlIG9uZSBzd2l0Y2ggdGhhdCByZS1idWNrZXRzIGV2ZXJ5XG4vLyB0aW1lLXNlcmllcyBjaGFydCBvbiB0aGUgcmVwb3J0IGJldHdlZW4gZGF5LCB3ZWVrLCBtb250aCwgcXVhcnRlciBhbmQgeWVhci5cbi8vXG4vLyBJdCBpcyBOT1QgYSBmaWx0ZXI6IGEgZmlsdGVyIG5hcnJvd3Mgd2hpY2ggcm93cyBhcmUgY291bnRlZCwgdGhpcyBjaGFuZ2VzIGhvd1xuLy8gdGhlIHN1cnZpdmluZyByb3dzIGFyZSBidWNrZXRlZC4gSXQgc2hhcmVzIHRoZSByZXBvcnQncyBmaWx0ZXIgYmFyIGJlY2F1c2Vcbi8vIHRoYXQgaXMgdGhlIG9uZSByb3cgb2YgY29udHJvbHMgYSB2aWV3ZXIgcmVhZHMgYSByZXBvcnQgdGhyb3VnaCDigJQgdGhlXG4vLyBzZXBhcmF0aW9uIHRoYXQgbWF0dGVycyBpcyBpbiB0aGUgbW9kZWwsIG5vdCBpbiB3aGVyZSB0aGUgY29udHJvbCBpcyBwYWludGVkLlxuLy9cbi8vIEFsd2F5cyBhcnJpdmVzIFJFU09MVkVEICh0aGUgYmFja2VuZCBmaWxscyBhbiBhYnNlbnQgb3IgcGFydGlhbCBzdG9yZWQgYmxvY2tcbi8vIGluIGZyb20gaXRzIG93biBkZWZhdWx0cyksIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gZGVmYXVsdCBoZXJlIOKAlCByZW5kZXIgd2hhdFxuLy8geW91IGFyZSBnaXZlbi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0R3JvdXBCeSB7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGdyYW51bGFyaXRpZXM6IENoYXJ0R3JhbnVsYXJpdHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTdHlsZXMge1xuICBoZWFkaW5nPzogeyBzaXplPzogbnVtYmVyIH07XG59XG5cbi8vIENvbnRlbnQgcGFkZGluZyBhcm91bmQgYSBjb21wb25lbnQncyBib2R5LCBpbiBJTkNIRVMgKHRoZSBnZW9tZXRyeSB1bml0KS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50UGFkZGluZyB7XG4gIHRvcD86IG51bWJlcjtcbiAgcmlnaHQ/OiBudW1iZXI7XG4gIGJvdHRvbT86IG51bWJlcjtcbiAgbGVmdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYWdlIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgb3JkZXI6IG51bWJlcjtcbiAgLy8gVGhlIHBhZ2Ugb3B0cyBvdXQgb2YgdGhlIHJlcG9ydCdzIGhlYWRlciBhbmQgZm9vdGVyIChhIHRpdGxlIHBhZ2UpLlxuICBtYXN0ZXJIaWRkZW46IGJvb2xlYW47XG4gIGNvbXBvbmVudHM6IFJlcG9ydENvbXBvbmVudFtdO1xuICAvLyBFdmVyeSBhY3RpdmUgdmFsdWUgb2YgdGhlIHBhZ2UsIGluIGlkIG9yZGVyOiB0aG9zZSBpdHMgdGV4dCBzaG93cyBhbmRcbiAgLy8gdGhvc2Ugbm8gdGV4dCBzaG93cyBhbnkgbW9yZSAoa2VwdCB1bnRpbCBhIHRleHQsIHZhbHVlIG9yIHBhZ2UgZGVsZXRlLCBzb1xuICAvLyBhIGNoaXAgcGFzdGVkIGJhY2sgc3RpbGwgbmFtZXMgb25lKS4gTmV2ZXIgZHJhd24sIGFuZCBuZXZlciBpblxuICAvLyBgY29tcG9uZW50c2AuIE9wdGlvbmFsIGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0LlxuICB2YWx1ZXM/OiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gJ3RleHQnIGlzIGF1dGhvcmVkIHJpY2ggdGV4dCB3aXRoIG5vIHF1ZXJ5IGJlaGluZCBpdCDigJQgaXQgbmV2ZXIgZmV0Y2hlcyBkYXRhLlxuLy8gJ3ZhbHVlJyBpcyBvbmUgbnVtYmVyIHNob3duIGluc2lkZSBhIHRleHQgYmxvY2sncyB3b3JkcyAoe3t2YWx1ZS5rZXl9fSk7IGl0XG4vLyBoYXMgYSBxdWVyeSBidXQgbm8gcGxhY2Ugb2YgaXRzIG93biBvbiB0aGUgcGFnZS5cbmV4cG9ydCB0eXBlIFJlcG9ydENvbXBvbmVudFR5cGUgPSAnY2hhcnQnIHwgJ2xpc3QnIHwgJ2twaScgfCAndGV4dCcgfCAndmFsdWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENvbXBvbmVudCB7XG4gIGlkOiBudW1iZXI7XG4gIHR5cGU6IFJlcG9ydENvbXBvbmVudFR5cGU7XG4gIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICAvLyBHZW9tZXRyeSBpbiBJTkNIRVM6IGFic29sdXRlIHBvc2l0aW9uIG9uIHRoZSBwYWdlIGNhbnZhcy5cbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHc6IG51bWJlcjtcbiAgaDogbnVtYmVyO1xuICAvLyBIZWlnaHQgbW9kZSwgREVSSVZFRCBmcm9tIHR5cGUgc2VydmVyLXNpZGUgKG5vdCBzdG9yZWQsIHJlYWQtb25seSk6IGxpc3RzXG4gIC8vIGFuZCBLUEkgdGlsZXMgYXJlIGF1dG8gKHRoZSBib3ggc2l6ZXMgdG8gaXRzIGNvbnRlbnQsIGBoYCBpZ25vcmVkKTsgY2hhcnRzXG4gIC8vIGFyZSBhbHdheXMgZml4ZWQgKHVzZSBgaGApIHNvIHRoZXkgZml0IHRoZSBib3ggYW5kIG5ldmVyIG92ZXJmbG93LlxuICBhdXRvSGVpZ2h0OiBib29sZWFuO1xuICAvLyBUaGUgc3RvcmVkIFNRTCBvZiBhIGxlZ2FjeSBzcWwtbW9kZSBjb21wb25lbnQuIE5VTEwgZm9yIGEgZGVyaXZlZCBvbmUsXG4gIC8vIHdob3NlIHN0YXRlbWVudCBkb2VzIG5vdCBleGlzdCB1bnRpbCBpdHMgZG9jdW1lbnQgaXMgY29tcGlsZWQg4oCUIHRoZSBTUUwgdGFiXG4gIC8vIGZldGNoZXMgdGhhdCBzZXBhcmF0ZWx5IChzZWUgUmVwb3J0Q29tcG9uZW50U3FsKS5cbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBjb25maWc6IENoYXJ0Q29uZmlnICYgTGlzdENvbmZpZyAmIEtwaUNvbmZpZyAmIFRleHRDb25maWcgJiBWYWx1ZUNvbmZpZyAmIENvbXBvbmVudExheW91dENvbmZpZ1xuICAgICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xufVxuXG4vLyBXaGF0IHRoZSBTUUwgdGFiIGZldGNoZXM6IHRoZSBzdGF0ZW1lbnQgYSBjb21wb25lbnQgcnVucy5cbi8vXG4vLyBGb3IgYSBkZXJpdmVkIGNvbXBvbmVudCBgYmFzZWxpbmVgIGlzIHRydWUgYW5kIGBzcWxgIGlzIHdoYXQgaXRzIGRvY3VtZW50XG4vLyBjb21waWxlcyB0byB3aXRoIE5PIHZpZXdlciBzdGF0ZSDigJQgbm8gZmlsdGVycywgdGhlIGF1dGhvcmVkIGdyYWluLiBUaGVcbi8vIG51bWJlcnMgb24gc2NyZWVuIGNvbWUgZnJvbSB0aGF0IHN0YXRlbWVudCBwbHVzIHdoYXRldmVyIHRoZSB2aWV3ZXIgcGlja2VkLFxuLy8gc28gdGhlIHR3byBjYW4gbGVnaXRpbWF0ZWx5IGRpZmZlciBhbmQgdGhlIHRhYiBzYXlzIHNvIHJhdGhlciB0aGFuIGltcGx5aW5nXG4vLyB0aGV5IG1hdGNoLlxuLy9cbi8vIGB0aW1lem9uZWAgaXMgdGhlIElBTkEgem9uZSB0aGUgc3RhdGVtZW50IHdhcyBjb21waWxlZCBpbjogdGhlIHJlcG9ydCdzXG4vLyBlZmZlY3RpdmUgem9uZS4gT3B0aW9uYWwgYmVjYXVzZSBvbGRlciBzZXJ2ZXJzIG9taXQgaXQ7IHRoZXkgY29tcGlsZWQgaW4gVVRDLlxuLy9cbi8vIGBlcnJvcmAgaXMgbm90IGEgZmFpbHVyZSBvZiB0aGUgcmVxdWVzdDogYSBkb2N1bWVudCB0aGF0IG5vIGxvbmdlciBjb21waWxlc1xuLy8gaXMgcHJlY2lzZWx5IHdoYXQgc29tZW9uZSBvcGVucyB0aGlzIHRhYiB0byBkaXNjb3Zlciwgc28gaXQgYXJyaXZlcyBhcyBhXG4vLyBtZXNzYWdlIHRvIHJlbmRlciB3aXRoIGBlcnJvclR5cGVgIG5hbWluZyB3aGljaCBraW5kICgnc3RhbGUtcXVlcnknIG9yXG4vLyAnc2Vuc2l0aXZlLWNvbHVtbicpLCBhbmQgYHNxbGAgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50U3FsIHtcbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBvcmlnaW46ICdzcWwnIHwgJ2RicScgfCAnZGVyaXZlZCc7XG4gIGJhc2VsaW5lOiBib29sZWFuO1xuICB0aW1lem9uZT86IHN0cmluZztcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIGVycm9yVHlwZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSB0ZXh0IGJsb2NrJ3MgY29udGVudDogYW4gaHRtbCBmcmFnbWVudCB0aGUgc2VydmVyIGhhcyBhbHJlYWR5IHJlYnVpbHQgZnJvbVxuLy8gYW4gYWxsb3dsaXN0LCB3aGljaCBtYXkgY2Fycnkge3twYWdlLm51bWJlcn19LCB7e3BhZ2UubmFtZX19IGFuZFxuLy8ge3tyZXBvcnQubmFtZX19IHRva2VucyAoc2VlIHRleHQudHMpLlxuZXhwb3J0IGludGVyZmFjZSBUZXh0Q29uZmlnIHtcbiAgaHRtbD86IHN0cmluZztcbn1cblxuLy8gQSB2YWx1ZSdzIGtleTogd2hhdCBpdHMgdG9rZW4gaW4gYSB0ZXh0IGJsb2NrJ3MgaHRtbCBuYW1lcywgdW5pcXVlIHdpdGhpblxuLy8gdGhlIHBhZ2UuIEl0cyBudW1iZXIgaXMgZm9ybWF0dGVkIGJ5IGNvbmZpZy5tZWFzdXJlIChLcGlDb25maWcpLCBhcyBvbiBhIEtQSS5cbi8vIEEgZm9ybXVsYSB2YWx1ZSBoYXMgbm8gcXVlcnk6IGBmb3JtdWxhYCBuYW1lcyB3aGF0IGl0IHdvcmtzIG91dCBvZiB0aGVcbi8vIHBhZ2UncyBxdWVyeSB2YWx1ZXMsIGFuZCBpdHMgbWVhc3VyZSBob2xkcyBvbmx5IHRoZSBmb3JtYXQga2V5cyBpdHMgYXV0aG9yXG4vLyBnYXZlIChmb3JtYXQsIHByZWNpc2lvbiwgdW5pdHMpLlxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUNvbmZpZyB7XG4gIGtleT86IHN0cmluZztcbiAgZm9ybXVsYT86IFZhbHVlRm9ybXVsYUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIEEgZm9ybXVsYSB2YWx1ZSdzIG9wZXJhdGlvbiBhbmQgb3BlcmFuZHM6IGBvZmAgbmFtZXMgcXVlcnkgdmFsdWVzIG9uIHRoZVxuLy8gc2FtZSBwYWdlICh0aGUgbWFzdGVyIGZvciBhIGhlYWRlciBvciBmb290ZXIpIGJ5IGtleSwgMiBvZiB0aGVtLCBvciAyIHRvIDEwXG4vLyBmb3IgYSBzdW0uIGBzaWduZWRgIGFic2VudCByZWFkcyB0cnVlIGZvciBhIGNoYW5nZSBhbmQgYSBwZXJjZW50IGNoYW5nZSxcbi8vIGZhbHNlIGZvciBhIHJhdGlvIGFuZCBhIHN1bS5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVGb3JtdWxhQ29uZmlnIHtcbiAgb3A6IFJlcG9ydFZhbHVlRm9ybXVsYTtcbiAgb2Y6IHN0cmluZ1tdO1xuICBzaWduZWQ/OiBib29sZWFuIHwgbnVsbDtcbn1cblxuLy8gT25lIHJvdyBvZiBQT1NUIHBhZ2VzLzppZC92YWx1ZXM6IGEgdmFsdWUncyBudW1iZXIgZm9yIHRoZSBmaWx0ZXJzIHNlbnQuXG4vLyBUaGVyZSBpcyBvbmUgcm93IHBlciB2YWx1ZSB0aGUgbGF5ZXIgcmVhZHMsIGluIGlkIG9yZGVyOiBvbmUgc29tZSB0ZXh0IG9uXG4vLyB0aGF0IHBhZ2Ugc2hvd3MsIG9yIGFuIG9wZXJhbmQgb2YgYSBmb3JtdWxhIHNvbWUgdGV4dCBzaG93cy4gYHZhbHVlYCBpc1xuLy8gcmF3LCBhcyB0aGUgcXVlcnkgcmV0dXJuZWQgaXQgb3IgdGhlIHNlcnZlciB3b3JrZWQgaXQgb3V0IChudWxsIHdoZW4gdGhlcmVcbi8vIGlzIG5vIHJvdyBvciB0aGUgcmVzdWx0IGlzIG51bGwpOyBmb3JtYXR0aW5nIGlzIHRoZSB2aWV3ZXIncywgdGhyb3VnaCB0aGVcbi8vIHZhbHVlJ3MgbWVhc3VyZS4gYGVycm9yYCBpcyB0aGF0IHZhbHVlJ3Mgb3duIGZhaWx1cmUsIGFuZCB0aGUgcGFnZSdzIG90aGVyXG4vLyB2YWx1ZXMgYXJlIHJlYWQgcmVnYXJkbGVzcy5cbi8vIGByb2xlYCBpcyB0aGUgY29tcGFyaXNvbiByb2xlIHRoZSBudW1iZXIgcGxheXM6IGEgcXVlcnkgdmFsdWUncyBjb21wYXJpc29uXG4vLyBvdXRwdXQncywgY2hhbmdlIG9yIHBlcmNlbnRfY2hhbmdlIGZvciB0aG9zZSBmb3JtdWxhcywgZWxzZSBudWxsLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYWdlVmFsdWUge1xuICBpZDogbnVtYmVyO1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIGVycm9yOiBzdHJpbmcgfCBudWxsO1xuICByb2xlPzogT3V0cHV0Um9sZSB8IG51bGw7XG59XG5cbi8vIENyb3NzLXR5cGUgbGF5b3V0L3N0eWxlIGtleXMgY2FycmllZCBpbiBhIGNvbXBvbmVudCdzIGNvbmZpZyAoYWxvbmdzaWRlIHRoZVxuLy8gdHlwZS1zcGVjaWZpYyBjaGFydC9saXN0L2twaSBrZXlzKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TGF5b3V0Q29uZmlnIHtcbiAgcGFkZGluZz86IENvbXBvbmVudFBhZGRpbmc7XG59XG5cbi8vIFRoZSBwcmVzZW50YXRpb24gc2V0dGluZ3MgYSBjb21wb25lbnQncyBzZXR0aW5ncyBkaWFsb2cgZWRpdHMuIFRpdGxlIGFuZFxuLy8gcGFkZGluZyBhcmUgbm90IHBhcnQgb2Ygd2hhdCB0aGUgY29tcG9uZW50IHF1ZXJpZXMsIHNvIGEgY2hhbmdlIHRvIHRoZW1cbi8vIHJlcGFpbnRzIHdpdGhvdXQgcmUtcnVubmluZyBhbnl0aGluZy4gQSBkZXJpdmVkIEtQSSdzIGNhcmQga2V5cyBhcmUgc2VudFxuLy8gdG9vOiB0aGUgc2VydmVyIGNvbXB1dGVzIHRoZSB0YXJnZXQncyBwcm9ncmVzcyBhbmQgdGhlIHNwYXJrbGluZSdzIHBvaW50c1xuLy8gd2l0aCB0aGUgZGF0YSwgc28gYSBjaGFuZ2UgdG8gdGhlbSByZWxvYWRzIGl0LlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRTZXR0aW5ncyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhZGRpbmc6IENvbXBvbmVudFBhZGRpbmc7XG4gIGtwaT86IEtwaUNhcmRTZXR0aW5ncztcbn1cblxuLy8gQSBLUEkncyBjYXJkIGtleXMuIFRoZSBkaWFsb2cgc2VuZHMgdGhlbSAobnVsbCByZW1vdmVzIGEga2V5LCBpbmNyZWFzZUlzXG4vLyBudWxsIHJlYWRzIGdvb2QpLCBhbmQgQ29tcG9uZW50U2V0dGluZ3Mua3BpIGNhcnJpZXMgdGhlbSBhcyB0aGUgc2VydmVyXG4vLyBzYXZlZCB0aGVtLCByZWFkIGJhY2sgZnJvbSB0aGUgY29uZmlnIGl0IHJldHVybnMuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNhcmRTZXR0aW5ncyB7XG4gIGluY3JlYXNlSXM6IFJlcG9ydENoYW5nZVBvbGFyaXR5IHwgbnVsbDtcbiAgdGFyZ2V0OiBLcGlUYXJnZXRDb25maWcgfCBudWxsO1xuICBzcGFya2xpbmU6IEtwaVNwYXJrbGluZUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIFdoZXJlIGEgY2hhcnQncyBsZWdlbmQgc2l0cyByZWxhdGl2ZSB0byB0aGUgcGxvdCwgb3IgJ2hpZGRlbicgdG8gZHJvcCBpdC5cbmV4cG9ydCB0eXBlIExlZ2VuZFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnaGlkZGVuJztcblxuZXhwb3J0IHR5cGUgQ2hhcnRHcmFudWxhcml0eSA9ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJyB8ICdxdWFydGVyJyB8ICd5ZWFyJztcblxuLy8gSG93IGVhY2ggZ3JhbnVsYXJpdHkgcmVhZHMgaW4gdGhlIGdyb3VwLWJ5IGNvbnRyb2wgYW5kIG9uIGFuIGV4cG9ydCBjb3ZlclxuLy8gc2hlZXQuIFdISUNIIG9mIHRoZW0gYSBnaXZlbiByZXBvcnQgb2ZmZXJzIGNvbWVzIGZyb20gaXRzIFJlcG9ydEdyb3VwQnk7XG4vLyB0aGlzIGlzIG9ubHkgdGhlIG5hbWluZy4gJ3llYXInIHJlYWRzIGFzIFwiQW5udWFsbHlcIi5cbmV4cG9ydCBjb25zdCBHUkFOVUxBUklUWV9PUFRJT05TOiB7IHZhbHVlOiBDaGFydEdyYW51bGFyaXR5OyBuYW1lOiBzdHJpbmcgfVtdID0gW1xuICB7IHZhbHVlOiAnZGF5JywgbmFtZTogJ0RheScgfSxcbiAgeyB2YWx1ZTogJ3dlZWsnLCBuYW1lOiAnV2VlaycgfSxcbiAgeyB2YWx1ZTogJ21vbnRoJywgbmFtZTogJ01vbnRoJyB9LFxuICB7IHZhbHVlOiAncXVhcnRlcicsIG5hbWU6ICdRdWFydGVyJyB9LFxuICB7IHZhbHVlOiAneWVhcicsIG5hbWU6ICdBbm51YWxseScgfSxcbl07XG5cbi8vIFRoZSBjaGFydCB0eXBlcyB0aGF0IHBsb3Qgc2VyaWVzIGFnYWluc3QgYSBjYXRlZ29yeSBhbmQgYSB2YWx1ZSBheGlzLCBhbmQgc29cbi8vIHRoZSB0eXBlcyBhIG1lYXN1cmUncyBvd24gc2VyaWVzIGNhbiBiZSBkcmF3biBhcy4gQSB3YXRlcmZhbGwgaGFzIHRoZSBzYW1lXG4vLyBheGVzIGJ1dCBpcyBub3Qgb25lIG9mIHRoZW06IGl0IGRyYXdzIGl0cyBvbmUgbWVhc3VyZSBhcyBmbG9hdGluZyBzdGVwcy5cbmV4cG9ydCB0eXBlIEF4aXNDaGFydFR5cGUgPSAnYmFyJyB8ICdsaW5lJyB8ICdhcmVhJztcblxuLy8gV2hhdCBvbmUgYmFyIG9mIGEgd2F0ZXJmYWxsIGRvZXMgdG8gdGhlIHJ1bm5pbmcgdG90YWwg4oCUIGVhY2ggaXMgZHJhd24gaW4gaXRzXG4vLyBvd24gY29sb3IuIFRoZSBjbG9zaW5nIHRvdGFsIGlzIHRoZSBsYXN0IGJhciwgc3RhbmRpbmcgb24gemVyby5cbmV4cG9ydCB0eXBlIFdhdGVyZmFsbFN0ZXBLaW5kID0gJ3Jpc2UnIHwgJ2ZhbGwnIHwgJ3RvdGFsJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGFydENvbmZpZyB7XG4gIC8vIEEgd2F0ZXJmYWxsIHRha2VzIE9ORSBtZWFzdXJlIHdob3NlIHZhbHVlIHBlciBjYXRlZ29yeSBpcyBob3cgZmFyIHRoZVxuICAvLyBydW5uaW5nIHRvdGFsIG1vdmVzIHRoZXJlOiBlYWNoIGJhciBzdGFydHMgd2hlcmUgdGhlIG9uZSBiZWZvcmUgaXQgZW5kZWQsXG4gIC8vIGFuZCBhIGNsb3NpbmcgVG90YWwgYmFyIHNob3dzIHRoZSBzdW0uXG4gIGNoYXJ0VHlwZT86IEF4aXNDaGFydFR5cGUgfCAnd2F0ZXJmYWxsJyB8ICdwaWUnIHwgJ2RvbnV0JztcbiAgLy8gRm9yIGtpbmQgJ3RpbWUnLCB0aGUgc2VydmVyIGJ1Y2tldHMgdGhlIHJhdyBkYXRldGltZSBjb2x1bW4gdG8gYGdyYW51bGFyaXR5YFxuICAvLyBpbiB0aGUgcmVwb3J0J3MgdGltZXpvbmUgKHRoZSBTUUwgZXhwb3NlcyB0aGUgcmF3IGNvbHVtbiwgdW5idWNrZXRlZCkuXG4gIC8vIGRhdGVMYWJlbCB3cml0ZXMgYSB0aW1lIGF4aXMncyBwZXJpb2QgbGFiZWxzIHNob3J0ICgnTWF5JywgdGhlIGRlZmF1bHQpLFxuICAvLyBsb25nICgnTWF5IDIwMjYnKSBvciBudW1lcmljICgnMjAyNi0wNScpOyBhIGNhdGVnb3J5IGF4aXMgaWdub3JlcyBpdC5cbiAgeEF4aXM/OiB7XG4gICAgY29sdW1uOiBzdHJpbmc7XG4gICAga2luZD86ICdjYXRlZ29yeScgfCAndGltZSc7XG4gICAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5O1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGRhdGVMYWJlbD86IFJlcG9ydENoYXJ0RGF0ZUxhYmVsO1xuICB9O1xuICBtZWFzdXJlcz86IENoYXJ0TWVhc3VyZVtdO1xuICAvLyBFYWNoIHZhbHVlIG9mIHRoaXMgY29sdW1uIGJlY29tZXMgaXRzIG93biBzZXJpZXMuIEl0IGNhcnJpZXMgbm8gbGFiZWw6IHRoZVxuICAvLyBsZWdlbmQgbmFtZXMgdGhlIHZhbHVlcyB0aGVtc2VsdmVzLlxuICBzcGxpdEJ5PzogeyBjb2x1bW46IHN0cmluZyB9O1xuICAvLyBTaW5nbGUtZGltZW5zaW9uIGJhciBjaGFydHMgb25seTogY29sb3IgZWFjaCBiYXIgYnkgaXRzIG93biBjYXRlZ29yeSBhbmRcbiAgLy8gc2hvdyBhIGxlZ2VuZCwgV0lUSE9VVCBzcGxpdHRpbmcgaW50byBtdWx0aXBsZSBzZXJpZXMgKHdoaWNoIHNsaXZlcnMgdGhlXG4gIC8vIGJhcnMpLiB2MSBleHBlY3RzIGNvbG9yQnkuY29sdW1uID09PSB4QXhpcy5jb2x1bW4uIElnbm9yZWQgd2hlbiBzcGxpdEJ5IGlzXG4gIC8vIHNldCBvciB0aGUgY2hhcnQgaXNuJ3QgYSBiYXIgY2hhcnQuXG4gIGNvbG9yQnk/OiB7IGNvbHVtbjogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9O1xuICBvcmllbnRhdGlvbj86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XG4gIHN0YWNrZWQ/OiBib29sZWFuO1xuICAvLyBTdGFja3MgdGhlIHByaW1hcnkgYXhpcydzIGJhciBhbmQgYXJlYSBzZXJpZXMgYXMgc2hhcmVzIG9mIGVhY2hcbiAgLy8gY2F0ZWdvcnkncyB0b3RhbCwgc28gZXZlcnkgc3RhY2sgcmVhY2hlcyAxMDAlLiBUaGUgdmlld2VyIGNvbXB1dGVzIHRoZVxuICAvLyBzaGFyZXMgZnJvbSB0aGUgcm93cyBpdCByZWNlaXZlcywgYWZ0ZXIgdGhlIGZpbHRlcnMgcmFuOyB0aGUgcm93cyBhbmQgdGhlXG4gIC8vIENTViBrZWVwIHRoZSByYXcgdmFsdWVzLiBUaGUgdmFsdWUgYXhpcyB0aGVuIGFsd2F5cyBydW5zIDAgdG8gMTAwJSAoZnJvbVxuICAvLyAtMTAwJSB3aGVuIGEgc2hhcmUgaXMgbmVnYXRpdmUpLlxuICBwZXJjZW50U3RhY2tlZD86IGJvb2xlYW47XG4gIC8vIFZhbHVlcyBwcmludGVkIGJlc2lkZSB0aGUgcG9pbnRzIG9mIGEgYmFyLCBsaW5lIG9yIGFyZWEgc2VyaWVzOiBldmVyeVxuICAvLyBwb2ludCAoYWxsKSwgZWFjaCBzZXJpZXMnIGxhdGVzdCBwb2ludCAobGFzdCksIG9yIGV2ZXJ5IHBvaW50IHdob3NlIGxhYmVsXG4gIC8vIGZpdHMgd2l0aG91dCBvdmVybGFwcGluZyBhbm90aGVyIChhdXRvKS4gT21pdHRlZCBvciBub25lLCBubyBsYWJlbHMuIEFcbiAgLy8gcGllLCBhIGRvbnV0IGFuZCBhIHdhdGVyZmFsbCBuZXZlciBwcmludCB0aGVtLlxuICBkYXRhTGFiZWxzPzogUmVwb3J0Q2hhcnREYXRhTGFiZWxzO1xuICAvLyBUaGUgcHJpbWFyeSB2YWx1ZSBheGlzJ3MgdGl0bGUgYW5kIHJhbmdlLiBFdmVyeSBzZXJpZXMgaXMgcGxvdHRlZCBhZ2FpbnN0XG4gIC8vIGl0IHVubGVzcyBpdHMgbWVhc3VyZSBpcyBzZWNvbmRhcnkuXG4gIHZhbHVlQXhpcz86IENoYXJ0VmFsdWVBeGlzO1xuICAvLyBUaGUgc2Vjb25kIHZhbHVlIGF4aXMsIG9uIHRoZSByaWdodCwgdGhhdCBzZWNvbmRhcnkgbWVhc3VyZXMgcGxvdCBhZ2FpbnN0LlxuICBzZWNvbmRhcnlBeGlzPzogQ2hhcnRWYWx1ZUF4aXM7XG4gIC8vIExhYmVsZWQgbGluZXMgYWNyb3NzIHRoZSBwbG90IGF0IGEgY29uc3RhbnQgdmFsdWUsIG9yIGJhbmRzIGJldHdlZW4gdHdvXG4gIC8vIHZhbHVlcywgYXQgbW9zdCA1LiBWZXJ0aWNhbCBheGlzIGNoYXJ0cyBhbmQgd2F0ZXJmYWxscyBvbmx5LlxuICByZWZlcmVuY2VzPzogQ2hhcnRSZWZlcmVuY2VbXTtcbiAgbGVnZW5kPzogTGVnZW5kUG9zaXRpb247XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBsaW1pdD86IG51bWJlcjtcbn1cblxuLy8gQSB2YWx1ZSBheGlzJ3MgdGl0bGUgYW5kIHJhbmdlLiBFYWNoIGJvdW5kIGxlZnQgb3V0IGlzIHBpY2tlZCBmcm9tIHRoZSBkYXRhLFxuLy8gYW5kIHRoZSB0aWNrIHN0ZXAgd2l0aG91dCBhbiBpbnRlcnZhbC4gSXRzIHRpY2tzIHRha2UgdGhlIG51bWJlciBmb3JtYXQgb2Zcbi8vIHRoZSBtZWFzdXJlcyBwbG90dGVkIGFnYWluc3QgaXQuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0VmFsdWVBeGlzIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICBpbnRlcnZhbD86IG51bWJlcjtcbn1cblxuLy8gQSByZWZlcmVuY2UgZHJhd24gYWNyb3NzIGEgY2hhcnQncyBwbG90OiBhIGxpbmUgYXQgYHZhbHVlYCwgb3Igd2l0aCBgdG9gIGFcbi8vIGJhbmQgYmV0d2VlbiB0aGUgdHdvLCBsYWJlbGVkIHdpdGggYGxhYmVsYC4gVGhlIHZhbHVlIGlzIG9uZSB0aGUgdXNlciBvclxuLy8gdGhlIG1vZGVsIHN0YXRlcywgbmV2ZXIgb25lIHJlYWQgb2ZmIHRoZSBkYXRhLiBzZWNvbmRhcnkgcGxvdHMgaXQgYWdhaW5zdFxuLy8gdGhlIHNlY29uZCB2YWx1ZSBheGlzLCB3aGVuIHRoZSBjaGFydCBoYXMgb25lLlxuZXhwb3J0IGludGVyZmFjZSBDaGFydFJlZmVyZW5jZSB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHRvPzogbnVtYmVyO1xuICBzZWNvbmRhcnk/OiBib29sZWFuO1xufVxuXG4vLyBIb3cgb25lIG51bWVyaWMgc2xvdCBpcyBzaG93bjogYSBjaGFydCBtZWFzdXJlLCBhIEtQSSBtZWFzdXJlLCBhIGxpc3QgY29sdW1uXG4vLyBvciBhIGNyb3NzLXRhYidzIGNlbGxzLiBUaGUgZGF0YSBzdGF5cyByYXcgKGl0IHNvcnRzIGFuZCBleHBvcnRzIGFzIGFcbi8vIG51bWJlcik7IG9ubHkgdGhlIHJlbmRlcmVycyBmb3JtYXQgaXQsIHRoZSBzYW1lIHdheSBvbiBzY3JlZW4sIGluIHRoZSBQREZcbi8vIGFuZCBpbiBQb3dlclBvaW50IChmb3JtYXQudHMpLiBBbGwgdGhyZWUga2V5cyBhcmUgb3B0aW9uYWwsIGFuZCBwcmVjaXNpb24gb3Jcbi8vIHVuaXRzIHdpdGhvdXQgYSBmb3JtYXQgbWVhbiBudW1iZXIuXG4vL1xuLy8gRm9ybWF0dGluZyBpcyBvcHQtaW46IGEgbGlzdCBjb2x1bW4gb3IgY3Jvc3MtdGFiIGNlbGwgd2l0aG91dCB0aGVzZSBrZXlzXG4vLyBwcmludHMgaXRzIHZhbHVlIGFzIGl0IGNhbWUsIGFuZCBhIGNoYXJ0IHdpdGhvdXQgdGhlbSBrZWVwcyBpdHMgcGxhaW5cbi8vIGxvY2FsZS1ncm91cGVkIGF4aXMgYW5kIHRvb2x0aXBzLiBBIEtQSSB3aXRob3V0IHRoZW0gcHJpbnRzIGEgcGxhaW4gbnVtYmVyLlxuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgLy8gcGVyY2VudCB0YWtlcyBhIDAtMSByYXRpbyAoMC4zIHJlYWRzIDMwJSkgd2hlbiB0aGUgcmVwb3J0J3MgcGVyY2VudEZvcm1hdFxuICAvLyBpcyAncmF0aW8nOyBhbiBvbGRlciBzZXJ2ZXIgbGVhdmVzIGl0IG91dCBhbmQgc2VuZHMgeDEwMC4gY3VycmVuY3kgbGFiZWxzXG4gIC8vIHRoZSBhbW91bnQgaW4gdGhlIHJlcG9ydCdzIGN1cnJlbmN5LCB3cml0dGVuIGluIGl0cyBsb2NhbGUuXG4gIGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0IHwgUmVwb3J0TGlzdENvbHVtbkZvcm1hdDtcbiAgLy8gSG93IG1hbnkgZGVjaW1hbCBwbGFjZXMgdGhlIHZhbHVlIGlzIHNob3duIHRvICgwLTYpLiBGaXhlZCByYXRoZXIgdGhhblxuICAvLyBtYXhpbXVtOiBhIGNvbHVtbiBvZiByYXRlcyBpcyB1bnJlYWRhYmxlIHdoZW4gZWFjaCBvbmUgc2hvd3MgYSBkaWZmZXJlbnRcbiAgLy8gbnVtYmVyIG9mIGRlY2ltYWxzLiBGb3IgcGVyY2VudCBpdCBjb3VudHMgdGhlIGRlY2ltYWxzIG9mIHRoZSBwZXJjZW50YWdlXG4gIC8vIChwcmVjaXNpb24gMSBzaG93cyAwLjMgYXMgMzAuMCUpLiBPbWl0dGVkIGxlYXZlcyB0aGUgZm9ybWF0J3Mgb3duIGRlZmF1bHQ6XG4gIC8vIGF0IG1vc3Qgb25lIGRlY2ltYWwgZm9yIHBlcmNlbnQgKGFuZCBmb3IgYW4gYWJicmV2aWF0ZWQgMS4ySyksIHdob2xlIHVuaXRzXG4gIC8vIGZvciBjdXJyZW5jeSwgdGhlIGxvY2FsZSdzIGRlZmF1bHQgZm9yIGEgbnVtYmVyLlxuICAvL1xuICAvLyBJdCBjYW5ub3QgYmUgYXBwbGllZCBpbiB0aGUgU1FMOiB0aGUgdmFsdWUgaXMgYWdncmVnYXRlZCBhZnRlciB0aGUgcmVwb3J0J3NcbiAgLy8gZmlsdGVycyBydW4sIHNvIHByZS1yb3VuZGluZyB3b3VsZCBicmVhayBsaXZlIHJlLWZpbHRlcmluZy5cbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICAvLyBBYmJyZXZpYXRlcyB0byB0aG91c2FuZHMgKDEuMkspIG9yIG1pbGxpb25zICgzLjRNKSwgb3IgcGlja3MgYnkgc2l6ZS5cbiAgdW5pdHM/OiBSZXBvcnROdW1iZXJVbml0cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFydE1lYXN1cmUgZXh0ZW5kcyBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGFnZ3JlZ2F0aW9uPzogJ3N1bScgfCAnY291bnQnIHwgJ2F2ZycgfCAnbWluJyB8ICdtYXgnO1xuICBsYWJlbD86IHN0cmluZztcbiAgLy8gRHJhd3MgdGhpcyBtZWFzdXJlJ3Mgc2VyaWVzIGFzIGEgZGlmZmVyZW50IHR5cGUgZnJvbSB0aGUgY2hhcnQncyBvd25cbiAgLy8gY2hhcnRUeXBlIOKAlCBjb3VudHMgYXMgYmFycyB3aXRoIGEgcmF0ZSBhcyBhIGxpbmUgb3ZlciB0aGVtIGlzIGEgY29tYm9cbiAgLy8gY2hhcnQuIE9taXR0ZWQsIHRoZSBzZXJpZXMgdGFrZXMgdGhlIGNoYXJ0J3MgdHlwZS4gQXhpcyBjaGFydHMgb25seSAoYSBwaWVcbiAgLy8gaWdub3JlcyBpdCkuXG4gIHR5cGU/OiBBeGlzQ2hhcnRUeXBlO1xuICAvLyBBIGNoYXJ0IG1lYXN1cmUncyBmb3JtYXQgc2hvd3Mgb24gaXRzIHRvb2x0aXBzLCBhbmQgb24gdGhlIHZhbHVlIGF4aXNcbiAgLy8gd2hlbiBldmVyeSBtZWFzdXJlIHNoYXJpbmcgdGhlIGF4aXMgYWdyZWVzIG9uIGl0LiBBIEtQSSdzIG1lYXN1cmUgZm9ybWF0c1xuICAvLyBpdHMgb25lIHZhbHVlLlxuICBmb3JtYXQ/OiBSZXBvcnRWYWx1ZUZvcm1hdDtcbiAgLy8gUGxvdHMgdGhpcyBtZWFzdXJlIGFnYWluc3QgdGhlIHNlY29uZCB2YWx1ZSBheGlzLCBvbiB0aGUgcmlnaHQsIGZvciBhXG4gIC8vIHF1YW50aXR5IG9uIGFub3RoZXIgc2NhbGUuIE9taXR0ZWQgb3IgZmFsc2UsIGl0IHNoYXJlcyB0aGUgcHJpbWFyeSBheGlzLlxuICAvLyBBIHZlcnRpY2FsIGF4aXMgY2hhcnQgb25seSwgd2l0aCBhdCBsZWFzdCBvbmUgbWVhc3VyZSBsZWZ0IG9uIHRoZSBwcmltYXJ5XG4gIC8vIGF4aXMuXG4gIHNlY29uZGFyeT86IGJvb2xlYW47XG4gIC8vIFRoZSBwYWxldHRlIGNvbG9yIHRoaXMgbWVhc3VyZSdzIHNlcmllcyBpcyBkcmF3biBpbi4gT21pdHRlZCwgdGhlIHNlcmllc1xuICAvLyB0YWtlcyB0aGUgcGFsZXR0ZSBjb2xvciBvZiBpdHMgcG9zaXRpb24uIEEgY29sb3Igb24gdGhlIGZpcnN0IG1lYXN1cmVcbiAgLy8gdHVybnMgb2ZmIGEgY2F0ZWdvcnkgYmFyIGNoYXJ0J3MgZGVmYXVsdCBjb2xvciBwZXIgYmFyIChpc0NvbG9yQnkpLlxuICBjb2xvcj86IFJlcG9ydENoYXJ0Q29sb3I7XG4gIC8vIEhvdyBhIGxpbmUgc2VyaWVzJyBsaW5lIGlzIGRyYXduLiBPbWl0dGVkLCBzb2xpZC5cbiAgbGluZT86IFJlcG9ydENoYXJ0TGluZVN0eWxlO1xuICAvLyBXaGV0aGVyIGEgbGluZSBvciBhcmVhIHNlcmllcyBkcmF3cyBhIGRvdCBvbiBlYWNoIHBvaW50LiBPbWl0dGVkLCB0cnVlLlxuICBtYXJrZXJzPzogYm9vbGVhbjtcbiAgLy8gQSBsaW5lIGFjcm9zcyB0aGUgcGxvdCBhdCB0aGlzIHNlcmllcycgYXZlcmFnZSwgbWVkaWFuLCBsb3dlc3Qgb3IgaGlnaGVzdFxuICAvLyB2YWx1ZSBvdmVyIHRoZSBwb2ludHMgb24gc2NyZWVuLiBWZXJ0aWNhbCBheGlzIGNoYXJ0cyBvbmx5LlxuICBtYXJrTGluZT86IFJlcG9ydENoYXJ0TWFya1N0YXQ7XG59XG5cbi8vIE9uZSBhdXRob3JlZCBjb2x1bW4gb2YgYSBwbGFpbiBsaXN0LlxuZXhwb3J0IGludGVyZmFjZSBMaXN0Q29sdW1uIGV4dGVuZHMgTnVtYmVyRm9ybWF0U3BlYyB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgLy8gZGF0ZSBrZWVwcyB0aGUgY29sdW1uIGEgUkFXIHRpbWVzdGFtcCwgc28gdGhlIHJlcG9ydCB0aW1lem9uZSBhbmQgaXRzXG4gIC8vIGRhdGVSYW5nZSBmaWx0ZXJzIGtlZXAgd29ya2luZywgYW5kIHRoZSB2aWV3ZXIgcmVuZGVycyBpdCBhcyBhIGRheSBpbiB0aGVcbiAgLy8gcmVwb3J0J3Mgem9uZSBhbmQgbG9jYWxlLiBudW1iZXIsIHBlcmNlbnQgYW5kIGN1cnJlbmN5IGZvcm1hdCB0aGUgdmFsdWUgYXNcbiAgLy8gYSBLUEkgbWVhc3VyZSBkb2VzLiBXaXRob3V0IGEgZm9ybWF0IHRoZSB2YWx1ZSBwcmludHMgYXMgaXQgY2FtZS5cbiAgZm9ybWF0PzogUmVwb3J0TGlzdENvbHVtbkZvcm1hdDtcbiAgLy8gQSBjb2x1bW4gdGhlIFNRTCBhbHJlYWR5IGZvcm1hdHRlZCBpcyB0ZXh0LCBzbyBpdCBuYW1lcyBgc29ydENvbHVtbmA6IHRoZVxuICAvLyByYXcgbnVtZXJpYyBhbGlhcyB0aGUgcXVlcnkgYWxzbyBvdXRwdXRzLCB3aGljaCB0aGUgc2VydmVyIG9yZGVycyBieVxuICAvLyBpbnN0ZWFkLlxuICBzb3J0Q29sdW1uPzogc3RyaW5nO1xuICAvLyBmYWxzZSBrZWVwcyB0aGUgY2VsbCBvbiBvbmUgbGluZS4gT21pdHRlZCwgYSBsb25nIHZhbHVlIHdyYXBzLlxuICB3cmFwPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0Q29uZmlnIHtcbiAgY29sdW1ucz86IExpc3RDb2x1bW5bXTtcbiAgLy8gQSBjcm9zcy10YWI6IGByb3dCeWAgc3RheXMgZG93biB0aGUgc2lkZSBhbmQgZXZlcnkgdmFsdWUgb2YgYHBpdm90QnlgXG4gIC8vIGJlY29tZXMgYSBjb2x1bW4uIFRoZSB0d28gYXJlIHNldCB0b2dldGhlciwgYGNvbHVtbnNgIGlzIG9taXR0ZWQgKHRoZVxuICAvLyBiYWNrZW5kIHJlamVjdHMgYXV0aG9yaW5nIGJvdGgpLCBhbmQgdGhlIGNvbHVtbiBzZXQgYXJyaXZlcyB3aXRoIHRoZSByb3dzXG4gIC8vIGluIENvbXBvbmVudERhdGEuY29sdW1ucyBiZWNhdXNlIG9ubHkgdGhlIHJlc3VsdCBrbm93cyB0aGUgcGl2b3QgdmFsdWVzLlxuICAvLyByb3dCeS5sYWJlbCBoZWFkcyB0aGUgc2lkZSBjb2x1bW4gb24gc2NyZWVuIGFuZCBpbiBldmVyeSBleHBvcnQsIGFuZFxuICAvLyBkZWZhdWx0cyB0byB0aGUgY29sdW1uIG5hbWUuIHBpdm90QnkgY2FycmllcyBubyBsYWJlbDogaXRzIHZhbHVlcyBhcmUgdGhlXG4gIC8vIGhlYWRpbmdzLlxuICByb3dCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIHBpdm90Qnk/OiB7IGNvbHVtbjogc3RyaW5nIH07XG4gIC8vIFRoZSBhdXRob3JlZCBvcmRlciwgbW9zdCBpbXBvcnRhbnQgZmlyc3QuIEEgbGlzdCBzYXZlZCBiZWZvcmUgbXVsdGkta2V5XG4gIC8vIHNvcnRpbmcgc3RvcmVzIG9uZSBvYmplY3QsIHNvIHJlYWQgaXQgdGhyb3VnaCBsaXN0U29ydFRlcm1zKCkgb25seS5cbiAgc29ydD86IFJlcG9ydFNvcnQgfCBSZXBvcnRTb3J0W107XG4gIC8vIEhvdyBtYW55IGxlYWRpbmcgY29sdW1ucyBzdGF5IGluIHZpZXcgd2hpbGUgdGhlIGxpc3Qgc2Nyb2xscyBzaWRld2F5c1xuICAvLyAoMC0zKS4gVW5zZXQsIGEgY3Jvc3MtdGFiIHBpbnMgaXRzIHJvdy1rZXkgY29sdW1uIGFuZCBhIHBsYWluIGxpc3Qgbm9uZS5cbiAgcGlubmVkQ29sdW1ucz86IG51bWJlciB8IG51bGw7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICAvLyB0cnVlIGFkZHMgYSB0b3RhbHMgcm93IHVuZGVyIHRoZSBsaXN0OiB0aGUgc2VydmVyIHJ1bnMgdGhlIG1lYXN1cmVzIGFnYWluXG4gIC8vIG92ZXIgZXZlcnkgcm93IHRoZSBmaWx0ZXJzIGtlZXAsIHdpdGhvdXQgZ3JvdXBpbmcsIGFuZCBhIGNyb3NzLXRhYiB0b3RhbHNcbiAgLy8gZWFjaCBjb2x1bW4uXG4gIHRvdGFscz86IGJvb2xlYW47XG4gIC8vIEEgY3Jvc3MtdGFiIG9ubHk6IGhvdyBldmVyeSBjZWxsIG9mIHRoZSBncmlkIGlzIGZvcm1hdHRlZCwgd2l0aCBhIEtQSVxuICAvLyBtZWFzdXJlJ3Mga2V5cy4gVGhlIHJvdyBrZXkgY29sdW1uIHN0YXlzIGFzIGl0IGNhbWUuXG4gIGNlbGxGb3JtYXQ/OiBOdW1iZXJGb3JtYXRTcGVjICYgeyBmb3JtYXQ/OiBSZXBvcnRWYWx1ZUZvcm1hdCB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNvbmZpZyB7XG4gIG1lYXN1cmU/OiBDaGFydE1lYXN1cmU7XG4gIC8vIFdoZXRoZXIgYSByaXNlIGluIHRoZSB2YWx1ZSBpcyBnb29kIG5ld3MsIGJhZCBuZXdzIG9yIG5laXRoZXI6IGl0IHBpY2tzXG4gIC8vIHRoZSBkZWx0YSdzIGNvbG9yIGFuZCBkZWNpZGVzIHdoZW4gYSB0YXJnZXQgaXMgbWV0IChnb29kOiBhdCBvciBhYm92ZSBpdDtcbiAgLy8gYmFkOiBhdCBvciBiZWxvdyBpdDsgbmV1dHJhbDogbmV2ZXIganVkZ2VkKS4gT21pdHRlZCBvciBudWxsIHJlYWRzIGdvb2QuXG4gIGluY3JlYXNlSXM/OiBSZXBvcnRDaGFuZ2VQb2xhcml0eSB8IG51bGw7XG4gIC8vIEEgbnVtYmVyIHRoZSB1c2VyIGdhdmUgZm9yIHRoZSB2YWx1ZSB0byByZWFjaCwgbmV2ZXIgb25lIHJlYWQgb2ZmIHRoZVxuICAvLyBkYXRhLiBUaGUgc2VydmVyIHNlbmRzIHRoZSBwcm9ncmVzcyB0b3dhcmQgaXQgd2l0aCB0aGUgZGF0YS5cbiAgdGFyZ2V0PzogS3BpVGFyZ2V0Q29uZmlnIHwgbnVsbDtcbiAgLy8gQSBzbWFsbCB0cmVuZCBsaW5lIG9mIHRoZSB2YWx1ZSBvdmVyIGl0cyBsYXN0IHBlcmlvZHMsIGRyYXduIHVuZGVyIGl0LlxuICBzcGFya2xpbmU/OiBLcGlTcGFya2xpbmVDb25maWcgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHRhcmdldDogdGhlIHZhbHVlLCBhbmQgYW4gb3B0aW9uYWwgY2FwdGlvbiBmb3IgaXQgKCdHb2FsJykuXG5leHBvcnQgaW50ZXJmYWNlIEtwaVRhcmdldENvbmZpZyB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSBLUEkncyBzcGFya2xpbmU6IGhvdyB3aWRlIGVhY2ggcG9pbnQncyBwZXJpb2QgaXMgKG51bGwgcmVhZHMgbW9udGgpIGFuZFxuLy8gaG93IG1hbnkgcGVyaW9kcyBpdCBkcmF3cywgMiB0byA2MCAobnVsbCByZWFkcyAxMikuXG5leHBvcnQgaW50ZXJmYWNlIEtwaVNwYXJrbGluZUNvbmZpZyB7XG4gIGdyYW51bGFyaXR5PzogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIHBlcmlvZHM/OiBudW1iZXIgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNvcnQge1xuICBjb2x1bW46IHN0cmluZztcbiAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCB0eXBlIFJlcG9ydEZpbHRlclR5cGUgPSAnZGF0ZVJhbmdlJyB8ICdzZWxlY3QnIHwgJ2tleXdvcmQnIHwgJ251bWJlclJhbmdlJztcblxuLy8gV2hlcmUgYSBmaWx0ZXIgZ3JvdXAncyBjb250cm9sIGlzIGV4cG9zZWQuIEEgZ3JvdXAgY2FuIGJlIHNob3duIG9uIGl0c1xuLy8gY29tcG9uZW50cywgaW4gdGhlIHJlcG9ydCBiYXIsIG9yIEJPVEggYXQgb25jZSAodGhlIHR3byBhcmUgaW5kZXBlbmRlbnRcbi8vIHRvZ2dsZXMgaW4gdGhlIFVJKTsgYSBjb2x1bW4gd2l0aCBuZWl0aGVyIGV4cG9zZWQgc2ltcGx5IGhhcyBubyBmaWx0ZXIuXG4vLyAncGFnZScgc2hvd3MgaXQgaW4gdGhlIHJlcG9ydCBiYXIgb2Ygb25lIHBhZ2Ugb25seSAoUmVwb3J0RmlsdGVyR3JvdXAucGFnZUlkKS5cbmV4cG9ydCB0eXBlIFJlcG9ydEZpbHRlckxldmVsID0gJ2NvbXBvbmVudCcgfCAncmVwb3J0JyB8ICdib3RoJyB8ICdwYWdlJztcblxuLy8gT25lIGZpbHRlcmFibGUgb3V0cHV0IGNvbHVtbiBvZiBhIGNvbXBvbmVudCdzIFNRTCwgd2l0aCB0aGUgZmlsdGVyIGludGVyZmFjZVxuLy8gSU5GRVJSRUQgZnJvbSBpdHMgZGF0YSAodGhlIGh1bWFuIG5ldmVyIHBpY2tzIHRoZSBpbnRlcmZhY2Ug4oCUIGl0IGZvbGxvd3MgdGhlXG4vLyBjb2x1bW4ncyB0eXBlKS4gRHJpdmVzIHRoZSBGaWx0ZXJzIHRhYiBsaXN0aW5nLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXJhYmxlQ29sdW1uIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHR5cGU6IFJlcG9ydEZpbHRlclR5cGU7XG4gIC8vIEV2ZXJ5IGludGVyZmFjZSB0aGUgY29sdW1uIGNhbiB0YWtlLCB0aGUgaW5mZXJyZWQgb25lICh0eXBlKSBmaXJzdDogYVxuICAvLyBudW1lcmljIGNvbHVtbiB0YWtlcyBbJ3NlbGVjdCcsICdudW1iZXJSYW5nZSddLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycy5cbiAgdHlwZXM/OiBSZXBvcnRGaWx0ZXJUeXBlW107XG59XG5cbi8vIEdyb3VuZCB0cnV0aDogb25lIGZpbHRlcmFibGUgb3V0cHV0IGNvbHVtbiBPTiBvbmUgY29tcG9uZW50J3MgU1FMLiBBbHdheXMgYVxuLy8gbWVtYmVyIG9mIGEgZmlsdGVyIGdyb3VwIOKAlCB0aGUgdW5pdCB0aGF0IGxpbmtzIGVxdWl2YWxlbnQgZmlsdGVycyBhY3Jvc3Ncbi8vIGNvbXBvbmVudHMgYW5kIGRlY2lkZXMgd2hlcmUgdGhlIGNvbnRyb2wgcmVuZGVycyAoY29tcG9uZW50IHZzIHJlcG9ydCBiYXIpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRJZDogbnVtYmVyO1xuICBmaWx0ZXJHcm91cElkOiBudW1iZXI7XG4gIGZpbHRlckNvbHVtbjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgaGFzT3B0aW9uczogYm9vbGVhbjtcbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLy8gT25lIGNob2ljZSBpbiBhIHNlbGVjdCBmaWx0ZXIncyBvcHRpb24gbGlzdC4gVGhlIHZhbHVlIGlzIHdoYXQgdGhlIGZpbHRlclxuLy8gbWF0Y2hlcyBvbiBhbmQgZ2V0cyBzdG9yZWQgaW4gYSBzYXZlZCBkZWZhdWx0IOKAlCBmb3IgYW4gZW50aXR5IHRoYXQgaXMgaXRzXG4vLyBzdGFibGUgaWQsIG5ldmVyIGl0cyBuYW1lLCBzbyByZW5hbWluZyB0aGUgZW50aXR5IG1vdmVzIHRoZSBsYWJlbCB3aXRob3V0XG4vLyBicmVha2luZyB0aGUgZGVmYXVsdC4gVGhlIGxhYmVsIGlzIG9ubHkgZXZlciB3aGF0IHRoZSB2aWV3ZXIgcmVhZHMuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlck9wdGlvbiB7XG4gIHZhbHVlOiB1bmtub3duO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlckdyb3VwIHtcbiAgaWQ6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIHR5cGU6IFJlcG9ydEZpbHRlclR5cGU7XG4gIGxldmVsOiBSZXBvcnRGaWx0ZXJMZXZlbDtcbiAgb3JkZXI6IG51bWJlcjtcbiAgY29uZmlnOiB7IGRlZmF1bHQ/OiBGaWx0ZXJHcm91cERlZmF1bHQgfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmaWx0ZXJzOiBSZXBvcnRGaWx0ZXJbXTtcbiAgLy8gVGhlIHBhZ2Ugd2hvc2UgcmVwb3J0IGJhciBzaG93cyB0aGUgZ3JvdXA6IHNldCBvbmx5IHdoZW4gbGV2ZWwgaXMgJ3BhZ2UnLFxuICAvLyBudWxsIG90aGVyd2lzZS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMuXG4gIHBhZ2VJZD86IG51bWJlciB8IG51bGw7XG4gIC8vIFRoZSBjb21wb25lbnRzIG9mIHRoZSBncm91cCdzIGFjdGl2ZSwgZW5hYmxlZCBtZW1iZXJzIHRoYXQgYXJlIHRpbGVzXG4gIC8vIChjaGFydCwgbGlzdCwgS1BJKS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMuXG4gIGNvbXBvbmVudElkcz86IG51bWJlcltdO1xuICAvLyBUcnVlIHdoZW4gYW4gZW5hYmxlZCBtZW1iZXIgYmluZHMgc2V2ZXJhbCBjb2x1bW5zLCB3aGVyZSB2YWx1ZXMgY2Fubm90XG4gIC8vIGJlIGxlZnQgb3V0OiB0aGUgZ3JvdXAgb2ZmZXJzIG5vICdFeGNsdWRlIHRoZXNlJyAob2ZmZXJzRXhjbHVkZSkuIEFic2VudFxuICAvLyBvbiBvbGRlciBzZXJ2ZXJzLlxuICBtdWx0aUNvbHVtbj86IGJvb2xlYW47XG4gIC8vIEEgc2VsZWN0IGdyb3VwJ3MgbGFiZWwgZm9yIGEgYmxhbmsgcm93LCBudWxsIHdoZW4gYmxhbmsgcm93cyBoYXZlIG5vbmU6XG4gIC8vIGFuIGV4Y2x1ZGUgbGluZSBzYXlzIHdoZXRoZXIgdGhlIGJsYW5rIHJvd3MgYXJlIGtlcHQuIFNlbnQgZm9yIHNlbGVjdFxuICAvLyBncm91cHMgb25seSwgYW5kIGFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLlxuICBibGFua0xhYmVsPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSBmaWx0ZXIgZ3JvdXAncyB2YWx1ZSBpbiBpdHMgc3RvcmVkIHNoYXBlOiBpdHMgYXV0aG9yZWQgZGVmYXVsdCAodGhlIHZhbHVlXG4vLyB0aGF0IHNlZWRzIHRoZSByZXBvcnQgYmFyIG9uIGV2ZXJ5IG9wZW4pLCBhIHZhbHVlIHRoZSBhc3Npc3RhbnQgcnVucyBpdCBhdFxuLy8gYW5kIGl0cyB2YWx1ZSBpbiBhIHNhdmVkIHZpZXcuIFNoYXBlIGZvbGxvd3MgdGhlIGdyb3VwJ3MgdHlwZTogZGF0ZVJhbmdlXG4vLyB1c2VzIHN0YXJ0L2VuZCAoYSBmaXhlZCBjYWxlbmRhci1kYXkgcmFuZ2UpIG9yIGEgcmVsYXRpdmUgcHJlc2V0OyBzZWxlY3Rcbi8vIHVzZXMgdmFsdWVzIG9yIGV4Y2x1ZGVWYWx1ZXMsIG5ldmVyIGJvdGg7IGtleXdvcmQgdXNlcyB2YWx1ZTsgbnVtYmVyUmFuZ2Vcbi8vIHVzZXMgbWluIGFuZCBtYXguXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckdyb3VwRGVmYXVsdCB7XG4gIC8vIGRhdGVSYW5nZSByZWxhdGl2ZSBwcmVzZXQsIHJlc29sdmVkIG9uIGV2ZXJ5IG9wZW4gYWdhaW5zdCB0b2RheSBpbiB0aGVcbiAgLy8gcmVwb3J0J3MgZWZmZWN0aXZlIHpvbmUgKFJlcG9ydC5lZmZlY3RpdmVUaW1lem9uZSkuIE9uZSBvZjogdGhpc1dlZWssXG4gIC8vIGxhc3RXZWVrLCBsYXN0N0RheXMsIGxhc3QzMERheXMsIGxhc3QzTW9udGhzLCBsYXN0Nk1vbnRocywgbGFzdDEyTW9udGhzLFxuICAvLyB0aGlzTW9udGgsIHRoaXNRdWFydGVyLCB0aGlzWWVhci95ZWFyVG9EYXRlLiBXZWVrcyBydW4gTW9uZGF5IHRvIFN1bmRheSxcbiAgLy8gdGhlIHNhbWUgd2Vla3MgdGhlIHNlcnZlcidzIHdlZWtseSB0aW1lIGJ1Y2tldHMgdXNlLlxuICByZWxhdGl2ZT86IHN0cmluZztcbiAgc3RhcnQ/OiBzdHJpbmc7IC8vIGRhdGVSYW5nZSBmaXhlZCBzdGFydCAoeXl5eS1NTS1kZClcbiAgZW5kPzogc3RyaW5nOyAvLyBkYXRlUmFuZ2UgZml4ZWQgZW5kICh5eXl5LU1NLWRkKVxuICB2YWx1ZXM/OiB1bmtub3duW107IC8vIHNlbGVjdCBkZWZhdWx0IHBpY2tlZCB2YWx1ZXNcbiAgdmFsdWU/OiBzdHJpbmc7IC8vIGtleXdvcmQgZGVmYXVsdCB0ZXh0XG4gIC8vIHNlbGVjdDogdGhlIHZhbHVlcyB0byBsZWF2ZSBvdXQgKHJvd3Mgd2l0aCBhIGJsYW5rIHZhbHVlIGFyZSBrZXB0KS5cbiAgZXhjbHVkZVZhbHVlcz86IHVua25vd25bXTtcbiAgLy8gbnVtYmVyUmFuZ2U6IHRoZSBsb3cgYW5kIGhpZ2ggZW5kcywgZWl0aGVyIG9uZSBvcGVuIChhYnNlbnQpLiAwIGlzIGFuXG4gIC8vIGVuZCBsaWtlIGFueSBvdGhlci5cbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG59XG5cbi8vIFRoZSBzZXNzaW9uIHZhbHVlIG9mIGEgZmlsdGVyIGdyb3VwOiBzaGFwZSBkZXBlbmRzIG9uIHRoZSBncm91cCdzIHR5cGUuIE5vdFxuLy8gc3RvcmVkIG9uIHRoZSBzZXJ2ZXI7IHRoZSB2aWV3ZXIncyBVUkwgY2FycmllcyB0aGUgdmFsdWVzIHRoYXQgZGlmZmVyIGZyb21cbi8vIHRoZSBkZWZhdWx0cyAocmVwb3J0LXVybC1zdGF0ZS50cykuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckdyb3VwVmFsdWUge1xuICBzdGFydD86IERhdGUgfCBzdHJpbmcgfCBudWxsOyAvLyBkYXRlUmFuZ2VcbiAgZW5kPzogRGF0ZSB8IHN0cmluZyB8IG51bGw7IC8vIGRhdGVSYW5nZVxuICB2YWx1ZXM/OiB1bmtub3duW107IC8vIHNlbGVjdFxuICB2YWx1ZT86IHN0cmluZzsgLy8ga2V5d29yZFxuICAvLyBkYXRlUmFuZ2Ugb25seTogdGhlIHJlbGF0aXZlIHByZXNldCBuYW1lIHRoZXNlIGRhdGVzIHdlcmUgcmVzb2x2ZWQgZnJvbVxuICAvLyAoYSBGaWx0ZXJHcm91cERlZmF1bHQucmVsYXRpdmUgbmFtZSkuIFNldCBvbmx5IHdoZW4gdGhlIHZhbHVlIHdhcyBzZWVkZWRcbiAgLy8gZnJvbSB0aGUgZ3JvdXAncyByZWxhdGl2ZSBkZWZhdWx0IG9yIG9wZW5lZCBmcm9tIGEgdmlldyB0aGF0IGtlZXBzIG9uZSxcbiAgLy8gc28gdGhlIHJhbmdlIGtlZXBzIHJvbGxpbmcgKCdsYXN0MzBEYXlzJykgaW5zdGVhZCBvZiBmcmVlemluZyB0d28gZGF0ZXNcbiAgLy8gKGFuIHVudG91Y2hlZCBkZWZhdWx0IHN0YXlzIG91dCBvZiB0aGUgVVJMLCBhbmQgYSB2aWV3IHNhdmVkIHdpdGggaXQga2VlcHNcbiAgLy8gdGhlIG5hbWUpLCBhbmQgdGhlIGRhdGEgcmVxdWVzdCBuYW1lcyB0aGUgcGVyaW9kIGl0IGNvdmVycyAoc2VlXG4gIC8vIFJlc29sdmVkRmlsdGVyVmFsdWUucHJlc2V0KS4gQW55IGRhdGUgcGlja2VkIGJ5IHRoZSB2aWV3ZXIsIGEgZGF0ZSBwaWNrZXJcbiAgLy8gcHJlc2V0IGluY2x1ZGVkLCBpcyBzdG9yZWQgd2l0aG91dCBpdC5cbiAgcHJlc2V0Pzogc3RyaW5nO1xuICAvLyBzZWxlY3Q6IHRoZSB2YWx1ZXMgdG8gbGVhdmUgb3V0LiBTd2l0Y2hpbmcgYSBzZWxlY3QgYmV0d2VlbiBrZWVwaW5nIGFuZFxuICAvLyBsZWF2aW5nIG91dCBtb3ZlcyBpdHMgbGlzdCBmcm9tIHZhbHVlcyB0byBleGNsdWRlVmFsdWVzLlxuICBleGNsdWRlVmFsdWVzPzogdW5rbm93bltdO1xuICAvLyBudW1iZXJSYW5nZTogdGhlIGxvdyBhbmQgaGlnaCBlbmRzOyBudWxsIG9yIGFic2VudCA9IG9wZW4uXG4gIG1pbj86IG51bWJlciB8IG51bGw7XG4gIG1heD86IG51bWJlciB8IG51bGw7XG59XG5cbi8vIEEgcmVsYXRpdmUgZGF0ZSByYW5nZSB0aGUgc2VydmVyIHJlc29sdmVzIGFnYWluc3QgdG9kYXkgaW4gdGhlIHJlcG9ydCdzXG4vLyB6b25lOiB0aGUgbmFtZXMgYSBGaWx0ZXJHcm91cERlZmF1bHQucmVsYXRpdmUgYW5kIGEgdGltZWZyYW1lJ3MgcmFuZ2UgdGFrZS5cbi8vIE1pcnJvcnMgdGhlIHNlcnZlcidzIFJlcG9ydFJlbGF0aXZlUmFuZ2VFbnVtIHZhbHVlIGZvciB2YWx1ZVxuLy8gKFJlcG9ydFJlbGF0aXZlUmFuZ2VFbnVtVGVzdCBwaW5zIHRoZSBkYXlzIGVhY2ggb25lIGNvdmVycykuXG5leHBvcnQgdHlwZSBSZXBvcnRSZWxhdGl2ZVJhbmdlID1cbiAgfCAndGhpc1dlZWsnXG4gIHwgJ2xhc3RXZWVrJ1xuICB8ICdsYXN0N0RheXMnXG4gIHwgJ2xhc3QzMERheXMnXG4gIHwgJ2xhc3QzTW9udGhzJ1xuICB8ICdsYXN0Nk1vbnRocydcbiAgfCAnbGFzdDEyTW9udGhzJ1xuICB8ICd0aGlzTW9udGgnXG4gIHwgJ3RoaXNRdWFydGVyJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAneWVhclRvRGF0ZSc7XG5cbi8vIFRoZSB2aWV3ZXItc3RhdGUgcXVlcnkgcGFyYW1zIG9mIGEgcmVwb3J0IFVSTCwgYmVmb3JlIHRoZXkgYXJlIGNoZWNrZWRcbi8vIGFnYWluc3QgdGhlIHJlcG9ydCAocmVwb3J0LXVybC1zdGF0ZS50cyByZWFkUmVwb3J0VXJsUGFyYW1zKS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0VXJsUGFyYW1zIHtcbiAgLy8gQSBncm91cCdzIHZhbHVlIGluIGl0cyBzdG9yZWQgc2hhcGUsIGJ5IGdyb3VwIGlkIChudWxsID0gdGhlIHZpZXdlclxuICAvLyBjbGVhcmVkIGl0KSwgcmVhZCB1bmRlciBpdHMgZnMtZmlsdGVyIGl0ZW0ncyBxdWVyeSBrZXlzIChyZWdpb249LFxuICAvLyBleGNsdWRlUmVnaW9uPSwgdW5pdHNNaW49LCBkYXRlRnJvbT0sIGRhdGVUbz0pLlxuICBncm91cHM6IE1hcDxudW1iZXIsIEZpbHRlckdyb3VwRGVmYXVsdCB8IG51bGw+O1xuICAvLyBzPGNvbXBvbmVudElkPiAtPiB0aGUgZW5jb2RlZCBsaXN0IHNvcnQgKCctY29sdW1uJyA9IGRlc2NlbmRpbmcpLlxuICBsaXN0U29ydHM6IE1hcDxudW1iZXIsIHN0cmluZz47XG4gIC8vIHE8Y29tcG9uZW50SWQ+IC0+IGEgbGlzdCdzIHNlYXJjaCBib3ggdGV4dCwgYXMgdHlwZWQuXG4gIGxpc3RTZWFyY2hlczogTWFwPG51bWJlciwgc3RyaW5nPjtcbiAgLy8gaDxjb21wb25lbnRJZD4gLT4gdGhlIGNvbHVtbnMgYSB2aWV3ZXIgaGlkIG9uIGEgbGlzdCwgc3RpbGwgZW5jb2RlZFxuICAvLyAoZGVjb2RlQ29sdW1uTGlzdCkuXG4gIGxpc3RIaWRkZW46IE1hcDxudW1iZXIsIHN0cmluZz47XG4gIC8vIFRoZSBncm91cC1ieSBncmFpbiwgb3IgbnVsbCB3aGVuIHRoZSBVUkwgaGFzIG5vbmUuXG4gIGdyb3VwQnk6IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIFRoZSB2aWV3ZXIgc3RhdGUgdGhlIFVSTCBzaG91bGQgY2Fycnk6IG9ubHkgd2hhdCBkaWZmZXJzIGZyb20gdGhlIHJlcG9ydCdzXG4vLyBhdXRob3JlZCBkZWZhdWx0cyAoUmVwb3J0RmlsdGVyU3RhdGVTZXJ2aWNlLnVybFNuYXBzaG90KS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0VXJsU25hcHNob3Qge1xuICAvLyBBIGdyb3VwJ3MgdmFsdWUsIG9yIG51bGwgd2hlbiB0aGUgdmlld2VyIGNsZWFyZWQgYSBncm91cCB0aGF0IGhhcyBhIGRlZmF1bHQuXG4gIGdyb3VwczogTWFwPG51bWJlciwgRmlsdGVyR3JvdXBWYWx1ZSB8IG51bGw+O1xuICAvLyBBIGxpc3QncyBzb3J0LCBieSBjb21wb25lbnQgaWQsIHdoZW4gaXQgZGlmZmVycyBmcm9tIHRoZSBhdXRob3JlZCBzb3J0J3NcbiAgLy8gZmlyc3QgdGVybS5cbiAgbGlzdFNvcnRzOiBNYXA8bnVtYmVyLCBSZXBvcnRTb3J0PjtcbiAgLy8gQSBsaXN0J3Mgc2VhcmNoIGJveCB0ZXh0LCBieSBjb21wb25lbnQgaWQuIEEgbGlzdCB3aXRoIGFuIGVtcHR5IGJveCBpc1xuICAvLyBsZWZ0IG91dC5cbiAgbGlzdFNlYXJjaGVzOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICAvLyBUaGUgY29uZmlnIGNvbHVtbiBuYW1lcyBhIHZpZXdlciBoaWQgb24gYSBwbGFpbiBsaXN0LCBieSBjb21wb25lbnQgaWQuIEFcbiAgLy8gbGlzdCBzaG93aW5nIGV2ZXJ5IGNvbHVtbiBpcyBsZWZ0IG91dC5cbiAgbGlzdEhpZGRlbjogTWFwPG51bWJlciwgc3RyaW5nW10+O1xuICBmcmVxdWVuY3k6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xufVxuXG4vLyBPbmUgcmVzb2x2ZWQgZmlsdGVyIHNlbnQgd2l0aCBhIGNvbXBvbmVudCdzIGRhdGEgcmVxdWVzdC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRGaWx0ZXJWYWx1ZSB7XG4gIGZpbHRlcklkOiBudW1iZXI7XG4gIHN0YXJ0Pzogc3RyaW5nO1xuICBlbmQ/OiBzdHJpbmc7XG4gIHZhbHVlcz86IHVua25vd25bXTtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIC8vIGRhdGVSYW5nZSBvbmx5OiB0aGUgcmVsYXRpdmUgcmFuZ2Ugc3RhcnQgYW5kIGVuZCBzdGlsbCBhcmUsIHNlbnQgb25seVxuICAvLyB3aGlsZSB0aGV5IGFyZSBleGFjdGx5IHRoYXQgcmFuZ2UgcmVzb2x2ZWQgdG9kYXkgaW4gdGhlIHJlcG9ydCdzIHpvbmUuIEl0XG4gIC8vIHRlbGxzIHRoZSBzZXJ2ZXIgd2hpY2ggcGVyaW9kIHRoZSBkYXlzIGNvdmVyIChvbiB0aGUgZmlyc3QgZGF5cyBvZiBhXG4gIC8vIHF1YXJ0ZXIsIHRoaXNNb250aCBhbmQgdGhpc1F1YXJ0ZXIgYXJlIHRoZSBzYW1lIGRheXMpLCBzbyBhIGNvbXBhcmlzb25cbiAgLy8gc2hpZnRzIGJ5IHRoZSByaWdodCB1bml0LiBzdGFydCBhbmQgZW5kIHN0YXkgdGhlIHdpbmRvdzsgYSBzZXJ2ZXIgdGhhdFxuICAvLyBkb2VzIG5vdCBrbm93IHRoZSBrZXkgaWdub3JlcyBpdC5cbiAgcHJlc2V0PzogUmVwb3J0UmVsYXRpdmVSYW5nZTtcbiAgLy8gc2VsZWN0OiB0aGUgdmFsdWVzIHRvIGxlYXZlIG91dCAoc2VudCBpbnN0ZWFkIG9mIHZhbHVlcykuXG4gIGV4Y2x1ZGVWYWx1ZXM/OiB1bmtub3duW107XG4gIC8vIG51bWJlclJhbmdlOiB0aGUgbG93IGFuZCBoaWdoIGVuZHM7IGFuIG9wZW4gZW5kIGlzIGxlZnQgb3V0LCAwIGlzIHNlbnQuXG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xufVxuXG4vLyBQZXItY29tcG9uZW50IGludGVyYWN0aW9uIHN0YXRlIHNlbnQgd2l0aCB0aGUgZGF0YSByZXF1ZXN0OiBsaXN0cyBzZW5kXG4vLyBzb3J0L3BhZ2luZyBhbmQgdGhlIHRleHQgaW4gdGhlaXIgc2VhcmNoIGJveDsgdGltZS1zZXJpZXMgY2hhcnRzIHNlbmQgdGhlXG4vLyBncmFpbiBwaWNrZWQgb24gdGhlIHJlcG9ydCdzIGdyb3VwLWJ5IGNvbnRyb2wsIHdoaWNoIG92ZXJyaWRlcyB0aGUgYXV0aG9yZWRcbi8vIGdyYW51bGFyaXR5IGZvciB0aGF0IHJlcXVlc3Qgb25seS4gVGhlIHdpcmUga2V5IHN0YXlzIGBmcmVxdWVuY3lgIOKAlCBpdCBpcyB0aGVcbi8vIGJ1Y2tldGluZyBmcmVxdWVuY3kgdGhlIHNlcnZlciBhcHBsaWVzLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhU3RhdGUge1xuICBzb3J0PzogUmVwb3J0U29ydDtcbiAgcGFnZT86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIGZyZXF1ZW5jeT86IENoYXJ0R3JhbnVsYXJpdHk7XG4gIC8vIEEgbGlzdCdzIHNlYXJjaCBib3ggdGV4dC4gVGhlIHNlcnZlciB0cmltcyBpdCwgY3V0cyBpdCB0byBpdHMgb3duIG1heGltdW1cbiAgLy8gbGVuZ3RoIGFuZCBtYXRjaGVzIGl0IGFnYWluc3QgZXZlcnkgdGV4dCBjb2x1bW4gdGhlIGxpc3Qgc2hvd3MuXG4gIHNlYXJjaD86IHN0cmluZztcbiAgLy8gVGhlIGNvbmZpZyBjb2x1bW4gbmFtZXMgYSB2aWV3ZXIgaGlkIG9uIGEgcGxhaW4gbGlzdC4gU2VudCB3aXRoIGEgQ1NWXG4gIC8vIGV4cG9ydCBvbmx5ICh0aGUgc2NyZWVuIGhpZGVzIHRoZW0gaXRzZWxmKTogdGhlIGZpbGUgbGVhdmVzIHRoZW0gb3V0LiBUaGVcbiAgLy8gc2VydmVyIGlnbm9yZXMgaXQgb24gYSBjcm9zcy10YWIsIGFuZCB3aGVuIGl0IHdvdWxkIGhpZGUgZXZlcnkgY29sdW1uLlxuICBoaWRkZW5Db2x1bW5zPzogc3RyaW5nW107XG4gIC8vIEEgY2hhcnQncyBkcmlsbCBwYXRoLCB0b3AgZmlyc3QuIFRoZSBkcmlsbGVkIGxldmVsIHdpbnMgb3ZlciBmcmVxdWVuY3lcbiAgLy8gZm9yIHRoaXMgdGlsZS5cbiAgZHJpbGw/OiBSZXBvcnREcmlsbFN0ZXBbXTtcbiAgLy8gV2hpbGUgbWF0Y2ggaXMgYW55OiB0aGUgZWxpZ2libGUgZ3JvdXBzIHRoYXQgaGF2ZSBhIHZhbHVlLlxuICBtYXRjaEFueUdyb3VwSWRzPzogbnVtYmVyW107XG4gIC8vIFNldCBvbmx5IG9uIGEgcmVxdWVzdCBzZW50IGJlY2F1c2UgdGhlIGNyb3NzLWZpbHRlciBjaGFuZ2VkLCBmb3IgYSB0aWxlXG4gIC8vIHdob3NlIGxhc3QgcmVhZCBhcHBsaWVkIG5vIGNyb3NzIGVudHJ5OiB0aGUgc2VydmVyIG1heSBhbnN3ZXJcbiAgLy8gdW5jaGFuZ2VkIGluc3RlYWQgb2YgcmVhZGluZyB0aGUgcm93cyBhZ2Fpbi4gRXhwb3J0cyBuZXZlciBzZXQgaXQuXG4gIHVuY2hhbmdlZElmVW5yZWFjaGVkPzogdHJ1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhIHtcbiAgY29sdW1uczogc3RyaW5nW107XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHBhZ2luZz86IHsgdG90YWw6IG51bWJlcjsgcGFnZTogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH07XG4gIHRydW5jYXRlZDogYm9vbGVhbjtcbiAgLy8gVGhlIGVmZmVjdGl2ZSB0aW1lIGJ1Y2tldCB0aGUgcm93cyB3ZXJlIGdyb3VwZWQgaW50byAoYWZ0ZXIgYW55IGdyb3VwLWJ5XG4gIC8vIG92ZXJyaWRlKSwgb3IgbnVsbCBmb3IgYSBub24tdGltZSBheGlzLiBEcml2ZXMgdGhlIGNvbXBhY3QgeC1heGlzIGxhYmVscy5cbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgLy8gUGFnZSAxIG9mIGEgc2VhcmNoZWQgbGlzdCB3aG9zZSBzZWFyY2ggY291bGQgbm90IGFwcGx5ICh0aGUgbGlzdCBoYXMgbm9cbiAgLy8gdGV4dCBjb2x1bW4gdG8gc2VhcmNoKTogd2h5IHRoZSByb3dzIGFyZSBub3QgbmFycm93ZWQuIEFic2VudCBvdGhlcndpc2UuXG4gIHNlYXJjaE5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBQYWdlIDEgb2YgYSBsaXN0IHdpdGggY29uZmlnLnRvdGFscyBvbjogaXRzIHRvdGFscyByb3csIGFzIHJhdyB2YWx1ZXNcbiAgLy8ga2V5ZWQgbGlrZSB0aGUgY29sdW1ucyAoYSBwbGFpbiBsaXN0J3MgbWVhc3VyZSBhbGlhc2VzOyBhIGNyb3NzLXRhYidzXG4gIC8vIHBpdm90IGNlbGwgY29sdW1ucywgdGhlIHJvdy1rZXkgY29sdW1uIGFic2VudCksIG9yIG51bGwgd2l0aCB0b3RhbHNOb3RlXG4gIC8vIHNheWluZyB3aHkgdGhlcmUgaXMgbm9uZS4gQWJzZW50IG9uIGV2ZXJ5IG90aGVyIHBhZ2UgYW5kIGxpc3QuXG4gIHRvdGFscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgdG90YWxzTm90ZT86IHN0cmluZyB8IG51bGw7XG4gIC8vIFRoZSB3aW5kb3cgb2YgZGF5cyB0aGUgY29tcG9uZW50IHJlYWRzLCB3aGVuIGl0cyBxdWVyeSBoYXMgYSB0aW1lZnJhbWUuXG4gIC8vIEFic2VudCBvdGhlcndpc2UsIGFuZCBmcm9tIG9sZGVyIHNlcnZlcnMuXG4gIHRpbWVmcmFtZT86IENvbXBvbmVudFRpbWVmcmFtZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW50IGFuZCBwcmlvciB3aW5kb3dzIG9mIGEgY29tcG9uZW50IHdob3NlIG1lYXN1cmVzIGNvbXBhcmVcbiAgLy8gYWdhaW5zdCBhbiBlYXJsaWVyIHBlcmlvZC4gQWJzZW50IHdoZW4gbm8gbWVhc3VyZSBjb21wYXJlcy4gU2VudCBvbiBldmVyeVxuICAvLyBsaXN0IHBhZ2UgYW5kIG9uIGNoYXJ0IGFuZCBLUEkgZGF0YS5cbiAgY29tcGFyaXNvbj86IENvbXBvbmVudENvbXBhcmlzb24gfCBudWxsO1xuICAvLyBXaGF0IGVhY2ggY29tcGFyZWQsIHdpbmRvd2VkLCByYW5rZWQgb3Igc2hhcmVkIG91dHB1dCBjb2x1bW4gaXMsIGJ5IGFsaWFzLlxuICAvLyBQbGFpbiBtZWFzdXJlIGNvbHVtbnMgYXJlIGxlZnQgb3V0LlxuICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgT3V0cHV0TWV0YT47XG4gIC8vIEEgY3Jvc3MtdGFiIG9ubHk6IHRoZSBtZWFzdXJlIGFsaWFzIGVhY2ggcGl2b3QgY2VsbCBjb2x1bW4gaG9sZHMsIHNvIGFcbiAgLy8gY2VsbCB0YWtlcyBpdHMgbWVhc3VyZSdzIG91dHB1dCBtZWFuaW5nLiBOZXZlciBzZW50IGZvciBhIHNxbC1tb2RlIGxpc3QuXG4gIGNlbGxNZWFzdXJlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIEhvdyBlYWNoIHdpbmRvd2VkIG91dHB1dCBjb2x1bW4gKHJ1bm5pbmcsIHRvLWRhdGUgb3Igcm9sbGluZykgd2FzXG4gIC8vIGNvbXB1dGVkLCBieSBhbGlhcy5cbiAgd2luZG93cz86IFJlY29yZDxzdHJpbmcsIFdpbmRvd01ldGE+O1xuICAvLyBBIEtQSSB3aXRoIGEgY29tcGFyaXNvbiwgYSB0YXJnZXQgb3IgYSBzcGFya2xpbmU6IGV2ZXJ5IG51bWJlciB0aGUgY2FyZFxuICAvLyBzaG93cyBiZXNpZGUgaXRzIHZhbHVlLCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuXG4gIGtwaT86IENvbXBvbmVudEtwaSB8IG51bGw7XG4gIC8vIFRoZSB0aW1lLWF4aXMgdmFsdWUgb2YgdGhlIGJ1Y2tldCBjb250YWluaW5nIHRvZGF5LCB3cml0dGVuIGFzIHRoZSByb3dzXG4gIC8vIHdyaXRlIGl0LCB3aGVuIHRoYXQgYnVja2V0IGlzIG5vdCBmaW5pc2hlZCB5ZXQ7IG51bGwgb3RoZXJ3aXNlLiBBIGNoYXJ0XG4gIC8vIG1hcmtzIGl0IGFzIHBhcnRpYWwuXG4gIHBhcnRpYWxQZXJpb2Q/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBXaGljaCBmaWx0ZXJzIHRoZSByZWFkIGFwcGxpZWQuIEFic2VudCBmcm9tIG9sZGVyIHNlcnZlcnMuXG4gIGFwcGxpZWQ/OiBDb21wb25lbnREYXRhQXBwbGllZDtcbiAgLy8gQSBkcmlsbGFibGUgY2hhcnQncyBkcmlsbCBzdGF0ZS4gQWJzZW50IG9uIGV2ZXJ5IG90aGVyIHRpbGUgYW5kIGZyb21cbiAgLy8gb2xkZXIgc2VydmVycy5cbiAgZHJpbGw/OiBDb21wb25lbnREYXRhRHJpbGw7XG59XG5cbi8vIFdoZXJlIGEgY29tcG9uZW50J3MgdGltZWZyYW1lIHdpbmRvdyBjYW1lIGZyb206IGEgdmlld2VyIGRhdGVSYW5nZSBib3VuZCB0b1xuLy8gdGhlIHRpbWVmcmFtZSBjb2x1bW4gKHdoaWNoIHJlcGxhY2VzIHRoZSBhdXRob3JlZCByYW5nZSwgbmV2ZXIgbmFycm93c1xuLy8gaXQpLCB0aGUgYXV0aG9yZWQgcmVsYXRpdmUgcmFuZ2UsIHRoZSBhdXRob3JlZCBmaXhlZCBkYXlzLCBvciBub3RoaW5nIChhblxuLy8gb3BlbiB3aW5kb3cpLlxuZXhwb3J0IHR5cGUgVGltZWZyYW1lU291cmNlID0gJ2ZpbHRlcicgfCAncmFuZ2UnIHwgJ2ZpeGVkJyB8ICdub25lJztcblxuLy8gVGhlIHdpbmRvdyBhIGNvbXBvbmVudCdzIHRpbWVmcmFtZSByZXNvbHZlZCB0by4gc3RhcnQgYW5kIGVuZCBhcmVcbi8vIGluY2x1c2l2ZSAneXl5eS1NTS1kZCcgZGF5cyBpbiB0aGUgcmVwb3J0J3Mgem9uZSwgd3JpdHRlbiB3aXRob3V0IGEgem9uZS5cbi8vIHRocm91Z2ggaXMgdGhlIFVUQyAneXl5eS1NTS1kZCBISDptbTpzcycgaW5zdGFudCBhIHdpbmRvdyBvbiBhIGRhdGV0aW1lXG4vLyBjb2x1bW4gaXMgY3V0IGF0OyBpdCByZWFkcyBhcyBhIHRpbWUgaW4gdGhlIHJlcG9ydCB6b25lLiBJdCBpcyBzZXQgb25seSB3aGVuXG4vLyBhIGNvbXBhcmlzb24gY3V0cyBhIHdpbmRvdyB0aGF0IGVuZHMgdG9kYXk6IGEgdGltZWZyYW1lIG9uIGl0cyBvd24gcmVhZHNcbi8vIHdob2xlIGRheXMsIHNvIGEgd2luZG93IGVuZGluZyB0b2RheSB3aXRob3V0IGEgY29tcGFyaXNvbiBzZW5kcyBudWxsLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRUaW1lZnJhbWUge1xuICBjb2x1bW46IHN0cmluZztcbiAgc3RhcnQ6IHN0cmluZyB8IG51bGw7XG4gIGVuZDogc3RyaW5nIHwgbnVsbDtcbiAgdGhyb3VnaDogc3RyaW5nIHwgbnVsbDtcbiAgcmFuZ2U6IFJlcG9ydFJlbGF0aXZlUmFuZ2UgfCBudWxsO1xuICBzb3VyY2U6IFRpbWVmcmFtZVNvdXJjZTtcbn1cblxuLy8gSG93IGEgY29tcGFyaXNvbiBpcyBsYWlkIG91dDogb25lIHZhbHVlIHBlciB3aW5kb3cgKHJhbmdlKSwgYSBwcmlvciBzZXJpZXNcbi8vIGJlc2lkZSBhIHRpbWUgYXhpcyAoc2VyaWVzKSwgb3IgZWFjaCBwZXJpb2QncyB2YWx1ZSByZWFkIGF0IGl0cyBlbmQsIHNldFxuLy8gYWdhaW5zdCB0aGUgdmFsdWUgYXQgdGhlIGVuZCBvZiBhbiBlYXJsaWVyIHBlcmlvZCAocGVyaW9kX2VuZCkuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uTW9kZSA9ICdyYW5nZScgfCAnc2VyaWVzJyB8ICdwZXJpb2RfZW5kJztcblxuLy8gdG9fZGF0ZSBjb21wYXJlcyBsaWtlIHdpdGggbGlrZSAodGhlIGZpcnN0IDIgZGF5cyBvZiBhIG1vbnRoIGFnYWluc3QgdGhlXG4vLyBmaXJzdCAyIGRheXMgb2YgdGhlIG9uZSBiZWZvcmUpOyBmdWxsIGNvbXBhcmVzIHdob2xlIHBlcmlvZHMuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uQWxpZ24gPSAndG9fZGF0ZScgfCAnZnVsbCc7XG5cbi8vIFdoYXQgYSBtZWFzdXJlIGlzIGNvbXBhcmVkIGFnYWluc3QuIE1pcnJvcnMgdGhlIHNlcnZlcidzXG4vLyBDb21wYXJpc29uQWdhaW5zdEVudW0gdmFsdWUgZm9yIHZhbHVlLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbkFnYWluc3QgPVxuICB8ICdwcmV2aW91c19wZXJpb2QnXG4gIHwgJ3ByZXZpb3VzX3dlZWsnXG4gIHwgJ3ByZXZpb3VzX21vbnRoJ1xuICB8ICdwcmV2aW91c19xdWFydGVyJ1xuICB8ICdwcmV2aW91c195ZWFyJ1xuICB8ICdyYW5nZSc7XG5cbi8vIFdoeSBhIGNvbXBhcmlzb24gcmVhZHMgYXMgaXQgZG9lcy4gVGhlIHNlcnZlciBzZW5kcyBjb2RlcywgbmV2ZXJcbi8vIHNlbnRlbmNlczsgdGhlIHZpZXdlciB3b3JkcyB0aGVtLlxuLy8gLSBub193aW5kb3c6IG5vIGRhdGUgcmFuZ2UgdG8gY29tcGFyZSB5ZXQ7XG4vLyAtIHVuaXRfaW5mZXJyZWQ6IHRoZSBwZXJpb2QgdW5pdCB3YXMgaW5mZXJyZWQgZnJvbSB0aGUgZGF5cywgbm90IG5hbWVkO1xuLy8gLSB3aW5kb3dfaW5fZnV0dXJlOiB0aGUgd2luZG93IHN0YXJ0cyBhZnRlciB0b2RheTtcbi8vIC0gb3RoZXJfZGF0ZV9maWx0ZXI6IGEgZGF0ZSBmaWx0ZXIgb24gYW5vdGhlciBjb2x1bW4gYWxzbyBhcHBsaWVzO1xuLy8gLSBncmFpbl9mb2xsb3dlZDogdGhlIHByaW9yIGZvbGxvd3MgdGhlIGdyb3VwLWJ5IGdyYWluIHBpY2tlZCBvbiB0aGUgcmVwb3J0LlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbk5vdGVDb2RlID1cbiAgfCAnbm9fd2luZG93J1xuICB8ICd1bml0X2luZmVycmVkJ1xuICB8ICd3aW5kb3dfaW5fZnV0dXJlJ1xuICB8ICdvdGhlcl9kYXRlX2ZpbHRlcidcbiAgfCAnZ3JhaW5fZm9sbG93ZWQnO1xuXG4vLyBPbmUgY29tcGFyaXNvbiB3aW5kb3c6IGluY2x1c2l2ZSAneXl5eS1NTS1kZCcgZGF5cyBpbiB0aGUgcmVwb3J0J3Mgem9uZSxcbi8vIGFuZCB0aGUgVVRDIGluc3RhbnQgaXQgaXMgY3V0IGF0IHdoZW4gaXQgZW5kcyB0b2RheSBvbiBhIGRhdGV0aW1lIGNvbHVtbi5cbi8vIEluIHNlcmllcyBtb2RlIGl0IGlzIHRoZSBzcGFuIHRoZSBjaGFydCBzaG93cy5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFyaXNvbldpbmRvdyB7XG4gIHN0YXJ0OiBzdHJpbmc7XG4gIGVuZDogc3RyaW5nO1xuICB0aHJvdWdoOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBIb3cgZmFyIGJhY2sgb25lIHByaW9yIGxhbmUgc2l0cy4gQSBjdXN0b20gcmFuZ2UgaGFzIG5vIHVuaXQgb3IgY291bnQsIGFuZFxuLy8gbmVpdGhlciBkb2VzIHByZXZpb3VzX3BlcmlvZCB3aGVuIHRoZXJlIGlzIG5vIGN1cnJlbnQgd2luZG93IHRvIG1lYXN1cmVcbi8vIChub193aW5kb3csIHdpbmRvd19pbl9mdXR1cmUpOyBhIHNoaWZ0IGJ5IHRoZSB3aW5kb3cncyBsZW5ndGggaXMgdW5pdCBkYXlcbi8vIHdpdGggdGhlIGxlbmd0aCBhcyB0aGUgY291bnQ7IGEgcHJldmlvdXMgeWVhciBpcyAzNjQgZGF5cyBvbiBhIGRheSBheGlzIGFuZFxuLy8gNTIgd2Vla3Mgb24gYSB3ZWVrIGF4aXMuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25PZmZzZXQge1xuICBhZ2FpbnN0OiBDb21wYXJpc29uQWdhaW5zdDtcbiAgdW5pdDogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGNvdW50OiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBBIGNvbXBvbmVudCdzIGNvbXBhcmlzb246IHRoZSB6b25lIGl0cyBkYXlzIGFyZSBpbiwgdGhlIGN1cnJlbnQgd2luZG93XG4vLyAobnVsbCB3aGVuIHRoZXJlIGlzIG5vIHdpbmRvdyB0byBjb21wYXJlIHlldCwgb3Igd2hlbiBhIHRpbWUgYXhpcyBydW5zXG4vLyBvdmVyIGFsbCB0aGUgZGF0YSwgd2hpY2ggaGFzIG5vIGZpcnN0IGRheSB0byBuYW1lKSBhbmQgdXAgdG8gMiBwcmlvclxuLy8gbGFuZXM6IG9mZnNldHNbaV0gZGVzY3JpYmVzIGxhbmUgaSArIDEsIGFuZCBwcmlvcnNbaV0gaXRzIHdpbmRvdy4gV2l0aCBub1xuLy8gY3VycmVudCB3aW5kb3cgcHJpb3JzIGlzIGVtcHR5LCB3aGlsZSBvZmZzZXRzIHN0aWxsIG5hbWVzIGV2ZXJ5IGxhbmUuXG4vLyBmbG9vciBpcyB0aGUgJ3l5eXktTU0tZGQnIGRheSBvZiB0aGUgZmlyc3Qgcm93IHRoZSBxdWVyeSdzIG93biBjb25kaXRpb25zXG4vLyBrZWVwICh2aWV3ZXIgZmlsdGVycyBhc2lkZSk6IGEgcHJpb3Igd2luZG93IHdob2xseSBiZWZvcmUgaXQgaGFzIG5vIGRhdGFcbi8vIHJhdGhlciB0aGFuIGEgemVyby5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50Q29tcGFyaXNvbiB7XG4gIG1vZGU6IENvbXBhcmlzb25Nb2RlO1xuICB0aW1lem9uZTogc3RyaW5nO1xuICBhbGlnbjogQ29tcGFyaXNvbkFsaWduO1xuICBjdXJyZW50OiBDb21wYXJpc29uV2luZG93IHwgbnVsbDtcbiAgcHJpb3JzOiBDb21wYXJpc29uV2luZG93W107XG4gIG9mZnNldHM6IENvbXBhcmlzb25PZmZzZXRbXTtcbiAgZmxvb3I6IHN0cmluZyB8IG51bGw7XG4gIG5vdGVzOiBDb21wYXJpc29uTm90ZUNvZGVbXTtcbn1cblxuLy8gV2hhdCBhbiBvdXRwdXQgY29sdW1uIGhvbGRzOiBhIG1lYXN1cmUncyB2YWx1ZSwgaXRzIHJhbmsgb3IgaXRzIHNoYXJlLlxuZXhwb3J0IHR5cGUgT3V0cHV0S2luZCA9ICd2YWx1ZScgfCAncmFuaycgfCAnc2hhcmUnO1xuXG4vLyBXaGljaCBzaWRlIG9mIGEgY29tcGFyaXNvbiBhbiBvdXRwdXQgY29sdW1uIGlzOiB0aGUgY3VycmVudCB2YWx1ZSwgdGhlXG4vLyBwcmlvciBvbmUsIHRoZWlyIGRpZmZlcmVuY2UsIG9yIHRoZSBkaWZmZXJlbmNlIGFzIGEgMC0xIGZyYWN0aW9uIG9mIHRoZVxuLy8gcHJpb3IuIG51bGwgZm9yIGFuIG91dHB1dCB0aGF0IGlzIG5vdCBjb21wYXJlZC5cbmV4cG9ydCB0eXBlIE91dHB1dFJvbGUgPSAnY3VycmVudCcgfCAncHJpb3InIHwgJ2NoYW5nZScgfCAncGVyY2VudF9jaGFuZ2UnO1xuXG4vLyBIb3cgdGllZCB2YWx1ZXMgcmFuazogMSwgMSwgMyAoY29tcGV0aXRpb24pIG9yIDEsIDEsIDIgKGRlbnNlKS5cbmV4cG9ydCB0eXBlIE91dHB1dFJhbmtNZXRob2QgPSAnY29tcGV0aXRpb24nIHwgJ2RlbnNlJztcblxuLy8gQSByYW5rIG91dHB1dDogaG93IHRpZXMgcmFuaywgd2hpY2ggZW5kIHJhbmtzIDEgKGRlc2M6IHRoZSBsYXJnZXN0KSwgYW5kXG4vLyB0aGUgZGltZW5zaW9uIG91dHB1dHMgaXQgcmVzdGFydHMgd2l0aGluIChub25lOiB0aGUgd2hvbGUgcmVzdWx0KS5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0UmFuayB7XG4gIG1ldGhvZDogT3V0cHV0UmFua01ldGhvZDtcbiAgZGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJztcbiAgd2l0aGluOiBzdHJpbmdbXTtcbn1cblxuLy8gQSBzaGFyZSBvdXRwdXQ6IHRoZSBkaW1lbnNpb24gb3V0cHV0cyB3aG9zZSB0b3RhbCBpdCBpcyBhIHNoYXJlIG9mIChub25lOlxuLy8gdGhlIHdob2xlIHJlc3VsdCkuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFNoYXJlIHtcbiAgd2l0aGluOiBzdHJpbmdbXTtcbn1cblxuLy8gVGhlIG1lYW5pbmcgb2Ygb25lIGNvbXBhcmVkLCB3aW5kb3dlZCwgcmFua2VkIG9yIHNoYXJlZCBvdXRwdXQgY29sdW1uLlxuLy8gbWVhc3VyZSBpcyB0aGUgc291cmNlIG1lYXN1cmUncyBhbGlhcywgd2hvc2UgZm9ybWF0IHRoZSBjb2x1bW4gaW5oZXJpdHM7XG4vLyBvZmZzZXQgaXMgdGhlIHByaW9yIGxhbmUgYSBwcmlvciwgY2hhbmdlIG9yIHBlcmNlbnQgY2hhbmdlIGJlbG9uZ3MgdG8gKGl0c1xuLy8gd2luZG93IGlzIGNvbXBhcmlzb24ucHJpb3JzW29mZnNldCAtIDFdKS4gVW5sZXNzIHRoZSBjb25maWcgZm9ybWF0cyBpdCwgYVxuLy8gc2hhcmUgcHJpbnRzIGFzIGEgcGVyY2VudCB0byAxIGRlY2ltYWwgYW5kIGEgcmFuayBhcyBhIHdob2xlIG51bWJlci5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0TWV0YSB7XG4gIG1lYXN1cmU6IHN0cmluZztcbiAga2luZDogT3V0cHV0S2luZDtcbiAgcm9sZTogT3V0cHV0Um9sZSB8IG51bGw7XG4gIG9mZnNldDogbnVtYmVyIHwgbnVsbDtcbiAgd2luZG93OiBib29sZWFuO1xuICByYW5rOiBPdXRwdXRSYW5rIHwgbnVsbDtcbiAgc2hhcmU6IE91dHB1dFNoYXJlIHwgbnVsbDtcbn1cblxuLy8gQSB3aW5kb3cgb3ZlciB0aGUgcm93czogYSBydW5uaW5nIHRvdGFsLCBhIHRvdGFsIHRvIGRhdGUgd2l0aGluIGVhY2hcbi8vIHBlcmlvZCAobW9udGggdG8gZGF0ZSksIG9yIGEgcm9sbGluZyBzcGFuIG9mIHBlcmlvZHMuXG5leHBvcnQgdHlwZSBXaW5kb3dLaW5kID0gJ3J1bm5pbmcnIHwgJ3RvX2RhdGUnIHwgJ3JvbGxpbmcnO1xuXG4vLyBXaHkgYSB3aW5kb3cgcmVhZHMgYXMgaXQgZG9lcy4gQ29kZXMgb25seTsgdGhlIHZpZXdlciB3b3JkcyB0aGVtLlxuZXhwb3J0IHR5cGUgV2luZG93Tm90ZUNvZGUgPVxuICB8ICdzbmFwcGVkX3N0YXJ0J1xuICB8ICdzcGFuX2NvbnZlcnRlZCdcbiAgfCAnZ3JhaW5fdG9vX2NvYXJzZSdcbiAgfCAnZXF1YWxfZ3JhaW5fcGxhaW4nXG4gIHwgJ293bl9maWx0ZXJfY2Fwc19sZWFkX2luJ1xuICB8ICd3ZWVrX2J5X21vbmRheSdcbiAgfCAnaW5jb21wbGV0ZV9oZWFkJztcblxuLy8gSG93IG9uZSB3aW5kb3dlZCBvdXRwdXQgY29sdW1uIHdhcyBjb21wdXRlZC4gcGVyaW9kcyBhbmQgdW5pdCBzaXplIGFcbi8vIHJvbGxpbmcgd2luZG93IChkcmF3blBlcmlvZHMgaXMgdGhhdCBzcGFuIGNvdW50ZWQgaW4gdGhlIGdyYWluIHRoZSByb3dzXG4vLyBhcmUgZHJhd24gYXQpOyByZXNldEV2ZXJ5IHJlc3RhcnRzIGEgdG8tZGF0ZSB3aW5kb3c7IGF2ZXJhZ2UgbWFrZXMgdGhlXG4vLyB3aW5kb3cgYW4gYXZlcmFnZSByYXRoZXIgdGhhbiBhIHRvdGFsOyBmcm9tQmVnaW5uaW5nXG4vLyBydW5zIGEgdG90YWwgZnJvbSB0aGUgZmlyc3Qgcm93IGV2ZXIgcmF0aGVyIHRoYW4gZnJvbSB0aGUgZmlyc3Qgcm93IHNob3duLlxuLy8gc3RhcnQsIGVuZCBhbmQgbGVhZEluIGFyZSAneXl5eS1NTS1kZCcgcmVwb3J0LXpvbmUgZGF5czogdGhlIHJvd3Mgc2hvd24sXG4vLyBhbmQgdGhlIGVhcmxpZXIgZGF5IHRoZSB3aW5kb3cgcmVhZHMgZnJvbSBzbyBpdHMgZmlyc3Qgcm93cyBhcmUgd2hvbGUuXG4vLyBkZXNjcmlwdGlvbiBpcyB0aGUgc2VydmVyJ3MgRW5nbGlzaCBmb3IgdGhlIGFnZW50IGFuZCB0aGUgZXhwb3J0czsgdGhlXG4vLyB2aWV3ZXIgY29tcG9zZXMgaXRzIG93biB3b3JkcyBmcm9tIHRoZSBmaWVsZHMuXG5leHBvcnQgaW50ZXJmYWNlIFdpbmRvd01ldGEge1xuICBraW5kOiBXaW5kb3dLaW5kO1xuICBwZXJpb2RzOiBudW1iZXIgfCBudWxsO1xuICB1bml0OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgZHJhd25QZXJpb2RzOiBudW1iZXIgfCBudWxsO1xuICByZXNldEV2ZXJ5OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgYXZlcmFnZTogYm9vbGVhbjtcbiAgZnJvbUJlZ2lubmluZzogYm9vbGVhbjtcbiAgZGF0ZUNvbHVtbjogc3RyaW5nIHwgbnVsbDtcbiAgc3RhcnQ6IHN0cmluZyB8IG51bGw7XG4gIGVuZDogc3RyaW5nIHwgbnVsbDtcbiAgbGVhZEluOiBzdHJpbmcgfCBudWxsO1xuICBub3RlczogV2luZG93Tm90ZUNvZGVbXTtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuLy8gV2hpY2ggZGVsdGEgYSBLUEkgY2FyZCBzaG93czogdGhlIGRpZmZlcmVuY2UsIG9yIHRoZSBwZXJjZW50IGNoYW5nZS5cbmV4cG9ydCB0eXBlIEtwaURlbHRhU2hvdyA9ICdjaGFuZ2UnIHwgJ3BlcmNlbnRfY2hhbmdlJztcblxuLy8gV2h5IGEgS1BJJ3MgZGVsdGEgcmVhZHMgYXMgaXQgZG9lczpcbi8vIC0gbm9fcHJpb3JfZGF0YTogdGhlIHByaW9yIHdpbmRvdyBoYXMgbm8gdmFsdWU7XG4vLyAtIHVwX2Zyb21femVybzogdGhlIHByaW9yIHdhcyAwLCBzbyB0aGVyZSBpcyBubyBwZXJjZW50IGNoYW5nZTtcbi8vIC0gbm9fY2hhbmdlOiBib3RoIGFyZSAwO1xuLy8gLSBub19kYXRhX2VpdGhlcjogbmVpdGhlciB3aW5kb3cgaGFzIGEgdmFsdWU7XG4vLyAtIHNpZ25fY2hhbmdlOiB0aGUgdmFsdWUgY3Jvc3NlZCB6ZXJvLCBzbyB0aGVyZSBpcyBubyBwZXJjZW50IGNoYW5nZS5cbmV4cG9ydCB0eXBlIEtwaU5vdGVDb2RlID1cbiAgfCAnbm9fcHJpb3JfZGF0YSdcbiAgfCAndXBfZnJvbV96ZXJvJ1xuICB8ICdub19jaGFuZ2UnXG4gIHwgJ25vX2RhdGFfZWl0aGVyJ1xuICB8ICdzaWduX2NoYW5nZSc7XG5cbi8vIEEgS1BJJ3MgcHJvZ3Jlc3MgdG93YXJkIGl0cyBjb25maWd1cmVkIHRhcmdldC4gcHJvZ3Jlc3MgaXMgdmFsdWUgLyB0YXJnZXRcbi8vIChudWxsIHdoZW4gdGhlIHRhcmdldCBpcyAwKTsgbWV0IGZvbGxvd3MgdGhlIGNvbmZpZydzIGluY3JlYXNlSXMgKG51bGxcbi8vIHdoZW4gaXQgaXMgbmV1dHJhbCkuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaVRhcmdldCB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xuICBwcm9ncmVzczogbnVtYmVyIHwgbnVsbDtcbiAgbWV0OiBib29sZWFuIHwgbnVsbDtcbn1cblxuLy8gT25lIHNwYXJrbGluZSBwb2ludDogdGhlIHBlcmlvZCwgd3JpdHRlbiBhcyBhIHRpbWUtYXhpcyB2YWx1ZSwgYW5kIHRoZVxuLy8gdmFsdWUgaW4gaXQgKG51bGwgd2hlbiBhIG5vbi1hZGRpdGl2ZSBtZWFzdXJlIGhhcyBubyByb3dzIHRoZXJlKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpU3BhcmtsaW5lUG9pbnQge1xuICBwZXJpb2Q6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlciB8IG51bGw7XG59XG5cbi8vIEEgS1BJJ3Mgc3BhcmtsaW5lIHBvaW50cywgb2xkZXN0IGZpcnN0LiBwYXJ0aWFsIHNheXMgdGhlIGxhc3QgcGVyaW9kIGlzXG4vLyBub3QgZmluaXNoZWQgeWV0LlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGlTcGFya2xpbmUge1xuICBncmFudWxhcml0eTogQ2hhcnRHcmFudWxhcml0eTtcbiAgcGFydGlhbDogYm9vbGVhbjtcbiAgcG9pbnRzOiBDb21wb25lbnRLcGlTcGFya2xpbmVQb2ludFtdO1xufVxuXG4vLyBFdmVyeSBudW1iZXIgYSBLUEkgY2FyZCBzaG93cyBiZXNpZGUgaXRzIHZhbHVlLiBzaG93IG5hbWVzIHRoZSBkZWx0YSB0b1xuLy8gcHJpbnQsIGRlY2lkZWQgYnkgdGhlIHNlcnZlci4gV2hlbiB2YWx1ZSBpcyBudWxsIHRoZSBjYXJkIHNob3dzIGEgZGFzaCBhbmRcbi8vIG5vIGNvbXBhcmlzb24uXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaSB7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xuICBwcmlvcjogbnVtYmVyIHwgbnVsbDtcbiAgY2hhbmdlOiBudW1iZXIgfCBudWxsO1xuICBwZXJjZW50Q2hhbmdlOiBudW1iZXIgfCBudWxsO1xuICBzaG93OiBLcGlEZWx0YVNob3c7XG4gIG5vdGU6IEtwaU5vdGVDb2RlIHwgbnVsbDtcbiAgdGFyZ2V0OiBDb21wb25lbnRLcGlUYXJnZXQgfCBudWxsO1xuICBzcGFya2xpbmU6IENvbXBvbmVudEtwaVNwYXJrbGluZSB8IG51bGw7XG59XG5cbi8vIEEgY29tcG9uZW50J3MgQ1NWIGV4cG9ydDogdGhlIHByZXNpZ25lZCBkb3dubG9hZCBVUkwsIHBsdXMgb25lIHNlbnRlbmNlIHBlclxuLy8gd2F5IHRoZSBmaWxlIGZhbGxzIHNob3J0IG9mIHRoZSBmdWxsIHJlc3VsdCAoY3V0IGF0IHRoZSBleHBvcnQgY2VpbGluZywgb3Jcbi8vIGN1dCBhcyB0aGUgY2hhcnQgaXRzZWxmIGlzKS4gRW1wdHkgd2hlbiB0aGUgZmlsZSBpcyBjb21wbGV0ZS4gT3B0aW9uYWxcbi8vIGJlY2F1c2UgYSBzZXJ2ZXIgb24gYW4gb2xkZXIgZnJhbWV3b3JrIGFuc3dlcnMgd2l0aCB0aGUgdXJsIGFsb25lLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRFeHBvcnRSZXNwb25zZSB7XG4gIHVybDogc3RyaW5nO1xuICBub3Rlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydExpc3RJdGVtIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBtb2RpZnlEYXRlOiBzdHJpbmc7XG4gIHN0YXRlPzogUmVwb3J0U3RhdGU7XG4gIC8vIFRoZSBmb2xkZXIgdGhlIHJlcG9ydCBpcyBmaWxlZCB1bmRlci4gbnVsbCBpcyBhIHJlYWwsIGNvbW1vbiB2YWx1ZSDigJQgdGhlXG4gIC8vIHJlcG9ydCBzaXRzIGF0IHRoZSByb290IG9mIHRoZSBsaXN0aW5nIHRyZWUgYWxvbmdzaWRlIHRoZSBmb2xkZXJzLlxuICAvL1xuICAvLyBPcHRpb25hbCBsaWtlIGBzdGF0ZWAgYmVzaWRlIGl0OiB0aGUgYmFja2VuZCBhbHdheXMgc2VuZHMgaXQsIGJ1dCBtYWtpbmcgaXRcbiAgLy8gcmVxdWlyZWQgaXMgYSBicmVha2luZyB0eXBlIGNoYW5nZSBmb3IgZXZlcnkgY29uc3VtZXIgaG9sZGluZyBhXG4gIC8vIFJlcG9ydExpc3RJdGVtIGxpdGVyYWwgKGZpeHR1cmVzLCBtb2NrcykgYW5kIGJ1eXMgbm90aGluZyDigJQgdGhlIGxpc3RpbmdcbiAgLy8gcmVhZHMgaXQgYXMgYD8/IG51bGxgIGVpdGhlciB3YXkuXG4gIHJlcG9ydEZvbGRlcklkPzogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gT25lIGZvbGRlciBpbiB0aGUgbGlzdGluZyB0cmVlIOKAlCBhbiBhdWRpZW5jZSBidWNrZXQgKFwiTWFuYWdlbWVudFwiLFxuLy8gXCJPcGVyYXRpb25zXCIpIHJlcG9ydHMgYXJlIGZpbGVkIGludG8uIEZvbGRlcnMgbmVzdCB2aWEgcGFyZW50UmVwb3J0Rm9sZGVySWQ7XG4vLyByZXBvcnRzIG5ldmVyIGRvLCBzbyB0aGUgdHJlZSdzIG9ubHkgYnJhbmNoIG5vZGVzIGFyZSBmb2xkZXJzLlxuLy9cbi8vIGBzdGF0ZWAgaXMgdGhlIGZvbGRlcidzIE9XTiBzdGF0ZS4gRGVsZXRpbmcgYSBmb2xkZXIgd3JpdGVzIG9ubHkgdGhhdCwgYW5kXG4vLyBldmVyeXRoaW5nIGJlbG93IGl0IGNvdW50cyBhcyBkZWxldGVkIGJ5IHBvc2l0aW9uIOKAlCBzZWUgUmVwb3J0Tm9kZS5kZWxldGVkLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGb2xkZXIge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHBhcmVudFJlcG9ydEZvbGRlcklkOiBudW1iZXIgfCBudWxsO1xuICBzdGF0ZT86IFJlcG9ydFN0YXRlO1xufVxuXG4vLyBHRVQgL2FwaS9yZXBvcnRzIHJldHVybnMgYm90aCBoYWx2ZXMgZmxhdDsgdGhlIGxpc3RpbmcgbmVzdHMgdGhlbSBpdHNlbGYuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFRyZWUge1xuICByZXBvcnRzOiBSZXBvcnRMaXN0SXRlbVtdO1xuICBmb2xkZXJzOiBSZXBvcnRGb2xkZXJbXTtcbn1cblxuZXhwb3J0IGVudW0gUmVwb3J0Tm9kZVR5cGUge1xuICBGb2xkZXIgPSAnZm9sZGVyJyxcbiAgUmVwb3J0ID0gJ3JlcG9ydCcsXG59XG5cbi8vIE9uZSBub2RlIGFzIGZzLXRyZWUgc2VlcyBpdC4gRm9sZGVycyBhbmQgcmVwb3J0cyBzaGFyZSBvbmUgaWQgc3BhY2UgaW4gdGhlXG4vLyB2aWV3LCBzbyB0aGUgaWRzIGFyZSBwcmVmaXhlZCAoJ2Y6MTInIC8gJ3I6MzQnKSDigJQgYGlkYCBpcyB0aGUgb3JpZ2luYWwsXG4vLyBwZXItdGFibGUgaWQgdGhhdCB0aGUgQVBJIGVuZHBvaW50cyB0YWtlLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnROb2RlIHtcbiAga2V5OiBzdHJpbmc7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogUmVwb3J0Tm9kZVR5cGU7XG4gIC8vIE9ubHkgZXZlciBwb3B1bGF0ZWQgb24gYSBmb2xkZXI7IGEgcmVwb3J0IGlzIGFsd2F5cyBhIGxlYWYuXG4gIGNoaWxkcmVuOiBSZXBvcnROb2RlW107XG4gIC8vIFByZXNlbnQgb24gcmVwb3J0IG5vZGVzIG9ubHkuXG4gIHJlcG9ydD86IFJlcG9ydExpc3RJdGVtO1xuICAvLyBUaGUgbm9kZSdzIG93biByb3cgaXMgZGVsZXRlZC4gV2hhdCBlYXJucyB0aGUgXCJEZWxldGVkXCIgY2hpcCDigJQgdGhpcyBpc1xuICAvLyB3aGF0IHNvbWVib2R5IGFjdHVhbGx5IGRlbGV0ZWQuXG4gIHN0YXRlRGVsZXRlZDogYm9vbGVhbjtcbiAgLy8gRGVsZXRlZCBpdHNlbGYgT1IgYW55d2hlcmUgYmVsb3cgYSBkZWxldGVkIGZvbGRlci4gT25seSBldmVyIHRydWUgaW4gU2hvd1xuICAvLyBEZWxldGVkIG1vZGUgKHRoZSBkZWZhdWx0IGxpc3RpbmcgbmV2ZXIgcmV0dXJucyBzdWNoIGEgbm9kZSksIGFuZCBpdCBpcyB3aGF0XG4gIC8vIHN3YXBzIHRoZSByb3cncyBhY3Rpb25zIGZvciBSZXN0b3JlLlxuICBkZWxldGVkOiBib29sZWFuO1xufVxuXG4vLyBSZXBvcnRzIGFuZCBmb2xkZXJzIGFyZSBib3RoIHNvZnQtZGVsZXRhYmxlLiBBIGRlbGV0ZWQgcmVwb3J0IGtlZXBzIGl0cyBwYWdlc1xuLy8gYW5kIGNvbXBvbmVudHM7IGEgZGVsZXRlZCBmb2xkZXIga2VlcHMgZXZlcnl0aGluZyBmaWxlZCB1bmRlciBpdCwgd2hpY2ggbGVhdmVzXG4vLyB0aGUgbGlzdGluZyB3aXRoIGl0IGFuZCBjb21lcyBiYWNrIHdpdGggaXQuIFwiU2hvdyBEZWxldGVkXCIgc2hvd3MgdGhlIHdob2xlXG4vLyB0cmVlLCBsaXZlIGFuZCBkZWxldGVkIHRvZ2V0aGVyLCBzbyBhbnkgb2YgaXQgY2FuIGJlIHJlc3RvcmVkIGluIHBsYWNlLlxuZXhwb3J0IGVudW0gUmVwb3J0U3RhdGUge1xuICBBY3RpdmUgPSAnYWN0aXZlJyxcbiAgRGVsZXRlZCA9ICdkZWxldGVkJyxcbn1cblxuLy8gVGhlIGNoYXQgdHVybiBmbGFncyB0aGlzIGNvbnRleHQncyBiYWNrZW5kIGFkZHMgKFJlcG9ydHNcXEFpVmlldykuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENoYXRSZXNwb25zZSB7XG4gIHJlcG9ydENoYW5nZWQ/OiBib29sZWFuO1xuICByZXBvcnRSZW5hbWVkPzogYm9vbGVhbjtcbn1cblxuLy8gT25lIHZlcnNpb24gb2YgdGhlIGdsb2JhbCBBSSBrbm93bGVkZ2UgZG9jdW1lbnQg4oCUIHRoZSBvcGVyYXRvci1hdXRob3JlZFxuLy8gbWFya2Rvd24gYXBwZW5kZWQgdG8gdGhlIHJlcG9ydCBhZ2VudCdzIHN5c3RlbSBpbnN0cnVjdGlvbnMgb24gZXZlcnkgdHVybi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SW5zdHJ1Y3Rpb24ge1xuICBpZDogbnVtYmVyO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIGN1cnJlbnQ6IGJvb2xlYW47XG4gIGNyZWF0ZURhdGU6IERhdGU7XG4gIG1vZGlmeURhdGU6IERhdGU7XG4gIGFjY291bnRJZDogbnVtYmVyIHwgbnVsbDtcbiAgYWNjb3VudE5hbWU6IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIEdFVC9QVVQgaW5zdHJ1Y3Rpb25zIHBheWxvYWQ6IHRoZSBjdXJyZW50IHZlcnNpb24gKG51bGwgdW50aWwgb25lIGlzXG4vLyBhdXRob3JlZCkgcGx1cyB0aGUgZnVsbCBoaXN0b3J5LCBuZXdlc3QgZmlyc3QuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEluc3RydWN0aW9ucyB7XG4gIGluc3RydWN0aW9uczogUmVwb3J0SW5zdHJ1Y3Rpb24gfCBudWxsO1xuICB2ZXJzaW9uczogUmVwb3J0SW5zdHJ1Y3Rpb25bXTtcbn1cblxuLy8gVGhlIGxhdGVzdCBzZW1hbnRpYy1kYXRhYmFzZSBidWlsZCAoYW4gZmZfcHJvY2Vzc2VzIHJvdykg4oCUIGVub3VnaCBmb3IgdGhlXG4vLyBzZXR0aW5ncyBkaWFsb2cgdG8gc2F5IHdoYXQgc3RhdGUgdGhlIGJ1aWxkIGlzIGluIGFuZCB3aGVuIGl0IGxhc3QgcmFuLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkIHtcbiAgaWQ6IG51bWJlcjtcbiAgc3RhdGU6IHN0cmluZztcbiAgcGVyY2VudDogbnVtYmVyIHwgc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIGNyZWF0ZURhdGU6IERhdGU7XG4gIHN0YXJ0RGF0ZTogRGF0ZTtcbiAgZW5kRGF0ZTogRGF0ZTtcbn1cblxuLy8gQSBidWlsZCBzdGFnZSdzIHN0YXRlIG9uIHRoZSBlbnRpdHkgc2NvcmVib2FyZDogJ2RvbmUnID0gYnVpbHQsICdtaXNzaW5nJyA9XG4vLyBzdGlsbCBuZWVkcyBidWlsZGluZyAoYSBtaXNzaW5nIHN0YWdlIGlzIHVuYnVpbHQgY29udGVudCwgbmV2ZXIgYW4gZXJyb3IpLlxuZXhwb3J0IHR5cGUgU2VtYW50aWNCdWlsZFN0YWdlID0gJ2RvbmUnIHwgJ21pc3NpbmcnO1xuXG4vLyBPbmUgZW51bSBjb2x1bW4gb2YgYW4gZW50aXR5LCB3aXRoIHRoZSBhbGxvd2VkIHZhbHVlcyB0aGUgYnVpbGQgaW5saW5lZC5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZEVudW0ge1xuICBjb2x1bW46IHN0cmluZztcbiAgdmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuLy8gT25lIGVudGl0eSByb3cgb2YgdGhlIHNjb3JlYm9hcmQgKGFuIGVudGl0eSA9IGEgdGFibGUgKyBhIG1vZGVsICsgYVxuLy8gaGFuZGxlcik6IGl0cyB0YWJsZS9zaGFwZSBjb3VudHMsIGlubGluZWQgZW51bSB2YWx1ZXMsIGNvbXB1dGVkIGZpZWxkcywgaG93XG4vLyBtYW55IGNvZGUgZnVuY3Rpb25zIHdlcmUgY2FjaGVkIChzcGxpdCBtb2RlbCB2cyBoYW5kbGVyKSwgYW5kIHRoZSBwZXItc3RhZ2Vcbi8vIGJ1aWx0L21pc3Npbmcgc3RhdGUuXG4vL1xuLy8gYG1vZGVsYC9gaGFuZGxlcmAgYXJlIHRoZSBjbGFzc2VzIHRoZSBmdW5jdGlvbnMgd2VyZSByZWFkIGZyb20g4oCUIHdoYXQgYVxuLy8gcmVhZGVyIHJlY29nbml6ZXMgdGhlIHJvdyBieSwgd2hlcmUgYGtleWAgaXMgd2hhdCB0aGUgcmVwb3J0IEFJIGFkZHJlc3NlcyBpdFxuLy8gYnkgaW4gZGVzY3JpYmVfZW50aXR5IC8gY29tcGlsZV9xdWVyeS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZEVudGl0eSB7XG4gIGtleTogc3RyaW5nO1xuICB0YWJsZTogc3RyaW5nO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgaGFuZGxlcjogc3RyaW5nIHwgbnVsbDtcbiAgY29sdW1uczogbnVtYmVyO1xuICByZWxhdGlvbnNoaXBzOiBudW1iZXI7XG4gIGVudW1zOiBTZW1hbnRpY0J1aWxkRW51bVtdO1xuICBjb21wdXRlZEZpZWxkczogc3RyaW5nW107XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgbW9kZWxGdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGhhbmRsZXJGdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIHN0YWdlczogUmVjb3JkPHN0cmluZywgU2VtYW50aWNCdWlsZFN0YWdlPjtcbn1cblxuLy8gT25lIHN0YW5kYWxvbmUgY29kZSBjbGFzcyB0aGUgYnVpbGQgcmVhZDogZG9tYWluIGxvZ2ljIHdpdGggbm8gdGFibGUgb2YgaXRzXG4vLyBvd24gKGEgc3VtbWFyeSBtb2RlbCwgYSBjYWxjdWxhdGlvbiBzZXJ2aWNlKS4gVGhlIHJlcG9ydCBBSSByZWFkcyBpdHMgY29kZVxuLy8gZXhhY3RseSBsaWtlIGFuIGVudGl0eSdzLCBidXQgaXQgY2FuIG5ldmVyIGJlIHF1ZXJpZWQg4oCUIHRoZXJlIGlzIG5vdGhpbmcgdG9cbi8vIHNlbGVjdCBmcm9tIOKAlCBzbyBpdCBjYXJyaWVzIG5vIHRhYmxlLCBjb2x1bW5zIG9yIHJlbGF0aW9uc2hpcHMuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRDbGFzcyB7XG4gIGtleTogc3RyaW5nO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xufVxuXG4vLyBXaGF0IHRoZSBidWlsZCBkZWNpZGVkIGEgcGh5c2ljYWwgdGFibGUgaXMuIEVudGl0eSBhbmQganVuY3Rpb24gYXJlIGJvdGhcbi8vIHJlYWNoYWJsZSBieSB0aGUgcmVwb3J0IEFJIOKAlCBhbiBlbnRpdHkgZGlyZWN0bHksIGEganVuY3Rpb24gdGhyb3VnaCB0aGVcbi8vIG1hbnktdG8tbWFueSBpdCBicmlkZ2VzLiBFeGNsdWRlZCBpcyBub3QgcmVhY2hhYmxlIGF0IGFsbC5cbmV4cG9ydCB0eXBlIFNlbWFudGljVGFibGVDbGFzc2lmaWNhdGlvbiA9ICdlbnRpdHknIHwgJ2p1bmN0aW9uJyB8ICdleGNsdWRlZCc7XG5cbi8vIE9uZSBwaHlzaWNhbCB0YWJsZSBhcyB0aGUgYnVpbGQgY2xhc3NpZmllZCBpdC4gYHJlYXNvbmAgYW5zd2VycyBhIHNpbmdsZVxuLy8gcXVlc3Rpb24g4oCUIHdoeSBjYW4ndCB0aGUgcmVwb3J0IEFJIHNlZSB0aGlzIHRhYmxlPyDigJQgYW5kIGlzIG51bGwgd2hlbiBpdCBjYW4uXG4vLyBBIGp1bmN0aW9uIHdpdGggYSByZWFzb24gYnJpZGdlZCBub3RoaW5nLCBzbyBpdCBpcyBqdXN0IGFzIGludmlzaWJsZSBhcyBhblxuLy8gZXhjbHVkZWQgdGFibGUuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRUYWJsZSB7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIGNsYXNzaWZpY2F0aW9uOiBTZW1hbnRpY1RhYmxlQ2xhc3NpZmljYXRpb247XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICByZWFzb246IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIFRoZSBidWlsZCBzY29yZWJvYXJkIHNoaXBwZWQgYWxvbmdzaWRlIHRoZSBidWlsZCBzdGF0dXM6IHRoZSBzdW1tYXJ5IGNvdW50cyxcbi8vIHRoZSBmdWxsIGJyZWFrZG93biB0aGUgc2V0dGluZ3MgZGlhbG9nIGRyaWxscyBpbnRvIOKAlCBCT1RIIGtpbmRzIG9mIHVuaXQgdGhlXG4vLyBidWlsZCBjYWNoZXMsIHRhYmxlLWJhY2tlZCBlbnRpdGllcyBhbmQgc3RhbmRhbG9uZSBjb2RlIGNsYXNzZXMg4oCUIGFuZCB0aGVcbi8vIGNhdGFsb2cgb2YgZXZlcnkgdGFibGUgdGhlIGJ1aWxkIHNhdywgc28gdGhlIHRhYiBjYW4gc2hvdyB3aGF0IHRoZSByZXBvcnQgQUlcbi8vIGNhbid0IHNlZSwgbm90IGp1c3Qgd2hhdCBpdCBjYW4uXG4vL1xuLy8gYGZ1bmN0aW9uQ291bnRgIHNwYW5zIGVudGl0aWVzIGFuZCBjbGFzc2VzIGFsaWtlOiBpdCBpcyB0aGUgc2FtZSB0b3RhbCB0aGVcbi8vIGJ1aWxkIGl0c2VsZiByZXBvcnRzIHdoZW4gaXQgZmluaXNoZXMuXG4vL1xuLy8gYHRhYmxlc2AgaXMgZW1wdHkgZm9yIGFuIGFydGlmYWN0IGJ1aWx0IGJlZm9yZSB0aGUgY2F0YWxvZyBleGlzdGVkLiBSZWFkIHRoYXRcbi8vIGFzIFwibm8gY2F0YWxvZ1wiLCBuZXZlciBhcyBcIm5vdGhpbmcgd2FzIGV4Y2x1ZGVkXCIuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGREZXRhaWwge1xuICAvLyBXaGV0aGVyIHRoZSBhcnRpZmFjdCB3YXMgcHJvZHVjZWQgYnkgYSBidWlsZCB0aGF0IHJhbiB0byB0aGUgZW5kLiBSZWFkIGl0XG4gIC8vIGJlc2lkZSBgZ2VuZXJhdGVkQXRgLCBuZXZlciBpbnN0ZWFkIG9mIGl0OiB0aGUgc3RydWN0dXJhbCBhcnRpZmFjdCBpc1xuICAvLyBwdWJsaXNoZWQgQkVGT1JFIHRoZSBBSSBmdW5jdGlvbiBwYXNzLCBzbyBhIGJ1aWxkIHdob3NlIEFJIHBhc3MgZmFpbGVkIHN0aWxsXG4gIC8vIGNhcnJpZXMgYSBkYXRlIGFuZCBhIGZ1bGwgc2V0IG9mIGNvdW50cy4gVGhlIGRhdGUgc2F5cyBzb21ldGhpbmcgd2FzXG4gIC8vIHdyaXR0ZW47IG9ubHkgdGhpcyBzYXlzIHRoZSBidWlsZCBmaW5pc2hlZCB3cml0aW5nIGl0LlxuICBjb21wbGV0ZTogYm9vbGVhbjtcbiAgZ2VuZXJhdGVkQXQ6IERhdGUgfCBudWxsO1xuICBlbnRpdHlDb3VudDogbnVtYmVyO1xuICBjbGFzc0NvdW50OiBudW1iZXI7XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgZW50aXRpZXM6IFNlbWFudGljQnVpbGRFbnRpdHlbXTtcbiAgY2xhc3NlczogU2VtYW50aWNCdWlsZENsYXNzW107XG4gIHRhYmxlQ291bnQ6IG51bWJlcjtcbiAganVuY3Rpb25Db3VudDogbnVtYmVyO1xuICB1bmxpbmtlZEp1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgZXhjbHVkZWRDb3VudDogbnVtYmVyO1xuICB0YWJsZXM6IFNlbWFudGljQnVpbGRUYWJsZVtdO1xufVxuXG4vLyBXaGljaCBjbGFzcyBhIGNhY2hlZCBmdW5jdGlvbiB3YXMgcmVhZCBmcm9tLiBBbiBlbnRpdHkncyBjYWNoZSBzcGxpdHMgaW50b1xuLy8gJ21vZGVsJyBhbmQgJ2hhbmRsZXInOyBhIHN0YW5kYWxvbmUgY29kZSBjbGFzcyBoYXMgb25lIGdyb3VwLCAnY2xhc3MnLlxuZXhwb3J0IHR5cGUgU2VtYW50aWNGdW5jdGlvblNvdXJjZSA9ICdtb2RlbCcgfCAnaGFuZGxlcicgfCAnY2xhc3MnO1xuXG4vLyBPbmUgQUktY2xhc3NpZmllZCBjb2RlIGZ1bmN0aW9uIGZyb20gYSBtb2RlbCwgaGFuZGxlciBvciBzdGFuZGFsb25lIGNsYXNzOlxuLy8gd2hhdCBraW5kIG9mIGxvZ2ljIGl0IGlzLCB3aGF0IGl0IGRvZXMsIGFuZCB3aGF0IGl0IHByb2R1Y2VzIOKAlCB0aGUgYnVpbGQnc1xuLy8gY2FjaGVkIFwid2hhdCB0aGUgY29kZSBkb2VzXCIga25vd2xlZGdlIHNob3duIGluIHRoZSBmdW5jdGlvbnMgZGlhbG9nLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0VudGl0eUZ1bmN0aW9uIHtcbiAgY2xhc3M6IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xuICBraW5kOiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgcHJvZHVjZXM6IHN0cmluZztcbiAgc291cmNlOiBTZW1hbnRpY0Z1bmN0aW9uU291cmNlO1xufVxuXG4vLyBPbmUgZW50aXR5J3MgY2FjaGVkIGNvZGUtZnVuY3Rpb24ga25vd2xlZGdlLCBmZXRjaGVkIHdoZW4gYSBmdW5jdGlvbnMgZGlhbG9nXG4vLyBvcGVucyAodGhlIGZ1bGwgc2V0IGFjcm9zcyBhbGwgZW50aXRpZXMgaXMgdG9vIGJpZyB0byBzaGlwIHdpdGggdGhlXG4vLyBzY29yZWJvYXJkKS4gT25lIHBheWxvYWQgc2VydmVzIGJvdGggZGlhbG9ncyDigJQgY29uc3VtZXJzIGZpbHRlciBieSBzb3VyY2UuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljRW50aXR5RnVuY3Rpb25zIHtcbiAgZW50aXR5OiBzdHJpbmc7XG4gIGdlbmVyYXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgbW9kZWxDbGFzczogc3RyaW5nIHwgbnVsbDtcbiAgaGFuZGxlckNsYXNzOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbnM6IFNlbWFudGljRW50aXR5RnVuY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkU3RhdHVzIHtcbiAgYnVpbGQ6IFNlbWFudGljQnVpbGQgfCBudWxsO1xuICBkZXRhaWw6IFNlbWFudGljQnVpbGREZXRhaWw7XG59XG5cbi8vIFRoZSByZXBvcnQgbW9kdWxlJ3MgR2VuZXJhbCBzZXR0aW5ncyAoYSBzbWFsbCBnbG9iYWwga2V5L3ZhbHVlIHN0b3JlLCB0aGVcbi8vIHJlcG9ydGluZyBjb3VudGVycGFydCBvZiB0aGUgYXBwLXdpZGUgc2V0dGluZ3MpLiBFYWNoIHZhbHVlIHNoaXBzIHdpdGggdGhlXG4vLyBzYWZlIGJhbmQgaXRzIGVkaXRvciBmaWVsZCBpcyBib3VuZGVkIHRvLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTZXR0aW5ncyB7XG4gIC8vIEhvdyBtYW55IHN1bW1hcnkgY2FsbHMgdGhlIHNlbWFudGljIGJ1aWxkIHJ1bnMgYXQgb25jZS5cbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5OiBudW1iZXI7XG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeU1pbjogbnVtYmVyO1xuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3lNYXg6IG51bWJlcjtcbn1cbiJdfQ==
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQTBTbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUFrdEJGLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBdUJELGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBhc3NlbWJsZWQgcmVwb3J0IHN0cnVjdHVyZSByZXR1cm5lZCBieSBHRVQgL2FwaS9yZXBvcnRzLzppZCDigJQgY29tcG9zZWRcbi8vIHNlcnZlci1zaWRlIGZyb20gdGhlIG5vcm1hbGl6ZWQgdGFibGVzIChyZXBvcnRzIOKGkiByZXBvcnRfcGFnZXMg4oaSXG4vLyByZXBvcnRfY29tcG9uZW50cyArIHJlcG9ydF9maWx0ZXJzLCBwbHVzIHJlcG9ydF9maWx0ZXJfZ3JvdXBzKS4gQWxsIGtleXMgYXJlXG4vLyBjYW1lbENhc2U7IGNvbXBvbmVudCBgY29uZmlnYCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRoZSByZW5kZXJlciBtYXBzIHRvXG4vLyBFQ2hhcnRzIG9wdGlvbnMgLyBGc0xpc3QgY29uZmlnLlxuXG5pbXBvcnQgeyBSZXBvcnRDaGFuZ2VQb2xhcml0eSB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1jaGFuZ2UtcG9sYXJpdHkuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydENvbG9yIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRhTGFiZWxzIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWRhdGEtbGFiZWxzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnREYXRlTGFiZWwgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0ZS1sYWJlbC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0TGluZVN0eWxlIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LWxpbmUtc3R5bGUuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydE1hcmtTdGF0IH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYXJ0LW1hcmstc3RhdC5lbnVtJztcbmltcG9ydCB7IFJlcG9ydExpc3RDb2x1bW5Gb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbGlzdC1jb2x1bW4tZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0TnVtYmVyVW5pdHMgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtbnVtYmVyLXVuaXRzLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtYXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0VmFsdWVGb3JtdWxhIH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LXZhbHVlLWZvcm11bGEuZW51bSc7XG5cbmltcG9ydCB7IENvbXBvbmVudERhdGFBcHBsaWVkIH0gZnJvbSAnLi9jb21wb25lbnQtZGF0YS1hcHBsaWVkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnREYXRhRHJpbGwgfSBmcm9tICcuL2NvbXBvbmVudC1kYXRhLWRyaWxsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnREcmlsbFN0ZXAgfSBmcm9tICcuL3JlcG9ydC1kcmlsbC1zdGVwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRWaWV3ZXJGZWF0dXJlIH0gZnJvbSAnLi9yZXBvcnQtdmlld2VyLWZlYXR1cmUudHlwZSc7XG5cbi8vIEEgQkNQIDQ3IGxhbmd1YWdlIHRhZyBuYW1pbmcgaG93IG51bWJlcnMgYW5kIGRhdGVzIGFyZSB3cml0dGVuLCBlLmcuICdmci1DQScuXG4vLyBUaGUgc2V0IGlzIG9wZW4gKHRoZSBzZXJ2ZXIncyBwcm92aWRlciBkZWNpZGVzIHdoaWNoIGl0IG9mZmVycyksIHNvIHRoaXMgaXMgYVxuLy8gbmFtZWQgYWxpYXMgcmF0aGVyIHRoYW4gYSB1bmlvbi5cbmV4cG9ydCB0eXBlIFJlcG9ydExvY2FsZVRhZyA9IHN0cmluZztcblxuLy8gQW4gSVNPIDQyMTcgY3VycmVuY3kgY29kZSwgZS5nLiAnQ0FEJy4gT3BlbiBmb3IgdGhlIHNhbWUgcmVhc29uLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q3VycmVuY3lDb2RlID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydCB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgLy8gVGhlIHJlcG9ydCdzIG93biBzdG9yZWQgSUFOQSB6b25lIChlLmcuIEFtZXJpY2EvTmV3X1lvcmspLiBudWxsID0gdGhlXG4gIC8vIHJlcG9ydCBmb2xsb3dzIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQgcmVwb3J0aW5nIHpvbmUuXG4gIHRpbWV6b25lOiBzdHJpbmcgfCBudWxsO1xuICAvLyBUaGUgem9uZSBldmVyeSBkYXRlIGZpbHRlciwgdGltZSBidWNrZXQgYW5kIGRhdGUgY2VsbCBvZiB0aGlzIHJlcG9ydCB1c2VzLlxuICAvLyBSZXNvbHZlZCBzZXJ2ZXItc2lkZTsgdGhlIHNhbWUgZm9yIGV2ZXJ5IHZpZXdlciwgZXhwb3J0IGFuZCB0aGUgYXNzaXN0YW50LlxuICAvLyBPcHRpb25hbCBvbmx5IGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0OyByZXNvbHZlUmVwb3J0VGltZXpvbmUoKSB0aGVuXG4gIC8vIGZhbGxzIGJhY2sgdG8gdGhlIHJlcG9ydCdzIG93biBgdGltZXpvbmVgLCB0aGVuIHRoZSBicm93c2VyJ3Mgem9uZS4gUmVzb2x2ZVxuICAvLyB0aGUgem9uZSBmb3IgcmVuZGVyaW5nIHRocm91Z2ggcmVzb2x2ZVJlcG9ydFRpbWV6b25lKCkgKGZvcm1hdC50cyk7IHJlYWQgdGhlXG4gIC8vIGZpZWxkIGRpcmVjdGx5IG9ubHkgdG8gY2hlY2sgd2hldGhlciB0aGUgc2VydmVyIHNlbnQgaXQuXG4gIGVmZmVjdGl2ZVRpbWV6b25lPzogc3RyaW5nO1xuICAvLyBUaGUgcmVwb3J0J3Mgb3duIHN0b3JlZCBsb2NhbGUuIG51bGwgPSB0aGUgcmVwb3J0IGZvbGxvd3MgdGhlIGRlZmF1bHQuXG4gIGxvY2FsZT86IFJlcG9ydExvY2FsZVRhZyB8IG51bGw7XG4gIC8vIFRoZSBsb2NhbGUgZXZlcnkgbnVtYmVyIGFuZCBkYXRlIG9mIHRoaXMgcmVwb3J0IGlzIHdyaXR0ZW4gaW4sIHJlc29sdmVkXG4gIC8vIHNlcnZlci1zaWRlICh0aGUgcmVwb3J0J3Mgb3duLCBlbHNlIHRoZSBhcHBsaWNhdGlvbidzIGRlZmF1bHQsIGVsc2VcbiAgLy8gZW4tVVMpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hvc2UgcmVwb3J0cyB0aGVuIHJlYWQgZW4tVVMuIFJlc29sdmUgaXRcbiAgLy8gZm9yIHJlbmRlcmluZyB0aHJvdWdoIHJlc29sdmVGb3JtYXRDb250ZXh0KCkgKGZvcm1hdC50cyksIG5ldmVyIGRpcmVjdGx5LlxuICBlZmZlY3RpdmVMb2NhbGU/OiBSZXBvcnRMb2NhbGVUYWc7XG4gIC8vIFRoZSByZXBvcnQncyBvd24gc3RvcmVkIGN1cnJlbmN5LiBudWxsID0gdGhlIHJlcG9ydCBmb2xsb3dzIHRoZSBkZWZhdWx0LlxuICBjdXJyZW5jeT86IFJlcG9ydEN1cnJlbmN5Q29kZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW5jeSBtb25leSBhbW91bnRzIGFyZSBsYWJlbGVkIGluLCByZXNvbHZlZCBsaWtlIGVmZmVjdGl2ZUxvY2FsZVxuICAvLyAoZmFsbGluZyBiYWNrIHRvIHRoZSBsb2NhbGUncyBvd24gY3VycmVuY3ksIHRoZW4gVVNEKS4gQSBsYWJlbCBvbmx5OlxuICAvLyBhbW91bnRzIGFyZSBuZXZlciBjb252ZXJ0ZWQuXG4gIGVmZmVjdGl2ZUN1cnJlbmN5PzogUmVwb3J0Q3VycmVuY3lDb2RlO1xuICAvLyBIb3cgdGhlIHNlcnZlciBzZW5kcyBhIHBlcmNlbnQgbWVhc3VyZTogJ3JhdGlvJyA9IGEgMC0xIHJhdGlvICgwLjM4NSByZWFkc1xuICAvLyAzOC41JSkuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLCB3aG9zZSBwZXJjZW50IHZhbHVlcyBhcmUgYWxyZWFkeSB4MTAwXG4gIC8vICgzOC41IHJlYWRzIDM4LjUlKS5cbiAgcGVyY2VudEZvcm1hdD86ICdyYXRpbyc7XG4gIC8vIFJlcG9ydC1sZXZlbCBjb25maWc6IHR5cG9ncmFwaGljIHN0eWxlcywgZXRjLiAoY2FtZWxDYXNlIEpTT04gY29sdW1uKS5cbiAgY29uZmlnOiBSZXBvcnRDb25maWc7XG4gIC8vIFRoZSBwYWdlIGluIElOQ0hFUyAodGhlIHJlcG9ydCdzIG5hdGl2ZSB1bml0IOKAlCBQREZzIGFuZCBQb3dlclBvaW50IGFyZVxuICAvLyBpbmNoLWJhc2VkLCBzbyBleHBvcnRzIGFyZSBkaW1lbnNpb25hbGx5IGV4YWN0KS4gT3JpZW50YXRpb24gaXMgbm90IGEgZmllbGRcbiAgLy8gb2YgaXRzIG93bjogYSBwYWdlIHdpZGVyIHRoYW4gaXQgaXMgdGFsbCBJUyBsYW5kc2NhcGUuXG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xuICBwYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHBhZ2VzOiBSZXBvcnRQYWdlW107XG4gIC8vIFRoZSBoZWFkZXIgYW5kIGZvb3RlcjogdGhlIHJlcG9ydCdzIG1hc3RlciBwYWdlLCB3aG9zZSBjb21wb25lbnRzIGRyYXdcbiAgLy8gdW5kZXIgZXZlcnkgcGFnZSB0aGF0IGRvZXMgbm90IGhpZGUgdGhlbSAoUG93ZXJQb2ludCdzIHNsaWRlIG1hc3RlcikuIE51bGxcbiAgLy8gdW50aWwgYW55dGhpbmcgaGFzIGJlZW4gcGxhY2VkIGluIHRoZW0uXG4gIG1hc3RlcjogUmVwb3J0TWFzdGVyIHwgbnVsbDtcbiAgZmlsdGVyR3JvdXBzOiBSZXBvcnRGaWx0ZXJHcm91cFtdO1xuICAvLyBUaGUgdmlld2VyIGZlYXR1cmVzIHRoaXMgc2VydmVyIHNlcnZlcyBmb3IgdGhlIHJlcG9ydC4gVGhlIHZpZXdlciBvZmZlcnNcbiAgLy8gYSBjb250cm9sIG9ubHkgd2hlbiBpdHMgZmVhdHVyZSBpcyBsaXN0ZWQuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLCB3aGljaFxuICAvLyBzZXJ2ZSBub25lLlxuICB2aWV3ZXJGZWF0dXJlcz86IFJlcG9ydFZpZXdlckZlYXR1cmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRNYXN0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbiAgLy8gVGhlIHZhbHVlcyB0aGUgaGVhZGVyIGFuZCBmb290ZXIgdGV4dCBzaG93cywgYXMgUmVwb3J0UGFnZS52YWx1ZXMuXG4gIHZhbHVlcz86IFJlcG9ydENvbXBvbmVudFtdO1xufVxuXG4vLyBIb3cgdGhlIG9wZW4gcmVwb3J0IHdyaXRlcyBpdHMgbnVtYmVycyBhbmQgZGF0ZXMsIHJlc29sdmVkIG9uY2UgcGVyIHJlcG9ydFxuLy8gKHJlc29sdmVGb3JtYXRDb250ZXh0KSBhbmQgcmVhZCBieSB0aGUgdmlld2VyLCB0aGUgUERGIGFuZCBQb3dlclBvaW50IGFsaWtlLlxuLy8gTmV2ZXIgdGhlIGJyb3dzZXIncyBsb2NhbGUuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZvcm1hdENvbnRleHQge1xuICBsb2NhbGU6IFJlcG9ydExvY2FsZVRhZztcbiAgY3VycmVuY3k6IFJlcG9ydEN1cnJlbmN5Q29kZTtcbiAgLy8gV2hldGhlciBhIHBlcmNlbnQgbWVhc3VyZSBhcnJpdmVzIGFzIGEgMC0xIHJhdGlvICh0aGUgcmVwb3J0J3NcbiAgLy8gcGVyY2VudEZvcm1hdCkuIEFuIG9sZGVyIHNlcnZlciBzZW5kcyBpdCBhbHJlYWR5IHgxMDAuXG4gIHJhdGlvUGVyY2VudDogYm9vbGVhbjtcbn1cblxuLy8gT25lIGxvY2FsZSB0aGUgc2VydmVyIG9mZmVycywgd2l0aCB0aGUgY3VycmVuY3kgYSByZXBvcnQgaW4gaXQgdXNlcyB3aGVuIGl0XG4vLyBuYW1lcyBub25lIG9mIGl0cyBvd24uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydExvY2FsZU9wdGlvbiB7XG4gIGxvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBkZWZhdWx0Q3VycmVuY3k6IFJlcG9ydEN1cnJlbmN5Q29kZTtcbn1cblxuLy8gR0VUIHJlcG9ydHMvbG9jYWxlczogd2hhdCB0aGUgcmVwb3J0IHNldHRpbmdzJyBMb2NhbGUgYW5kIEN1cnJlbmN5IHNlbGVjdHNcbi8vIG9mZmVyLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMb2NhbGVzIHtcbiAgZGVmYXVsdExvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBvcHRpb25zOiBSZXBvcnRMb2NhbGVPcHRpb25bXTtcbiAgY3VycmVuY2llczogUmVwb3J0Q3VycmVuY3lDb2RlW107XG59XG5cbi8vIFRoZSBkZXB0aCBvZiB0aGUgaGVhZGVyIGJhbmQgKHRvcCBvZiBldmVyeSBwYWdlKSBhbmQgdGhlIGZvb3RlciBiYW5kIChib3R0b21cbi8vIG9mIGV2ZXJ5IHBhZ2UpLCBpbiBJTkNIRVMuIFRoZSBiYW5kcyBob2xkIG5vIGNvbnRlbnQgb2YgdGhlaXIgb3duIOKAlCB0aGVcbi8vIG1hc3RlcidzIGNvbXBvbmVudHMgc2l0IGluIHRoZW0g4oCUIHRoZXkgYXJlIHRoZSByZXNlcnZlZCBtYXJnaW5zIHRoZSBlZGl0b3Jcbi8vIGRyYXdzIGFzIGd1aWRlcyBhbmQgc25hcHMgdG8uIEFsd2F5cyBhcnJpdmVzIHJlc29sdmVkICgwID0gbm8gYmFuZCkuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEhlYWRlckZvb3RlciB7XG4gIGhlYWRlckhlaWdodDogbnVtYmVyO1xuICBmb290ZXJIZWlnaHQ6IG51bWJlcjtcbn1cblxuLy8gUmVwb3J0LWxldmVsIHN0eWxpbmcuIFNpemVzIGFyZSBpbiBQT0lOVFMgKDEvNzJcIikg4oCUIHRoZSByZXBvcnQncyB0eXBvZ3JhcGh5XG4vLyBtYXBzIDE6MSB0byBQREYgKDcycHQvaW4pIGFuZCBQb3dlclBvaW50IChwb2ludCBmb250IHNpemVzKSwgc28gYSBwb2ludFxuLy8gdmFsdWUgaXMgZGltZW5zaW9uYWxseSBleGFjdCBvbiBzY3JlZW4gYW5kIGluIGV2ZXJ5IGV4cG9ydC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29uZmlnIHtcbiAgc3R5bGVzPzogUmVwb3J0U3R5bGVzO1xuICAvLyBUaGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbC4gT3B0aW9uYWwgb24gdGhlIHR5cGUgYmVjYXVzZSBhIFJlcG9ydENvbmZpZ1xuICAvLyBsaXRlcmFsIG5lZWQgbm90IGNhcnJ5IGl0OyB0aGUgQVBJIGFsd2F5cyBzZW5kcyBpdCwgcmVzb2x2ZWQuXG4gIGdyb3VwQnk/OiBSZXBvcnRHcm91cEJ5O1xuICAvLyBSZXNvbHZlZCBieSB0aGUgQVBJIGxpa2UgZ3JvdXBCeS5cbiAgaGVhZGVyRm9vdGVyPzogUmVwb3J0SGVhZGVyRm9vdGVyO1xufVxuXG4vLyBUaGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCDigJQgdGhlIG9uZSBzd2l0Y2ggdGhhdCByZS1idWNrZXRzIGV2ZXJ5XG4vLyB0aW1lLXNlcmllcyBjaGFydCBvbiB0aGUgcmVwb3J0IGJldHdlZW4gZGF5LCB3ZWVrLCBtb250aCwgcXVhcnRlciBhbmQgeWVhci5cbi8vXG4vLyBJdCBpcyBOT1QgYSBmaWx0ZXI6IGEgZmlsdGVyIG5hcnJvd3Mgd2hpY2ggcm93cyBhcmUgY291bnRlZCwgdGhpcyBjaGFuZ2VzIGhvd1xuLy8gdGhlIHN1cnZpdmluZyByb3dzIGFyZSBidWNrZXRlZC4gSXQgc2hhcmVzIHRoZSByZXBvcnQncyBmaWx0ZXIgYmFyIGJlY2F1c2Vcbi8vIHRoYXQgaXMgdGhlIG9uZSByb3cgb2YgY29udHJvbHMgYSB2aWV3ZXIgcmVhZHMgYSByZXBvcnQgdGhyb3VnaCDigJQgdGhlXG4vLyBzZXBhcmF0aW9uIHRoYXQgbWF0dGVycyBpcyBpbiB0aGUgbW9kZWwsIG5vdCBpbiB3aGVyZSB0aGUgY29udHJvbCBpcyBwYWludGVkLlxuLy9cbi8vIEFsd2F5cyBhcnJpdmVzIFJFU09MVkVEICh0aGUgYmFja2VuZCBmaWxscyBhbiBhYnNlbnQgb3IgcGFydGlhbCBzdG9yZWQgYmxvY2tcbi8vIGluIGZyb20gaXRzIG93biBkZWZhdWx0cyksIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gZGVmYXVsdCBoZXJlIOKAlCByZW5kZXIgd2hhdFxuLy8geW91IGFyZSBnaXZlbi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0R3JvdXBCeSB7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGdyYW51bGFyaXRpZXM6IENoYXJ0R3JhbnVsYXJpdHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTdHlsZXMge1xuICBoZWFkaW5nPzogeyBzaXplPzogbnVtYmVyIH07XG59XG5cbi8vIENvbnRlbnQgcGFkZGluZyBhcm91bmQgYSBjb21wb25lbnQncyBib2R5LCBpbiBJTkNIRVMgKHRoZSBnZW9tZXRyeSB1bml0KS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50UGFkZGluZyB7XG4gIHRvcD86IG51bWJlcjtcbiAgcmlnaHQ/OiBudW1iZXI7XG4gIGJvdHRvbT86IG51bWJlcjtcbiAgbGVmdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYWdlIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgb3JkZXI6IG51bWJlcjtcbiAgLy8gVGhlIHBhZ2Ugb3B0cyBvdXQgb2YgdGhlIHJlcG9ydCdzIGhlYWRlciBhbmQgZm9vdGVyIChhIHRpdGxlIHBhZ2UpLlxuICBtYXN0ZXJIaWRkZW46IGJvb2xlYW47XG4gIGNvbXBvbmVudHM6IFJlcG9ydENvbXBvbmVudFtdO1xuICAvLyBFdmVyeSBhY3RpdmUgdmFsdWUgb2YgdGhlIHBhZ2UsIGluIGlkIG9yZGVyOiB0aG9zZSBpdHMgdGV4dCBzaG93cyBhbmRcbiAgLy8gdGhvc2Ugbm8gdGV4dCBzaG93cyBhbnkgbW9yZSAoa2VwdCB1bnRpbCBhIHRleHQsIHZhbHVlIG9yIHBhZ2UgZGVsZXRlLCBzb1xuICAvLyBhIGNoaXAgcGFzdGVkIGJhY2sgc3RpbGwgbmFtZXMgb25lKS4gTmV2ZXIgZHJhd24sIGFuZCBuZXZlciBpblxuICAvLyBgY29tcG9uZW50c2AuIE9wdGlvbmFsIGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0LlxuICB2YWx1ZXM/OiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gJ3RleHQnIGlzIGF1dGhvcmVkIHJpY2ggdGV4dCB3aXRoIG5vIHF1ZXJ5IGJlaGluZCBpdCDigJQgaXQgbmV2ZXIgZmV0Y2hlcyBkYXRhLlxuLy8gJ3ZhbHVlJyBpcyBvbmUgbnVtYmVyIHNob3duIGluc2lkZSBhIHRleHQgYmxvY2sncyB3b3JkcyAoe3t2YWx1ZS5rZXl9fSk7IGl0XG4vLyBoYXMgYSBxdWVyeSBidXQgbm8gcGxhY2Ugb2YgaXRzIG93biBvbiB0aGUgcGFnZS5cbmV4cG9ydCB0eXBlIFJlcG9ydENvbXBvbmVudFR5cGUgPSAnY2hhcnQnIHwgJ2xpc3QnIHwgJ2twaScgfCAndGV4dCcgfCAndmFsdWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENvbXBvbmVudCB7XG4gIGlkOiBudW1iZXI7XG4gIHR5cGU6IFJlcG9ydENvbXBvbmVudFR5cGU7XG4gIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICAvLyBHZW9tZXRyeSBpbiBJTkNIRVM6IGFic29sdXRlIHBvc2l0aW9uIG9uIHRoZSBwYWdlIGNhbnZhcy5cbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHc6IG51bWJlcjtcbiAgaDogbnVtYmVyO1xuICAvLyBIZWlnaHQgbW9kZSwgREVSSVZFRCBmcm9tIHR5cGUgc2VydmVyLXNpZGUgKG5vdCBzdG9yZWQsIHJlYWQtb25seSk6IGxpc3RzXG4gIC8vIGFuZCBLUEkgdGlsZXMgYXJlIGF1dG8gKHRoZSBib3ggc2l6ZXMgdG8gaXRzIGNvbnRlbnQsIGBoYCBpZ25vcmVkKTsgY2hhcnRzXG4gIC8vIGFyZSBhbHdheXMgZml4ZWQgKHVzZSBgaGApIHNvIHRoZXkgZml0IHRoZSBib3ggYW5kIG5ldmVyIG92ZXJmbG93LlxuICBhdXRvSGVpZ2h0OiBib29sZWFuO1xuICAvLyBUaGUgc3RvcmVkIFNRTCBvZiBhIGxlZ2FjeSBzcWwtbW9kZSBjb21wb25lbnQuIE5VTEwgZm9yIGEgZGVyaXZlZCBvbmUsXG4gIC8vIHdob3NlIHN0YXRlbWVudCBkb2VzIG5vdCBleGlzdCB1bnRpbCBpdHMgZG9jdW1lbnQgaXMgY29tcGlsZWQg4oCUIHRoZSBTUUwgdGFiXG4gIC8vIGZldGNoZXMgdGhhdCBzZXBhcmF0ZWx5IChzZWUgUmVwb3J0Q29tcG9uZW50U3FsKS5cbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBjb25maWc6IENoYXJ0Q29uZmlnICYgTGlzdENvbmZpZyAmIEtwaUNvbmZpZyAmIFRleHRDb25maWcgJiBWYWx1ZUNvbmZpZyAmIENvbXBvbmVudExheW91dENvbmZpZ1xuICAgICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xufVxuXG4vLyBXaGF0IHRoZSBTUUwgdGFiIGZldGNoZXM6IHRoZSBzdGF0ZW1lbnQgYSBjb21wb25lbnQgcnVucy5cbi8vXG4vLyBGb3IgYSBkZXJpdmVkIGNvbXBvbmVudCBgYmFzZWxpbmVgIGlzIHRydWUgYW5kIGBzcWxgIGlzIHdoYXQgaXRzIGRvY3VtZW50XG4vLyBjb21waWxlcyB0byB3aXRoIE5PIHZpZXdlciBzdGF0ZSDigJQgbm8gZmlsdGVycywgdGhlIGF1dGhvcmVkIGdyYWluLiBUaGVcbi8vIG51bWJlcnMgb24gc2NyZWVuIGNvbWUgZnJvbSB0aGF0IHN0YXRlbWVudCBwbHVzIHdoYXRldmVyIHRoZSB2aWV3ZXIgcGlja2VkLFxuLy8gc28gdGhlIHR3byBjYW4gbGVnaXRpbWF0ZWx5IGRpZmZlciBhbmQgdGhlIHRhYiBzYXlzIHNvIHJhdGhlciB0aGFuIGltcGx5aW5nXG4vLyB0aGV5IG1hdGNoLlxuLy9cbi8vIGB0aW1lem9uZWAgaXMgdGhlIElBTkEgem9uZSB0aGUgc3RhdGVtZW50IHdhcyBjb21waWxlZCBpbjogdGhlIHJlcG9ydCdzXG4vLyBlZmZlY3RpdmUgem9uZS4gT3B0aW9uYWwgYmVjYXVzZSBvbGRlciBzZXJ2ZXJzIG9taXQgaXQ7IHRoZXkgY29tcGlsZWQgaW4gVVRDLlxuLy9cbi8vIGBlcnJvcmAgaXMgbm90IGEgZmFpbHVyZSBvZiB0aGUgcmVxdWVzdDogYSBkb2N1bWVudCB0aGF0IG5vIGxvbmdlciBjb21waWxlc1xuLy8gaXMgcHJlY2lzZWx5IHdoYXQgc29tZW9uZSBvcGVucyB0aGlzIHRhYiB0byBkaXNjb3Zlciwgc28gaXQgYXJyaXZlcyBhcyBhXG4vLyBtZXNzYWdlIHRvIHJlbmRlciB3aXRoIGBlcnJvclR5cGVgIG5hbWluZyB3aGljaCBraW5kICgnc3RhbGUtcXVlcnknIG9yXG4vLyAnc2Vuc2l0aXZlLWNvbHVtbicpLCBhbmQgYHNxbGAgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50U3FsIHtcbiAgc3FsOiBzdHJpbmcgfCBudWxsO1xuICBvcmlnaW46ICdzcWwnIHwgJ2RicScgfCAnZGVyaXZlZCc7XG4gIGJhc2VsaW5lOiBib29sZWFuO1xuICB0aW1lem9uZT86IHN0cmluZztcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIGVycm9yVHlwZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSB0ZXh0IGJsb2NrJ3MgY29udGVudDogYW4gaHRtbCBmcmFnbWVudCB0aGUgc2VydmVyIGhhcyBhbHJlYWR5IHJlYnVpbHQgZnJvbVxuLy8gYW4gYWxsb3dsaXN0LCB3aGljaCBtYXkgY2Fycnkge3twYWdlLm51bWJlcn19LCB7e3BhZ2UubmFtZX19IGFuZFxuLy8ge3tyZXBvcnQubmFtZX19IHRva2VucyAoc2VlIHRleHQudHMpLlxuZXhwb3J0IGludGVyZmFjZSBUZXh0Q29uZmlnIHtcbiAgaHRtbD86IHN0cmluZztcbn1cblxuLy8gQSB2YWx1ZSdzIGtleTogd2hhdCBpdHMgdG9rZW4gaW4gYSB0ZXh0IGJsb2NrJ3MgaHRtbCBuYW1lcywgdW5pcXVlIHdpdGhpblxuLy8gdGhlIHBhZ2UuIEl0cyBudW1iZXIgaXMgZm9ybWF0dGVkIGJ5IGNvbmZpZy5tZWFzdXJlIChLcGlDb25maWcpLCBhcyBvbiBhIEtQSS5cbi8vIEEgZm9ybXVsYSB2YWx1ZSBoYXMgbm8gcXVlcnk6IGBmb3JtdWxhYCBuYW1lcyB3aGF0IGl0IHdvcmtzIG91dCBvZiB0aGVcbi8vIHBhZ2UncyBxdWVyeSB2YWx1ZXMsIGFuZCBpdHMgbWVhc3VyZSBob2xkcyBvbmx5IHRoZSBmb3JtYXQga2V5cyBpdHMgYXV0aG9yXG4vLyBnYXZlIChmb3JtYXQsIHByZWNpc2lvbiwgdW5pdHMpLlxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUNvbmZpZyB7XG4gIGtleT86IHN0cmluZztcbiAgZm9ybXVsYT86IFZhbHVlRm9ybXVsYUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIEEgZm9ybXVsYSB2YWx1ZSdzIG9wZXJhdGlvbiBhbmQgb3BlcmFuZHM6IGBvZmAgbmFtZXMgcXVlcnkgdmFsdWVzIG9uIHRoZVxuLy8gc2FtZSBwYWdlICh0aGUgbWFzdGVyIGZvciBhIGhlYWRlciBvciBmb290ZXIpIGJ5IGtleSwgMiBvZiB0aGVtLCBvciAyIHRvIDEwXG4vLyBmb3IgYSBzdW0uIGBzaWduZWRgIGFic2VudCByZWFkcyB0cnVlIGZvciBhIGNoYW5nZSBhbmQgYSBwZXJjZW50IGNoYW5nZSxcbi8vIGZhbHNlIGZvciBhIHJhdGlvIGFuZCBhIHN1bS5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVGb3JtdWxhQ29uZmlnIHtcbiAgb3A6IFJlcG9ydFZhbHVlRm9ybXVsYTtcbiAgb2Y6IHN0cmluZ1tdO1xuICBzaWduZWQ/OiBib29sZWFuIHwgbnVsbDtcbn1cblxuLy8gT25lIHJvdyBvZiBQT1NUIHBhZ2VzLzppZC92YWx1ZXM6IGEgdmFsdWUncyBudW1iZXIgZm9yIHRoZSBmaWx0ZXJzIHNlbnQuXG4vLyBUaGVyZSBpcyBvbmUgcm93IHBlciB2YWx1ZSB0aGUgbGF5ZXIgcmVhZHMsIGluIGlkIG9yZGVyOiBvbmUgc29tZSB0ZXh0IG9uXG4vLyB0aGF0IHBhZ2Ugc2hvd3MsIG9yIGFuIG9wZXJhbmQgb2YgYSBmb3JtdWxhIHNvbWUgdGV4dCBzaG93cy4gYHZhbHVlYCBpc1xuLy8gcmF3LCBhcyB0aGUgcXVlcnkgcmV0dXJuZWQgaXQgb3IgdGhlIHNlcnZlciB3b3JrZWQgaXQgb3V0IChudWxsIHdoZW4gdGhlcmVcbi8vIGlzIG5vIHJvdyBvciB0aGUgcmVzdWx0IGlzIG51bGwpOyBmb3JtYXR0aW5nIGlzIHRoZSB2aWV3ZXIncywgdGhyb3VnaCB0aGVcbi8vIHZhbHVlJ3MgbWVhc3VyZS4gYGVycm9yYCBpcyB0aGF0IHZhbHVlJ3Mgb3duIGZhaWx1cmUsIGFuZCB0aGUgcGFnZSdzIG90aGVyXG4vLyB2YWx1ZXMgYXJlIHJlYWQgcmVnYXJkbGVzcy5cbi8vIGByb2xlYCBpcyB0aGUgY29tcGFyaXNvbiByb2xlIHRoZSBudW1iZXIgcGxheXM6IGEgcXVlcnkgdmFsdWUncyBjb21wYXJpc29uXG4vLyBvdXRwdXQncywgY2hhbmdlIG9yIHBlcmNlbnRfY2hhbmdlIGZvciB0aG9zZSBmb3JtdWxhcywgZWxzZSBudWxsLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYWdlVmFsdWUge1xuICBpZDogbnVtYmVyO1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIGVycm9yOiBzdHJpbmcgfCBudWxsO1xuICByb2xlPzogT3V0cHV0Um9sZSB8IG51bGw7XG59XG5cbi8vIENyb3NzLXR5cGUgbGF5b3V0L3N0eWxlIGtleXMgY2FycmllZCBpbiBhIGNvbXBvbmVudCdzIGNvbmZpZyAoYWxvbmdzaWRlIHRoZVxuLy8gdHlwZS1zcGVjaWZpYyBjaGFydC9saXN0L2twaSBrZXlzKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TGF5b3V0Q29uZmlnIHtcbiAgcGFkZGluZz86IENvbXBvbmVudFBhZGRpbmc7XG59XG5cbi8vIFRoZSBwcmVzZW50YXRpb24gc2V0dGluZ3MgYSBjb21wb25lbnQncyBzZXR0aW5ncyBkaWFsb2cgZWRpdHMuIFRpdGxlIGFuZFxuLy8gcGFkZGluZyBhcmUgbm90IHBhcnQgb2Ygd2hhdCB0aGUgY29tcG9uZW50IHF1ZXJpZXMsIHNvIGEgY2hhbmdlIHRvIHRoZW1cbi8vIHJlcGFpbnRzIHdpdGhvdXQgcmUtcnVubmluZyBhbnl0aGluZy4gQSBkZXJpdmVkIEtQSSdzIGNhcmQga2V5cyBhcmUgc2VudFxuLy8gdG9vOiB0aGUgc2VydmVyIGNvbXB1dGVzIHRoZSB0YXJnZXQncyBwcm9ncmVzcyBhbmQgdGhlIHNwYXJrbGluZSdzIHBvaW50c1xuLy8gd2l0aCB0aGUgZGF0YSwgc28gYSBjaGFuZ2UgdG8gdGhlbSByZWxvYWRzIGl0LlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRTZXR0aW5ncyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhZGRpbmc6IENvbXBvbmVudFBhZGRpbmc7XG4gIGtwaT86IEtwaUNhcmRTZXR0aW5ncztcbn1cblxuLy8gQSBLUEkncyBjYXJkIGtleXMuIFRoZSBkaWFsb2cgc2VuZHMgdGhlbSAobnVsbCByZW1vdmVzIGEga2V5LCBpbmNyZWFzZUlzXG4vLyBudWxsIHJlYWRzIGdvb2QpLCBhbmQgQ29tcG9uZW50U2V0dGluZ3Mua3BpIGNhcnJpZXMgdGhlbSBhcyB0aGUgc2VydmVyXG4vLyBzYXZlZCB0aGVtLCByZWFkIGJhY2sgZnJvbSB0aGUgY29uZmlnIGl0IHJldHVybnMuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNhcmRTZXR0aW5ncyB7XG4gIGluY3JlYXNlSXM6IFJlcG9ydENoYW5nZVBvbGFyaXR5IHwgbnVsbDtcbiAgdGFyZ2V0OiBLcGlUYXJnZXRDb25maWcgfCBudWxsO1xuICBzcGFya2xpbmU6IEtwaVNwYXJrbGluZUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIFdoZXJlIGEgY2hhcnQncyBsZWdlbmQgc2l0cyByZWxhdGl2ZSB0byB0aGUgcGxvdCwgb3IgJ2hpZGRlbicgdG8gZHJvcCBpdC5cbmV4cG9ydCB0eXBlIExlZ2VuZFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnaGlkZGVuJztcblxuZXhwb3J0IHR5cGUgQ2hhcnRHcmFudWxhcml0eSA9ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJyB8ICdxdWFydGVyJyB8ICd5ZWFyJztcblxuLy8gSG93IGVhY2ggZ3JhbnVsYXJpdHkgcmVhZHMgaW4gdGhlIGdyb3VwLWJ5IGNvbnRyb2wgYW5kIG9uIGFuIGV4cG9ydCBjb3ZlclxuLy8gc2hlZXQuIFdISUNIIG9mIHRoZW0gYSBnaXZlbiByZXBvcnQgb2ZmZXJzIGNvbWVzIGZyb20gaXRzIFJlcG9ydEdyb3VwQnk7XG4vLyB0aGlzIGlzIG9ubHkgdGhlIG5hbWluZy4gJ3llYXInIHJlYWRzIGFzIFwiQW5udWFsbHlcIi5cbmV4cG9ydCBjb25zdCBHUkFOVUxBUklUWV9PUFRJT05TOiB7IHZhbHVlOiBDaGFydEdyYW51bGFyaXR5OyBuYW1lOiBzdHJpbmcgfVtdID0gW1xuICB7IHZhbHVlOiAnZGF5JywgbmFtZTogJ0RheScgfSxcbiAgeyB2YWx1ZTogJ3dlZWsnLCBuYW1lOiAnV2VlaycgfSxcbiAgeyB2YWx1ZTogJ21vbnRoJywgbmFtZTogJ01vbnRoJyB9LFxuICB7IHZhbHVlOiAncXVhcnRlcicsIG5hbWU6ICdRdWFydGVyJyB9LFxuICB7IHZhbHVlOiAneWVhcicsIG5hbWU6ICdBbm51YWxseScgfSxcbl07XG5cbi8vIFRoZSBjaGFydCB0eXBlcyB0aGF0IHBsb3Qgc2VyaWVzIGFnYWluc3QgYSBjYXRlZ29yeSBhbmQgYSB2YWx1ZSBheGlzLCBhbmQgc29cbi8vIHRoZSB0eXBlcyBhIG1lYXN1cmUncyBvd24gc2VyaWVzIGNhbiBiZSBkcmF3biBhcy4gQSB3YXRlcmZhbGwgaGFzIHRoZSBzYW1lXG4vLyBheGVzIGJ1dCBpcyBub3Qgb25lIG9mIHRoZW06IGl0IGRyYXdzIGl0cyBvbmUgbWVhc3VyZSBhcyBmbG9hdGluZyBzdGVwcy5cbmV4cG9ydCB0eXBlIEF4aXNDaGFydFR5cGUgPSAnYmFyJyB8ICdsaW5lJyB8ICdhcmVhJztcblxuLy8gV2hhdCBvbmUgYmFyIG9mIGEgd2F0ZXJmYWxsIGRvZXMgdG8gdGhlIHJ1bm5pbmcgdG90YWwg4oCUIGVhY2ggaXMgZHJhd24gaW4gaXRzXG4vLyBvd24gY29sb3IuIFRoZSBjbG9zaW5nIHRvdGFsIGlzIHRoZSBsYXN0IGJhciwgc3RhbmRpbmcgb24gemVyby5cbmV4cG9ydCB0eXBlIFdhdGVyZmFsbFN0ZXBLaW5kID0gJ3Jpc2UnIHwgJ2ZhbGwnIHwgJ3RvdGFsJztcblxuZXhwb3J0IGludGVyZmFjZSBDaGFydENvbmZpZyB7XG4gIC8vIEEgd2F0ZXJmYWxsIHRha2VzIE9ORSBtZWFzdXJlIHdob3NlIHZhbHVlIHBlciBjYXRlZ29yeSBpcyBob3cgZmFyIHRoZVxuICAvLyBydW5uaW5nIHRvdGFsIG1vdmVzIHRoZXJlOiBlYWNoIGJhciBzdGFydHMgd2hlcmUgdGhlIG9uZSBiZWZvcmUgaXQgZW5kZWQsXG4gIC8vIGFuZCBhIGNsb3NpbmcgVG90YWwgYmFyIHNob3dzIHRoZSBzdW0uXG4gIGNoYXJ0VHlwZT86IEF4aXNDaGFydFR5cGUgfCAnd2F0ZXJmYWxsJyB8ICdwaWUnIHwgJ2RvbnV0JztcbiAgLy8gRm9yIGtpbmQgJ3RpbWUnLCB0aGUgc2VydmVyIGJ1Y2tldHMgdGhlIHJhdyBkYXRldGltZSBjb2x1bW4gdG8gYGdyYW51bGFyaXR5YFxuICAvLyBpbiB0aGUgcmVwb3J0J3MgdGltZXpvbmUgKHRoZSBTUUwgZXhwb3NlcyB0aGUgcmF3IGNvbHVtbiwgdW5idWNrZXRlZCkuXG4gIC8vIGRhdGVMYWJlbCB3cml0ZXMgYSB0aW1lIGF4aXMncyBwZXJpb2QgbGFiZWxzIHNob3J0ICgnTWF5JywgdGhlIGRlZmF1bHQpLFxuICAvLyBsb25nICgnTWF5IDIwMjYnKSBvciBudW1lcmljICgnMjAyNi0wNScpOyBhIGNhdGVnb3J5IGF4aXMgaWdub3JlcyBpdC5cbiAgeEF4aXM/OiB7XG4gICAgY29sdW1uOiBzdHJpbmc7XG4gICAga2luZD86ICdjYXRlZ29yeScgfCAndGltZSc7XG4gICAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5O1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGRhdGVMYWJlbD86IFJlcG9ydENoYXJ0RGF0ZUxhYmVsO1xuICB9O1xuICBtZWFzdXJlcz86IENoYXJ0TWVhc3VyZVtdO1xuICAvLyBFYWNoIHZhbHVlIG9mIHRoaXMgY29sdW1uIGJlY29tZXMgaXRzIG93biBzZXJpZXMuIEl0IGNhcnJpZXMgbm8gbGFiZWw6IHRoZVxuICAvLyBsZWdlbmQgbmFtZXMgdGhlIHZhbHVlcyB0aGVtc2VsdmVzLlxuICBzcGxpdEJ5PzogeyBjb2x1bW46IHN0cmluZyB9O1xuICAvLyBTaW5nbGUtZGltZW5zaW9uIGJhciBjaGFydHMgb25seTogY29sb3IgZWFjaCBiYXIgYnkgaXRzIG93biBjYXRlZ29yeSBhbmRcbiAgLy8gc2hvdyBhIGxlZ2VuZCwgV0lUSE9VVCBzcGxpdHRpbmcgaW50byBtdWx0aXBsZSBzZXJpZXMgKHdoaWNoIHNsaXZlcnMgdGhlXG4gIC8vIGJhcnMpLiB2MSBleHBlY3RzIGNvbG9yQnkuY29sdW1uID09PSB4QXhpcy5jb2x1bW4uIElnbm9yZWQgd2hlbiBzcGxpdEJ5IGlzXG4gIC8vIHNldCBvciB0aGUgY2hhcnQgaXNuJ3QgYSBiYXIgY2hhcnQuXG4gIGNvbG9yQnk/OiB7IGNvbHVtbjogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9O1xuICBvcmllbnRhdGlvbj86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XG4gIHN0YWNrZWQ/OiBib29sZWFuO1xuICAvLyBTdGFja3MgdGhlIHByaW1hcnkgYXhpcydzIGJhciBhbmQgYXJlYSBzZXJpZXMgYXMgc2hhcmVzIG9mIGVhY2hcbiAgLy8gY2F0ZWdvcnkncyB0b3RhbCwgc28gZXZlcnkgc3RhY2sgcmVhY2hlcyAxMDAlLiBUaGUgdmlld2VyIGNvbXB1dGVzIHRoZVxuICAvLyBzaGFyZXMgZnJvbSB0aGUgcm93cyBpdCByZWNlaXZlcywgYWZ0ZXIgdGhlIGZpbHRlcnMgcmFuOyB0aGUgcm93cyBhbmQgdGhlXG4gIC8vIENTViBrZWVwIHRoZSByYXcgdmFsdWVzLiBUaGUgdmFsdWUgYXhpcyB0aGVuIGFsd2F5cyBydW5zIDAgdG8gMTAwJSAoZnJvbVxuICAvLyAtMTAwJSB3aGVuIGEgc2hhcmUgaXMgbmVnYXRpdmUpLlxuICBwZXJjZW50U3RhY2tlZD86IGJvb2xlYW47XG4gIC8vIFZhbHVlcyBwcmludGVkIGJlc2lkZSB0aGUgcG9pbnRzIG9mIGEgYmFyLCBsaW5lIG9yIGFyZWEgc2VyaWVzOiBldmVyeVxuICAvLyBwb2ludCAoYWxsKSwgZWFjaCBzZXJpZXMnIGxhdGVzdCBwb2ludCAobGFzdCksIG9yIGV2ZXJ5IHBvaW50IHdob3NlIGxhYmVsXG4gIC8vIGZpdHMgd2l0aG91dCBvdmVybGFwcGluZyBhbm90aGVyIChhdXRvKS4gT21pdHRlZCBvciBub25lLCBubyBsYWJlbHMuIEFcbiAgLy8gcGllLCBhIGRvbnV0IGFuZCBhIHdhdGVyZmFsbCBuZXZlciBwcmludCB0aGVtLlxuICBkYXRhTGFiZWxzPzogUmVwb3J0Q2hhcnREYXRhTGFiZWxzO1xuICAvLyBUaGUgcHJpbWFyeSB2YWx1ZSBheGlzJ3MgdGl0bGUgYW5kIHJhbmdlLiBFdmVyeSBzZXJpZXMgaXMgcGxvdHRlZCBhZ2FpbnN0XG4gIC8vIGl0IHVubGVzcyBpdHMgbWVhc3VyZSBpcyBzZWNvbmRhcnkuXG4gIHZhbHVlQXhpcz86IENoYXJ0VmFsdWVBeGlzO1xuICAvLyBUaGUgc2Vjb25kIHZhbHVlIGF4aXMsIG9uIHRoZSByaWdodCwgdGhhdCBzZWNvbmRhcnkgbWVhc3VyZXMgcGxvdCBhZ2FpbnN0LlxuICBzZWNvbmRhcnlBeGlzPzogQ2hhcnRWYWx1ZUF4aXM7XG4gIC8vIExhYmVsZWQgbGluZXMgYWNyb3NzIHRoZSBwbG90IGF0IGEgY29uc3RhbnQgdmFsdWUsIG9yIGJhbmRzIGJldHdlZW4gdHdvXG4gIC8vIHZhbHVlcywgYXQgbW9zdCA1LiBWZXJ0aWNhbCBheGlzIGNoYXJ0cyBhbmQgd2F0ZXJmYWxscyBvbmx5LlxuICByZWZlcmVuY2VzPzogQ2hhcnRSZWZlcmVuY2VbXTtcbiAgbGVnZW5kPzogTGVnZW5kUG9zaXRpb247XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBsaW1pdD86IG51bWJlcjtcbn1cblxuLy8gQSB2YWx1ZSBheGlzJ3MgdGl0bGUgYW5kIHJhbmdlLiBFYWNoIGJvdW5kIGxlZnQgb3V0IGlzIHBpY2tlZCBmcm9tIHRoZSBkYXRhLFxuLy8gYW5kIHRoZSB0aWNrIHN0ZXAgd2l0aG91dCBhbiBpbnRlcnZhbC4gSXRzIHRpY2tzIHRha2UgdGhlIG51bWJlciBmb3JtYXQgb2Zcbi8vIHRoZSBtZWFzdXJlcyBwbG90dGVkIGFnYWluc3QgaXQuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0VmFsdWVBeGlzIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICBpbnRlcnZhbD86IG51bWJlcjtcbn1cblxuLy8gQSByZWZlcmVuY2UgZHJhd24gYWNyb3NzIGEgY2hhcnQncyBwbG90OiBhIGxpbmUgYXQgYHZhbHVlYCwgb3Igd2l0aCBgdG9gIGFcbi8vIGJhbmQgYmV0d2VlbiB0aGUgdHdvLCBsYWJlbGVkIHdpdGggYGxhYmVsYC4gVGhlIHZhbHVlIGlzIG9uZSB0aGUgdXNlciBvclxuLy8gdGhlIG1vZGVsIHN0YXRlcywgbmV2ZXIgb25lIHJlYWQgb2ZmIHRoZSBkYXRhLiBzZWNvbmRhcnkgcGxvdHMgaXQgYWdhaW5zdFxuLy8gdGhlIHNlY29uZCB2YWx1ZSBheGlzLCB3aGVuIHRoZSBjaGFydCBoYXMgb25lLlxuZXhwb3J0IGludGVyZmFjZSBDaGFydFJlZmVyZW5jZSB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHRvPzogbnVtYmVyO1xuICBzZWNvbmRhcnk/OiBib29sZWFuO1xufVxuXG4vLyBIb3cgb25lIG51bWVyaWMgc2xvdCBpcyBzaG93bjogYSBjaGFydCBtZWFzdXJlLCBhIEtQSSBtZWFzdXJlLCBhIGxpc3QgY29sdW1uXG4vLyBvciBhIGNyb3NzLXRhYidzIGNlbGxzLiBUaGUgZGF0YSBzdGF5cyByYXcgKGl0IHNvcnRzIGFuZCBleHBvcnRzIGFzIGFcbi8vIG51bWJlcik7IG9ubHkgdGhlIHJlbmRlcmVycyBmb3JtYXQgaXQsIHRoZSBzYW1lIHdheSBvbiBzY3JlZW4sIGluIHRoZSBQREZcbi8vIGFuZCBpbiBQb3dlclBvaW50IChmb3JtYXQudHMpLiBBbGwgdGhyZWUga2V5cyBhcmUgb3B0aW9uYWwsIGFuZCBwcmVjaXNpb24gb3Jcbi8vIHVuaXRzIHdpdGhvdXQgYSBmb3JtYXQgbWVhbiBudW1iZXIuXG4vL1xuLy8gRm9ybWF0dGluZyBpcyBvcHQtaW46IGEgbGlzdCBjb2x1bW4gb3IgY3Jvc3MtdGFiIGNlbGwgd2l0aG91dCB0aGVzZSBrZXlzXG4vLyBwcmludHMgaXRzIHZhbHVlIGFzIGl0IGNhbWUsIGFuZCBhIGNoYXJ0IHdpdGhvdXQgdGhlbSBrZWVwcyBpdHMgcGxhaW5cbi8vIGxvY2FsZS1ncm91cGVkIGF4aXMgYW5kIHRvb2x0aXBzLiBBIEtQSSB3aXRob3V0IHRoZW0gcHJpbnRzIGEgcGxhaW4gbnVtYmVyLlxuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgLy8gcGVyY2VudCB0YWtlcyBhIDAtMSByYXRpbyAoMC4zIHJlYWRzIDMwJSkgd2hlbiB0aGUgcmVwb3J0J3MgcGVyY2VudEZvcm1hdFxuICAvLyBpcyAncmF0aW8nOyBhbiBvbGRlciBzZXJ2ZXIgbGVhdmVzIGl0IG91dCBhbmQgc2VuZHMgeDEwMC4gY3VycmVuY3kgbGFiZWxzXG4gIC8vIHRoZSBhbW91bnQgaW4gdGhlIHJlcG9ydCdzIGN1cnJlbmN5LCB3cml0dGVuIGluIGl0cyBsb2NhbGUuXG4gIGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0IHwgUmVwb3J0TGlzdENvbHVtbkZvcm1hdDtcbiAgLy8gSG93IG1hbnkgZGVjaW1hbCBwbGFjZXMgdGhlIHZhbHVlIGlzIHNob3duIHRvICgwLTYpLiBGaXhlZCByYXRoZXIgdGhhblxuICAvLyBtYXhpbXVtOiBhIGNvbHVtbiBvZiByYXRlcyBpcyB1bnJlYWRhYmxlIHdoZW4gZWFjaCBvbmUgc2hvd3MgYSBkaWZmZXJlbnRcbiAgLy8gbnVtYmVyIG9mIGRlY2ltYWxzLiBGb3IgcGVyY2VudCBpdCBjb3VudHMgdGhlIGRlY2ltYWxzIG9mIHRoZSBwZXJjZW50YWdlXG4gIC8vIChwcmVjaXNpb24gMSBzaG93cyAwLjMgYXMgMzAuMCUpLiBPbWl0dGVkIGxlYXZlcyB0aGUgZm9ybWF0J3Mgb3duIGRlZmF1bHQ6XG4gIC8vIGF0IG1vc3Qgb25lIGRlY2ltYWwgZm9yIHBlcmNlbnQgKGFuZCBmb3IgYW4gYWJicmV2aWF0ZWQgMS4ySyksIHdob2xlIHVuaXRzXG4gIC8vIGZvciBjdXJyZW5jeSwgdGhlIGxvY2FsZSdzIGRlZmF1bHQgZm9yIGEgbnVtYmVyLlxuICAvL1xuICAvLyBJdCBjYW5ub3QgYmUgYXBwbGllZCBpbiB0aGUgU1FMOiB0aGUgdmFsdWUgaXMgYWdncmVnYXRlZCBhZnRlciB0aGUgcmVwb3J0J3NcbiAgLy8gZmlsdGVycyBydW4sIHNvIHByZS1yb3VuZGluZyB3b3VsZCBicmVhayBsaXZlIHJlLWZpbHRlcmluZy5cbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICAvLyBBYmJyZXZpYXRlcyB0byB0aG91c2FuZHMgKDEuMkspIG9yIG1pbGxpb25zICgzLjRNKSwgb3IgcGlja3MgYnkgc2l6ZS5cbiAgdW5pdHM/OiBSZXBvcnROdW1iZXJVbml0cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFydE1lYXN1cmUgZXh0ZW5kcyBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGFnZ3JlZ2F0aW9uPzogJ3N1bScgfCAnY291bnQnIHwgJ2F2ZycgfCAnbWluJyB8ICdtYXgnO1xuICBsYWJlbD86IHN0cmluZztcbiAgLy8gRHJhd3MgdGhpcyBtZWFzdXJlJ3Mgc2VyaWVzIGFzIGEgZGlmZmVyZW50IHR5cGUgZnJvbSB0aGUgY2hhcnQncyBvd25cbiAgLy8gY2hhcnRUeXBlIOKAlCBjb3VudHMgYXMgYmFycyB3aXRoIGEgcmF0ZSBhcyBhIGxpbmUgb3ZlciB0aGVtIGlzIGEgY29tYm9cbiAgLy8gY2hhcnQuIE9taXR0ZWQsIHRoZSBzZXJpZXMgdGFrZXMgdGhlIGNoYXJ0J3MgdHlwZS4gQXhpcyBjaGFydHMgb25seSAoYSBwaWVcbiAgLy8gaWdub3JlcyBpdCkuXG4gIHR5cGU/OiBBeGlzQ2hhcnRUeXBlO1xuICAvLyBBIGNoYXJ0IG1lYXN1cmUncyBmb3JtYXQgc2hvd3Mgb24gaXRzIHRvb2x0aXBzLCBhbmQgb24gdGhlIHZhbHVlIGF4aXNcbiAgLy8gd2hlbiBldmVyeSBtZWFzdXJlIHNoYXJpbmcgdGhlIGF4aXMgYWdyZWVzIG9uIGl0LiBBIEtQSSdzIG1lYXN1cmUgZm9ybWF0c1xuICAvLyBpdHMgb25lIHZhbHVlLlxuICBmb3JtYXQ/OiBSZXBvcnRWYWx1ZUZvcm1hdDtcbiAgLy8gUGxvdHMgdGhpcyBtZWFzdXJlIGFnYWluc3QgdGhlIHNlY29uZCB2YWx1ZSBheGlzLCBvbiB0aGUgcmlnaHQsIGZvciBhXG4gIC8vIHF1YW50aXR5IG9uIGFub3RoZXIgc2NhbGUuIE9taXR0ZWQgb3IgZmFsc2UsIGl0IHNoYXJlcyB0aGUgcHJpbWFyeSBheGlzLlxuICAvLyBBIHZlcnRpY2FsIGF4aXMgY2hhcnQgb25seSwgd2l0aCBhdCBsZWFzdCBvbmUgbWVhc3VyZSBsZWZ0IG9uIHRoZSBwcmltYXJ5XG4gIC8vIGF4aXMuXG4gIHNlY29uZGFyeT86IGJvb2xlYW47XG4gIC8vIFRoZSBwYWxldHRlIGNvbG9yIHRoaXMgbWVhc3VyZSdzIHNlcmllcyBpcyBkcmF3biBpbi4gT21pdHRlZCwgdGhlIHNlcmllc1xuICAvLyB0YWtlcyB0aGUgcGFsZXR0ZSBjb2xvciBvZiBpdHMgcG9zaXRpb24uIEEgY29sb3Igb24gdGhlIGZpcnN0IG1lYXN1cmVcbiAgLy8gdHVybnMgb2ZmIGEgY2F0ZWdvcnkgYmFyIGNoYXJ0J3MgZGVmYXVsdCBjb2xvciBwZXIgYmFyIChpc0NvbG9yQnkpLlxuICBjb2xvcj86IFJlcG9ydENoYXJ0Q29sb3I7XG4gIC8vIEhvdyBhIGxpbmUgc2VyaWVzJyBsaW5lIGlzIGRyYXduLiBPbWl0dGVkLCBzb2xpZC5cbiAgbGluZT86IFJlcG9ydENoYXJ0TGluZVN0eWxlO1xuICAvLyBXaGV0aGVyIGEgbGluZSBvciBhcmVhIHNlcmllcyBkcmF3cyBhIGRvdCBvbiBlYWNoIHBvaW50LiBPbWl0dGVkLCB0cnVlLlxuICBtYXJrZXJzPzogYm9vbGVhbjtcbiAgLy8gQSBsaW5lIGFjcm9zcyB0aGUgcGxvdCBhdCB0aGlzIHNlcmllcycgYXZlcmFnZSwgbWVkaWFuLCBsb3dlc3Qgb3IgaGlnaGVzdFxuICAvLyB2YWx1ZSBvdmVyIHRoZSBwb2ludHMgb24gc2NyZWVuLiBWZXJ0aWNhbCBheGlzIGNoYXJ0cyBvbmx5LlxuICBtYXJrTGluZT86IFJlcG9ydENoYXJ0TWFya1N0YXQ7XG59XG5cbi8vIE9uZSBhdXRob3JlZCBjb2x1bW4gb2YgYSBwbGFpbiBsaXN0LlxuZXhwb3J0IGludGVyZmFjZSBMaXN0Q29sdW1uIGV4dGVuZHMgTnVtYmVyRm9ybWF0U3BlYyB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgLy8gZGF0ZSBrZWVwcyB0aGUgY29sdW1uIGEgUkFXIHRpbWVzdGFtcCwgc28gdGhlIHJlcG9ydCB0aW1lem9uZSBhbmQgaXRzXG4gIC8vIGRhdGVSYW5nZSBmaWx0ZXJzIGtlZXAgd29ya2luZywgYW5kIHRoZSB2aWV3ZXIgcmVuZGVycyBpdCBhcyBhIGRheSBpbiB0aGVcbiAgLy8gcmVwb3J0J3Mgem9uZSBhbmQgbG9jYWxlLiBudW1iZXIsIHBlcmNlbnQgYW5kIGN1cnJlbmN5IGZvcm1hdCB0aGUgdmFsdWUgYXNcbiAgLy8gYSBLUEkgbWVhc3VyZSBkb2VzLiBXaXRob3V0IGEgZm9ybWF0IHRoZSB2YWx1ZSBwcmludHMgYXMgaXQgY2FtZS5cbiAgZm9ybWF0PzogUmVwb3J0TGlzdENvbHVtbkZvcm1hdDtcbiAgLy8gQSBjb2x1bW4gdGhlIFNRTCBhbHJlYWR5IGZvcm1hdHRlZCBpcyB0ZXh0LCBzbyBpdCBuYW1lcyBgc29ydENvbHVtbmA6IHRoZVxuICAvLyByYXcgbnVtZXJpYyBhbGlhcyB0aGUgcXVlcnkgYWxzbyBvdXRwdXRzLCB3aGljaCB0aGUgc2VydmVyIG9yZGVycyBieVxuICAvLyBpbnN0ZWFkLlxuICBzb3J0Q29sdW1uPzogc3RyaW5nO1xuICAvLyBmYWxzZSBrZWVwcyB0aGUgY2VsbCBvbiBvbmUgbGluZS4gT21pdHRlZCwgYSBsb25nIHZhbHVlIHdyYXBzLlxuICB3cmFwPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0Q29uZmlnIHtcbiAgY29sdW1ucz86IExpc3RDb2x1bW5bXTtcbiAgLy8gQSBjcm9zcy10YWI6IGByb3dCeWAgc3RheXMgZG93biB0aGUgc2lkZSBhbmQgZXZlcnkgdmFsdWUgb2YgYHBpdm90QnlgXG4gIC8vIGJlY29tZXMgYSBjb2x1bW4uIFRoZSB0d28gYXJlIHNldCB0b2dldGhlciwgYGNvbHVtbnNgIGlzIG9taXR0ZWQgKHRoZVxuICAvLyBiYWNrZW5kIHJlamVjdHMgYXV0aG9yaW5nIGJvdGgpLCBhbmQgdGhlIGNvbHVtbiBzZXQgYXJyaXZlcyB3aXRoIHRoZSByb3dzXG4gIC8vIGluIENvbXBvbmVudERhdGEuY29sdW1ucyBiZWNhdXNlIG9ubHkgdGhlIHJlc3VsdCBrbm93cyB0aGUgcGl2b3QgdmFsdWVzLlxuICAvLyByb3dCeS5sYWJlbCBoZWFkcyB0aGUgc2lkZSBjb2x1bW4gb24gc2NyZWVuIGFuZCBpbiBldmVyeSBleHBvcnQsIGFuZFxuICAvLyBkZWZhdWx0cyB0byB0aGUgY29sdW1uIG5hbWUuIHBpdm90QnkgY2FycmllcyBubyBsYWJlbDogaXRzIHZhbHVlcyBhcmUgdGhlXG4gIC8vIGhlYWRpbmdzLlxuICByb3dCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIHBpdm90Qnk/OiB7IGNvbHVtbjogc3RyaW5nIH07XG4gIC8vIFRoZSBhdXRob3JlZCBvcmRlciwgbW9zdCBpbXBvcnRhbnQgZmlyc3QuIEEgbGlzdCBzYXZlZCBiZWZvcmUgbXVsdGkta2V5XG4gIC8vIHNvcnRpbmcgc3RvcmVzIG9uZSBvYmplY3QsIHNvIHJlYWQgaXQgdGhyb3VnaCBsaXN0U29ydFRlcm1zKCkgb25seS5cbiAgc29ydD86IFJlcG9ydFNvcnQgfCBSZXBvcnRTb3J0W107XG4gIC8vIEhvdyBtYW55IGxlYWRpbmcgY29sdW1ucyBzdGF5IGluIHZpZXcgd2hpbGUgdGhlIGxpc3Qgc2Nyb2xscyBzaWRld2F5c1xuICAvLyAoMC0zKS4gVW5zZXQsIGEgY3Jvc3MtdGFiIHBpbnMgaXRzIHJvdy1rZXkgY29sdW1uIGFuZCBhIHBsYWluIGxpc3Qgbm9uZS5cbiAgcGlubmVkQ29sdW1ucz86IG51bWJlciB8IG51bGw7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICAvLyB0cnVlIGFkZHMgYSB0b3RhbHMgcm93IHVuZGVyIHRoZSBsaXN0OiB0aGUgc2VydmVyIHJ1bnMgdGhlIG1lYXN1cmVzIGFnYWluXG4gIC8vIG92ZXIgZXZlcnkgcm93IHRoZSBmaWx0ZXJzIGtlZXAsIHdpdGhvdXQgZ3JvdXBpbmcsIGFuZCBhIGNyb3NzLXRhYiB0b3RhbHNcbiAgLy8gZWFjaCBjb2x1bW4uXG4gIHRvdGFscz86IGJvb2xlYW47XG4gIC8vIEEgY3Jvc3MtdGFiIG9ubHk6IGhvdyBldmVyeSBjZWxsIG9mIHRoZSBncmlkIGlzIGZvcm1hdHRlZCwgd2l0aCBhIEtQSVxuICAvLyBtZWFzdXJlJ3Mga2V5cy4gVGhlIHJvdyBrZXkgY29sdW1uIHN0YXlzIGFzIGl0IGNhbWUuXG4gIGNlbGxGb3JtYXQ/OiBOdW1iZXJGb3JtYXRTcGVjICYgeyBmb3JtYXQ/OiBSZXBvcnRWYWx1ZUZvcm1hdCB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtwaUNvbmZpZyB7XG4gIG1lYXN1cmU/OiBDaGFydE1lYXN1cmU7XG4gIC8vIFdoZXRoZXIgYSByaXNlIGluIHRoZSB2YWx1ZSBpcyBnb29kIG5ld3MsIGJhZCBuZXdzIG9yIG5laXRoZXI6IGl0IHBpY2tzXG4gIC8vIHRoZSBkZWx0YSdzIGNvbG9yIGFuZCBkZWNpZGVzIHdoZW4gYSB0YXJnZXQgaXMgbWV0IChnb29kOiBhdCBvciBhYm92ZSBpdDtcbiAgLy8gYmFkOiBhdCBvciBiZWxvdyBpdDsgbmV1dHJhbDogbmV2ZXIganVkZ2VkKS4gT21pdHRlZCBvciBudWxsIHJlYWRzIGdvb2QuXG4gIGluY3JlYXNlSXM/OiBSZXBvcnRDaGFuZ2VQb2xhcml0eSB8IG51bGw7XG4gIC8vIEEgbnVtYmVyIHRoZSB1c2VyIGdhdmUgZm9yIHRoZSB2YWx1ZSB0byByZWFjaCwgbmV2ZXIgb25lIHJlYWQgb2ZmIHRoZVxuICAvLyBkYXRhLiBUaGUgc2VydmVyIHNlbmRzIHRoZSBwcm9ncmVzcyB0b3dhcmQgaXQgd2l0aCB0aGUgZGF0YS5cbiAgdGFyZ2V0PzogS3BpVGFyZ2V0Q29uZmlnIHwgbnVsbDtcbiAgLy8gQSBzbWFsbCB0cmVuZCBsaW5lIG9mIHRoZSB2YWx1ZSBvdmVyIGl0cyBsYXN0IHBlcmlvZHMsIGRyYXduIHVuZGVyIGl0LlxuICBzcGFya2xpbmU/OiBLcGlTcGFya2xpbmVDb25maWcgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHRhcmdldDogdGhlIHZhbHVlLCBhbmQgYW4gb3B0aW9uYWwgY2FwdGlvbiBmb3IgaXQgKCdHb2FsJykuXG5leHBvcnQgaW50ZXJmYWNlIEtwaVRhcmdldENvbmZpZyB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSBLUEkncyBzcGFya2xpbmU6IGhvdyB3aWRlIGVhY2ggcG9pbnQncyBwZXJpb2QgaXMgKG51bGwgcmVhZHMgbW9udGgpIGFuZFxuLy8gaG93IG1hbnkgcGVyaW9kcyBpdCBkcmF3cywgMiB0byA2MCAobnVsbCByZWFkcyAxMikuXG5leHBvcnQgaW50ZXJmYWNlIEtwaVNwYXJrbGluZUNvbmZpZyB7XG4gIGdyYW51bGFyaXR5PzogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIHBlcmlvZHM/OiBudW1iZXIgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNvcnQge1xuICBjb2x1bW46IHN0cmluZztcbiAgZGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCB0eXBlIFJlcG9ydEZpbHRlclR5cGUgPSAnZGF0ZVJhbmdlJyB8ICdzZWxlY3QnIHwgJ2tleXdvcmQnIHwgJ251bWJlclJhbmdlJztcblxuLy8gV2hlcmUgYSBmaWx0ZXIgZ3JvdXAncyBjb250cm9sIGlzIGV4cG9zZWQuIEEgZ3JvdXAgY2FuIGJlIHNob3duIG9uIGl0c1xuLy8gY29tcG9uZW50cywgaW4gdGhlIHJlcG9ydCBiYXIsIG9yIEJPVEggYXQgb25jZSAodGhlIHR3byBhcmUgaW5kZXBlbmRlbnRcbi8vIHRvZ2dsZXMgaW4gdGhlIFVJKTsgYSBjb2x1bW4gd2l0aCBuZWl0aGVyIGV4cG9zZWQgc2ltcGx5IGhhcyBubyBmaWx0ZXIuXG4vLyAncGFnZScgc2hvd3MgaXQgaW4gdGhlIHJlcG9ydCBiYXIgb2Ygb25lIHBhZ2Ugb25seSAoUmVwb3J0RmlsdGVyR3JvdXAucGFnZUlkKS5cbmV4cG9ydCB0eXBlIFJlcG9ydEZpbHRlckxldmVsID0gJ2NvbXBvbmVudCcgfCAncmVwb3J0JyB8ICdib3RoJyB8ICdwYWdlJztcblxuLy8gT25lIGZpbHRlcmFibGUgb3V0cHV0IGNvbHVtbiBvZiBhIGNvbXBvbmVudCdzIFNRTCwgd2l0aCB0aGUgZmlsdGVyIGludGVyZmFjZVxuLy8gSU5GRVJSRUQgZnJvbSBpdHMgZGF0YSAodGhlIGh1bWFuIG5ldmVyIHBpY2tzIHRoZSBpbnRlcmZhY2Ug4oCUIGl0IGZvbGxvd3MgdGhlXG4vLyBjb2x1bW4ncyB0eXBlKS4gRHJpdmVzIHRoZSBGaWx0ZXJzIHRhYiBsaXN0aW5nLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXJhYmxlQ29sdW1uIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIHR5cGU6IFJlcG9ydEZpbHRlclR5cGU7XG4gIC8vIEV2ZXJ5IGludGVyZmFjZSB0aGUgY29sdW1uIGNhbiB0YWtlLCB0aGUgaW5mZXJyZWQgb25lICh0eXBlKSBmaXJzdDogYVxuICAvLyBudW1lcmljIGNvbHVtbiB0YWtlcyBbJ3NlbGVjdCcsICdudW1iZXJSYW5nZSddLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycy5cbiAgdHlwZXM/OiBSZXBvcnRGaWx0ZXJUeXBlW107XG59XG5cbi8vIEdyb3VuZCB0cnV0aDogb25lIGZpbHRlcmFibGUgb3V0cHV0IGNvbHVtbiBPTiBvbmUgY29tcG9uZW50J3MgU1FMLiBBbHdheXMgYVxuLy8gbWVtYmVyIG9mIGEgZmlsdGVyIGdyb3VwIOKAlCB0aGUgdW5pdCB0aGF0IGxpbmtzIGVxdWl2YWxlbnQgZmlsdGVycyBhY3Jvc3Ncbi8vIGNvbXBvbmVudHMgYW5kIGRlY2lkZXMgd2hlcmUgdGhlIGNvbnRyb2wgcmVuZGVycyAoY29tcG9uZW50IHZzIHJlcG9ydCBiYXIpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXIge1xuICBpZDogbnVtYmVyO1xuICBjb21wb25lbnRJZDogbnVtYmVyO1xuICBmaWx0ZXJHcm91cElkOiBudW1iZXI7XG4gIGZpbHRlckNvbHVtbjogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgaGFzT3B0aW9uczogYm9vbGVhbjtcbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLy8gT25lIGNob2ljZSBpbiBhIHNlbGVjdCBmaWx0ZXIncyBvcHRpb24gbGlzdC4gVGhlIHZhbHVlIGlzIHdoYXQgdGhlIGZpbHRlclxuLy8gbWF0Y2hlcyBvbiBhbmQgZ2V0cyBzdG9yZWQgaW4gYSBzYXZlZCBkZWZhdWx0IOKAlCBmb3IgYW4gZW50aXR5IHRoYXQgaXMgaXRzXG4vLyBzdGFibGUgaWQsIG5ldmVyIGl0cyBuYW1lLCBzbyByZW5hbWluZyB0aGUgZW50aXR5IG1vdmVzIHRoZSBsYWJlbCB3aXRob3V0XG4vLyBicmVha2luZyB0aGUgZGVmYXVsdC4gVGhlIGxhYmVsIGlzIG9ubHkgZXZlciB3aGF0IHRoZSB2aWV3ZXIgcmVhZHMuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlck9wdGlvbiB7XG4gIHZhbHVlOiB1bmtub3duO1xuICBsYWJlbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlckdyb3VwIHtcbiAgaWQ6IG51bWJlcjtcbiAgLy8gVGhlIGdyb3VwJ3MgaWRlbnRpZmllciwgdW5pcXVlIGluIHRoZSByZXBvcnQ6IGNhbWVsQ2FzZSwgYSBsZXR0ZXIgZmlyc3QsXG4gIC8vIHRoZW4gbGV0dGVycyBhbmQgZGlnaXRzLiBTZXQgYXBhcnQgZnJvbSB0aGUgbGFiZWw6IGEgbmV3IGxhYmVsIG5ldmVyXG4gIC8vIGNoYW5nZXMgaXQsIGFuZCBpdCBpcyBlZGl0ZWQgb24gaXRzIG93biAoUmVwb3J0IHNldHRpbmdzID4gRmlsdGVycykuXG4gIC8vIFRpbGVzIGFuZCBzYXZlZCB2aWV3cyBiaW5kIHRoZSBncm91cCBieSBpZCwgbmV2ZXIgYnkgbmFtZS4gT3B0aW9uYWxcbiAgLy8gYmVjYXVzZSBhbiBvbGRlciBzZXJ2ZXIgc2VuZHMgbm9uZS5cbiAgbmFtZT86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIHR5cGU6IFJlcG9ydEZpbHRlclR5cGU7XG4gIGxldmVsOiBSZXBvcnRGaWx0ZXJMZXZlbDtcbiAgb3JkZXI6IG51bWJlcjtcbiAgY29uZmlnOiB7IGRlZmF1bHQ/OiBGaWx0ZXJHcm91cERlZmF1bHQgfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmaWx0ZXJzOiBSZXBvcnRGaWx0ZXJbXTtcbiAgLy8gVGhlIHBhZ2Ugd2hvc2UgcmVwb3J0IGJhciBzaG93cyB0aGUgZ3JvdXA6IHNldCBvbmx5IHdoZW4gbGV2ZWwgaXMgJ3BhZ2UnLFxuICAvLyBudWxsIG90aGVyd2lzZS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMuXG4gIHBhZ2VJZD86IG51bWJlciB8IG51bGw7XG4gIC8vIFRoZSBjb21wb25lbnRzIG9mIHRoZSBncm91cCdzIGFjdGl2ZSwgZW5hYmxlZCBtZW1iZXJzIHRoYXQgYXJlIHRpbGVzXG4gIC8vIChjaGFydCwgbGlzdCwgS1BJKS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMuXG4gIGNvbXBvbmVudElkcz86IG51bWJlcltdO1xuICAvLyBUcnVlIHdoZW4gYW4gZW5hYmxlZCBtZW1iZXIgYmluZHMgc2V2ZXJhbCBjb2x1bW5zLCB3aGVyZSB2YWx1ZXMgY2Fubm90XG4gIC8vIGJlIGxlZnQgb3V0OiB0aGUgZ3JvdXAgb2ZmZXJzIG5vICdFeGNsdWRlIHRoZXNlJyAob2ZmZXJzRXhjbHVkZSkuIEFic2VudFxuICAvLyBvbiBvbGRlciBzZXJ2ZXJzLlxuICBtdWx0aUNvbHVtbj86IGJvb2xlYW47XG4gIC8vIEEgc2VsZWN0IGdyb3VwJ3MgbGFiZWwgZm9yIGEgYmxhbmsgcm93LCBudWxsIHdoZW4gYmxhbmsgcm93cyBoYXZlIG5vbmU6XG4gIC8vIGFuIGV4Y2x1ZGUgbGluZSBzYXlzIHdoZXRoZXIgdGhlIGJsYW5rIHJvd3MgYXJlIGtlcHQuIFNlbnQgZm9yIHNlbGVjdFxuICAvLyBncm91cHMgb25seSwgYW5kIGFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLlxuICBibGFua0xhYmVsPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSBmaWx0ZXIgZ3JvdXAncyB2YWx1ZSBpbiBpdHMgc3RvcmVkIHNoYXBlOiBpdHMgYXV0aG9yZWQgZGVmYXVsdCAodGhlIHZhbHVlXG4vLyB0aGF0IHNlZWRzIHRoZSByZXBvcnQgYmFyIG9uIGV2ZXJ5IG9wZW4pLCBhIHZhbHVlIHRoZSBhc3Npc3RhbnQgcnVucyBpdCBhdFxuLy8gYW5kIGl0cyB2YWx1ZSBpbiBhIHNhdmVkIHZpZXcuIFNoYXBlIGZvbGxvd3MgdGhlIGdyb3VwJ3MgdHlwZTogZGF0ZVJhbmdlXG4vLyB1c2VzIHN0YXJ0L2VuZCAoYSBmaXhlZCBjYWxlbmRhci1kYXkgcmFuZ2UpIG9yIGEgcmVsYXRpdmUgcHJlc2V0OyBzZWxlY3Rcbi8vIHVzZXMgdmFsdWVzIG9yIGV4Y2x1ZGVWYWx1ZXMsIG5ldmVyIGJvdGg7IGtleXdvcmQgdXNlcyB2YWx1ZTsgbnVtYmVyUmFuZ2Vcbi8vIHVzZXMgbWluIGFuZCBtYXguXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckdyb3VwRGVmYXVsdCB7XG4gIC8vIGRhdGVSYW5nZSByZWxhdGl2ZSBwcmVzZXQsIHJlc29sdmVkIG9uIGV2ZXJ5IG9wZW4gYWdhaW5zdCB0b2RheSBpbiB0aGVcbiAgLy8gcmVwb3J0J3MgZWZmZWN0aXZlIHpvbmUgKFJlcG9ydC5lZmZlY3RpdmVUaW1lem9uZSkuIE9uZSBvZjogdGhpc1dlZWssXG4gIC8vIGxhc3RXZWVrLCBsYXN0N0RheXMsIGxhc3QzMERheXMsIGxhc3QzTW9udGhzLCBsYXN0Nk1vbnRocywgbGFzdDEyTW9udGhzLFxuICAvLyB0aGlzTW9udGgsIHRoaXNRdWFydGVyLCB0aGlzWWVhci95ZWFyVG9EYXRlLiBXZWVrcyBydW4gTW9uZGF5IHRvIFN1bmRheSxcbiAgLy8gdGhlIHNhbWUgd2Vla3MgdGhlIHNlcnZlcidzIHdlZWtseSB0aW1lIGJ1Y2tldHMgdXNlLlxuICByZWxhdGl2ZT86IHN0cmluZztcbiAgc3RhcnQ/OiBzdHJpbmc7IC8vIGRhdGVSYW5nZSBmaXhlZCBzdGFydCAoeXl5eS1NTS1kZClcbiAgZW5kPzogc3RyaW5nOyAvLyBkYXRlUmFuZ2UgZml4ZWQgZW5kICh5eXl5LU1NLWRkKVxuICB2YWx1ZXM/OiB1bmtub3duW107IC8vIHNlbGVjdCBkZWZhdWx0IHBpY2tlZCB2YWx1ZXNcbiAgdmFsdWU/OiBzdHJpbmc7IC8vIGtleXdvcmQgZGVmYXVsdCB0ZXh0XG4gIC8vIHNlbGVjdDogdGhlIHZhbHVlcyB0byBsZWF2ZSBvdXQgKHJvd3Mgd2l0aCBhIGJsYW5rIHZhbHVlIGFyZSBrZXB0KS5cbiAgZXhjbHVkZVZhbHVlcz86IHVua25vd25bXTtcbiAgLy8gbnVtYmVyUmFuZ2U6IHRoZSBsb3cgYW5kIGhpZ2ggZW5kcywgZWl0aGVyIG9uZSBvcGVuIChhYnNlbnQpLiAwIGlzIGFuXG4gIC8vIGVuZCBsaWtlIGFueSBvdGhlci5cbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG59XG5cbi8vIFRoZSBzZXNzaW9uIHZhbHVlIG9mIGEgZmlsdGVyIGdyb3VwOiBzaGFwZSBkZXBlbmRzIG9uIHRoZSBncm91cCdzIHR5cGUuIE5vdFxuLy8gc3RvcmVkIG9uIHRoZSBzZXJ2ZXI6IGl0IGxpdmVzIGluIHRoZSBvcGVuIHJlcG9ydCdzIHN0YXRlXG4vLyAoUmVwb3J0RmlsdGVyU3RhdGVTZXJ2aWNlKSwgYW5kIGEgc2F2ZWQgdmlldyBrZWVwcyBpdC5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyR3JvdXBWYWx1ZSB7XG4gIHN0YXJ0PzogRGF0ZSB8IHN0cmluZyB8IG51bGw7IC8vIGRhdGVSYW5nZVxuICBlbmQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDsgLy8gZGF0ZVJhbmdlXG4gIHZhbHVlcz86IHVua25vd25bXTsgLy8gc2VsZWN0XG4gIHZhbHVlPzogc3RyaW5nOyAvLyBrZXl3b3JkXG4gIC8vIGRhdGVSYW5nZSBvbmx5OiB0aGUgcmVsYXRpdmUgcHJlc2V0IG5hbWUgdGhlc2UgZGF0ZXMgd2VyZSByZXNvbHZlZCBmcm9tXG4gIC8vIChhIEZpbHRlckdyb3VwRGVmYXVsdC5yZWxhdGl2ZSBuYW1lKS4gU2V0IG9ubHkgd2hlbiB0aGUgdmFsdWUgd2FzIHNlZWRlZFxuICAvLyBmcm9tIHRoZSBncm91cCdzIHJlbGF0aXZlIGRlZmF1bHQgb3Igb3BlbmVkIGZyb20gYSB2aWV3IHRoYXQga2VlcHMgb25lLFxuICAvLyBzbyB0aGUgcmFuZ2Uga2VlcHMgcm9sbGluZyAoJ2xhc3QzMERheXMnKSBpbnN0ZWFkIG9mIGZyZWV6aW5nIHR3byBkYXRlc1xuICAvLyAoYSB2aWV3IHNhdmVkIHdpdGggaXQga2VlcHMgdGhlIG5hbWUpLCBhbmQgdGhlIGRhdGEgcmVxdWVzdCBuYW1lcyB0aGVcbiAgLy8gcGVyaW9kIGl0IGNvdmVycyAoc2VlXG4gIC8vIFJlc29sdmVkRmlsdGVyVmFsdWUucHJlc2V0KS4gQW55IGRhdGUgcGlja2VkIGJ5IHRoZSB2aWV3ZXIsIGEgZGF0ZSBwaWNrZXJcbiAgLy8gcHJlc2V0IGluY2x1ZGVkLCBpcyBzdG9yZWQgd2l0aG91dCBpdC5cbiAgcHJlc2V0Pzogc3RyaW5nO1xuICAvLyBzZWxlY3Q6IHRoZSB2YWx1ZXMgdG8gbGVhdmUgb3V0LiBTd2l0Y2hpbmcgYSBzZWxlY3QgYmV0d2VlbiBrZWVwaW5nIGFuZFxuICAvLyBsZWF2aW5nIG91dCBtb3ZlcyBpdHMgbGlzdCBmcm9tIHZhbHVlcyB0byBleGNsdWRlVmFsdWVzLlxuICBleGNsdWRlVmFsdWVzPzogdW5rbm93bltdO1xuICAvLyBudW1iZXJSYW5nZTogdGhlIGxvdyBhbmQgaGlnaCBlbmRzOyBudWxsIG9yIGFic2VudCA9IG9wZW4uXG4gIG1pbj86IG51bWJlciB8IG51bGw7XG4gIG1heD86IG51bWJlciB8IG51bGw7XG59XG5cbi8vIEEgcmVsYXRpdmUgZGF0ZSByYW5nZSB0aGUgc2VydmVyIHJlc29sdmVzIGFnYWluc3QgdG9kYXkgaW4gdGhlIHJlcG9ydCdzXG4vLyB6b25lOiB0aGUgbmFtZXMgYSBGaWx0ZXJHcm91cERlZmF1bHQucmVsYXRpdmUgYW5kIGEgdGltZWZyYW1lJ3MgcmFuZ2UgdGFrZS5cbi8vIE1pcnJvcnMgdGhlIHNlcnZlcidzIFJlcG9ydFJlbGF0aXZlUmFuZ2VFbnVtIHZhbHVlIGZvciB2YWx1ZVxuLy8gKFJlcG9ydFJlbGF0aXZlUmFuZ2VFbnVtVGVzdCBwaW5zIHRoZSBkYXlzIGVhY2ggb25lIGNvdmVycykuXG5leHBvcnQgdHlwZSBSZXBvcnRSZWxhdGl2ZVJhbmdlID1cbiAgfCAndGhpc1dlZWsnXG4gIHwgJ2xhc3RXZWVrJ1xuICB8ICdsYXN0N0RheXMnXG4gIHwgJ2xhc3QzMERheXMnXG4gIHwgJ2xhc3QzTW9udGhzJ1xuICB8ICdsYXN0Nk1vbnRocydcbiAgfCAnbGFzdDEyTW9udGhzJ1xuICB8ICd0aGlzTW9udGgnXG4gIHwgJ3RoaXNRdWFydGVyJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAneWVhclRvRGF0ZSc7XG5cbi8vIE9uZSByZXNvbHZlZCBmaWx0ZXIgc2VudCB3aXRoIGEgY29tcG9uZW50J3MgZGF0YSByZXF1ZXN0LlxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZEZpbHRlclZhbHVlIHtcbiAgZmlsdGVySWQ6IG51bWJlcjtcbiAgc3RhcnQ/OiBzdHJpbmc7XG4gIGVuZD86IHN0cmluZztcbiAgdmFsdWVzPzogdW5rbm93bltdO1xuICB2YWx1ZT86IHN0cmluZztcbiAgLy8gZGF0ZVJhbmdlIG9ubHk6IHRoZSByZWxhdGl2ZSByYW5nZSBzdGFydCBhbmQgZW5kIHN0aWxsIGFyZSwgc2VudCBvbmx5XG4gIC8vIHdoaWxlIHRoZXkgYXJlIGV4YWN0bHkgdGhhdCByYW5nZSByZXNvbHZlZCB0b2RheSBpbiB0aGUgcmVwb3J0J3Mgem9uZS4gSXRcbiAgLy8gdGVsbHMgdGhlIHNlcnZlciB3aGljaCBwZXJpb2QgdGhlIGRheXMgY292ZXIgKG9uIHRoZSBmaXJzdCBkYXlzIG9mIGFcbiAgLy8gcXVhcnRlciwgdGhpc01vbnRoIGFuZCB0aGlzUXVhcnRlciBhcmUgdGhlIHNhbWUgZGF5cyksIHNvIGEgY29tcGFyaXNvblxuICAvLyBzaGlmdHMgYnkgdGhlIHJpZ2h0IHVuaXQuIHN0YXJ0IGFuZCBlbmQgc3RheSB0aGUgd2luZG93OyBhIHNlcnZlciB0aGF0XG4gIC8vIGRvZXMgbm90IGtub3cgdGhlIGtleSBpZ25vcmVzIGl0LlxuICBwcmVzZXQ/OiBSZXBvcnRSZWxhdGl2ZVJhbmdlO1xuICAvLyBzZWxlY3Q6IHRoZSB2YWx1ZXMgdG8gbGVhdmUgb3V0IChzZW50IGluc3RlYWQgb2YgdmFsdWVzKS5cbiAgZXhjbHVkZVZhbHVlcz86IHVua25vd25bXTtcbiAgLy8gbnVtYmVyUmFuZ2U6IHRoZSBsb3cgYW5kIGhpZ2ggZW5kczsgYW4gb3BlbiBlbmQgaXMgbGVmdCBvdXQsIDAgaXMgc2VudC5cbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG59XG5cbi8vIFBlci1jb21wb25lbnQgaW50ZXJhY3Rpb24gc3RhdGUgc2VudCB3aXRoIHRoZSBkYXRhIHJlcXVlc3Q6IGxpc3RzIHNlbmRcbi8vIHNvcnQvcGFnaW5nIGFuZCB0aGUgdGV4dCBpbiB0aGVpciBzZWFyY2ggYm94OyB0aW1lLXNlcmllcyBjaGFydHMgc2VuZCB0aGVcbi8vIGdyYWluIHBpY2tlZCBvbiB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBhdXRob3JlZFxuLy8gZ3JhbnVsYXJpdHkgZm9yIHRoYXQgcmVxdWVzdCBvbmx5LiBUaGUgd2lyZSBrZXkgc3RheXMgYGZyZXF1ZW5jeWAg4oCUIGl0IGlzIHRoZVxuLy8gYnVja2V0aW5nIGZyZXF1ZW5jeSB0aGUgc2VydmVyIGFwcGxpZXMuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGFTdGF0ZSB7XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBwYWdlPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgZnJlcXVlbmN5PzogQ2hhcnRHcmFudWxhcml0eTtcbiAgLy8gQSBsaXN0J3Mgc2VhcmNoIGJveCB0ZXh0LiBUaGUgc2VydmVyIHRyaW1zIGl0LCBjdXRzIGl0IHRvIGl0cyBvd24gbWF4aW11bVxuICAvLyBsZW5ndGggYW5kIG1hdGNoZXMgaXQgYWdhaW5zdCBldmVyeSB0ZXh0IGNvbHVtbiB0aGUgbGlzdCBzaG93cy5cbiAgc2VhcmNoPzogc3RyaW5nO1xuICAvLyBUaGUgY29uZmlnIGNvbHVtbiBuYW1lcyBhIHZpZXdlciBoaWQgb24gYSBwbGFpbiBsaXN0LiBTZW50IHdpdGggYSBDU1ZcbiAgLy8gZXhwb3J0IG9ubHkgKHRoZSBzY3JlZW4gaGlkZXMgdGhlbSBpdHNlbGYpOiB0aGUgZmlsZSBsZWF2ZXMgdGhlbSBvdXQuIFRoZVxuICAvLyBzZXJ2ZXIgaWdub3JlcyBpdCBvbiBhIGNyb3NzLXRhYiwgYW5kIHdoZW4gaXQgd291bGQgaGlkZSBldmVyeSBjb2x1bW4uXG4gIGhpZGRlbkNvbHVtbnM/OiBzdHJpbmdbXTtcbiAgLy8gQSBjaGFydCdzIGRyaWxsIHBhdGgsIHRvcCBmaXJzdC4gVGhlIGRyaWxsZWQgbGV2ZWwgd2lucyBvdmVyIGZyZXF1ZW5jeVxuICAvLyBmb3IgdGhpcyB0aWxlLlxuICBkcmlsbD86IFJlcG9ydERyaWxsU3RlcFtdO1xuICAvLyBXaGlsZSBtYXRjaCBpcyBhbnk6IHRoZSBlbGlnaWJsZSBncm91cHMgdGhhdCBoYXZlIGEgdmFsdWUuXG4gIG1hdGNoQW55R3JvdXBJZHM/OiBudW1iZXJbXTtcbiAgLy8gU2V0IG9ubHkgb24gYSByZXF1ZXN0IHNlbnQgYmVjYXVzZSB0aGUgY3Jvc3MtZmlsdGVyIGNoYW5nZWQsIGZvciBhIHRpbGVcbiAgLy8gd2hvc2UgbGFzdCByZWFkIGFwcGxpZWQgbm8gY3Jvc3MgZW50cnk6IHRoZSBzZXJ2ZXIgbWF5IGFuc3dlclxuICAvLyB1bmNoYW5nZWQgaW5zdGVhZCBvZiByZWFkaW5nIHRoZSByb3dzIGFnYWluLiBFeHBvcnRzIG5ldmVyIHNldCBpdC5cbiAgdW5jaGFuZ2VkSWZVbnJlYWNoZWQ/OiB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGEge1xuICBjb2x1bW5zOiBzdHJpbmdbXTtcbiAgcm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgcGFnaW5nPzogeyB0b3RhbDogbnVtYmVyOyBwYWdlOiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfTtcbiAgdHJ1bmNhdGVkOiBib29sZWFuO1xuICAvLyBUaGUgZWZmZWN0aXZlIHRpbWUgYnVja2V0IHRoZSByb3dzIHdlcmUgZ3JvdXBlZCBpbnRvIChhZnRlciBhbnkgZ3JvdXAtYnlcbiAgLy8gb3ZlcnJpZGUpLCBvciBudWxsIGZvciBhIG5vbi10aW1lIGF4aXMuIERyaXZlcyB0aGUgY29tcGFjdCB4LWF4aXMgbGFiZWxzLlxuICBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICAvLyBQYWdlIDEgb2YgYSBzZWFyY2hlZCBsaXN0IHdob3NlIHNlYXJjaCBjb3VsZCBub3QgYXBwbHkgKHRoZSBsaXN0IGhhcyBub1xuICAvLyB0ZXh0IGNvbHVtbiB0byBzZWFyY2gpOiB3aHkgdGhlIHJvd3MgYXJlIG5vdCBuYXJyb3dlZC4gQWJzZW50IG90aGVyd2lzZS5cbiAgc2VhcmNoTm90ZT86IHN0cmluZyB8IG51bGw7XG4gIC8vIFBhZ2UgMSBvZiBhIGxpc3Qgd2l0aCBjb25maWcudG90YWxzIG9uOiBpdHMgdG90YWxzIHJvdywgYXMgcmF3IHZhbHVlc1xuICAvLyBrZXllZCBsaWtlIHRoZSBjb2x1bW5zIChhIHBsYWluIGxpc3QncyBtZWFzdXJlIGFsaWFzZXM7IGEgY3Jvc3MtdGFiJ3NcbiAgLy8gcGl2b3QgY2VsbCBjb2x1bW5zLCB0aGUgcm93LWtleSBjb2x1bW4gYWJzZW50KSwgb3IgbnVsbCB3aXRoIHRvdGFsc05vdGVcbiAgLy8gc2F5aW5nIHdoeSB0aGVyZSBpcyBub25lLiBBYnNlbnQgb24gZXZlcnkgb3RoZXIgcGFnZSBhbmQgbGlzdC5cbiAgdG90YWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICB0b3RhbHNOb3RlPzogc3RyaW5nIHwgbnVsbDtcbiAgLy8gVGhlIHdpbmRvdyBvZiBkYXlzIHRoZSBjb21wb25lbnQgcmVhZHMsIHdoZW4gaXRzIHF1ZXJ5IGhhcyBhIHRpbWVmcmFtZS5cbiAgLy8gQWJzZW50IG90aGVyd2lzZSwgYW5kIGZyb20gb2xkZXIgc2VydmVycy5cbiAgdGltZWZyYW1lPzogQ29tcG9uZW50VGltZWZyYW1lIHwgbnVsbDtcbiAgLy8gVGhlIGN1cnJlbnQgYW5kIHByaW9yIHdpbmRvd3Mgb2YgYSBjb21wb25lbnQgd2hvc2UgbWVhc3VyZXMgY29tcGFyZVxuICAvLyBhZ2FpbnN0IGFuIGVhcmxpZXIgcGVyaW9kLiBBYnNlbnQgd2hlbiBubyBtZWFzdXJlIGNvbXBhcmVzLiBTZW50IG9uIGV2ZXJ5XG4gIC8vIGxpc3QgcGFnZSBhbmQgb24gY2hhcnQgYW5kIEtQSSBkYXRhLlxuICBjb21wYXJpc29uPzogQ29tcG9uZW50Q29tcGFyaXNvbiB8IG51bGw7XG4gIC8vIFdoYXQgZWFjaCBjb21wYXJlZCwgd2luZG93ZWQsIHJhbmtlZCBvciBzaGFyZWQgb3V0cHV0IGNvbHVtbiBpcywgYnkgYWxpYXMuXG4gIC8vIFBsYWluIG1lYXN1cmUgY29sdW1ucyBhcmUgbGVmdCBvdXQuXG4gIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBPdXRwdXRNZXRhPjtcbiAgLy8gQSBjcm9zcy10YWIgb25seTogdGhlIG1lYXN1cmUgYWxpYXMgZWFjaCBwaXZvdCBjZWxsIGNvbHVtbiBob2xkcywgc28gYVxuICAvLyBjZWxsIHRha2VzIGl0cyBtZWFzdXJlJ3Mgb3V0cHV0IG1lYW5pbmcuIE5ldmVyIHNlbnQgZm9yIGEgc3FsLW1vZGUgbGlzdC5cbiAgY2VsbE1lYXN1cmVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLy8gSG93IGVhY2ggd2luZG93ZWQgb3V0cHV0IGNvbHVtbiAocnVubmluZywgdG8tZGF0ZSBvciByb2xsaW5nKSB3YXNcbiAgLy8gY29tcHV0ZWQsIGJ5IGFsaWFzLlxuICB3aW5kb3dzPzogUmVjb3JkPHN0cmluZywgV2luZG93TWV0YT47XG4gIC8vIEEgS1BJIHdpdGggYSBjb21wYXJpc29uLCBhIHRhcmdldCBvciBhIHNwYXJrbGluZTogZXZlcnkgbnVtYmVyIHRoZSBjYXJkXG4gIC8vIHNob3dzIGJlc2lkZSBpdHMgdmFsdWUsIGRlY2lkZWQgYnkgdGhlIHNlcnZlci5cbiAga3BpPzogQ29tcG9uZW50S3BpIHwgbnVsbDtcbiAgLy8gVGhlIHRpbWUtYXhpcyB2YWx1ZSBvZiB0aGUgYnVja2V0IGNvbnRhaW5pbmcgdG9kYXksIHdyaXR0ZW4gYXMgdGhlIHJvd3NcbiAgLy8gd3JpdGUgaXQsIHdoZW4gdGhhdCBidWNrZXQgaXMgbm90IGZpbmlzaGVkIHlldDsgbnVsbCBvdGhlcndpc2UuIEEgY2hhcnRcbiAgLy8gbWFya3MgaXQgYXMgcGFydGlhbC5cbiAgcGFydGlhbFBlcmlvZD86IHN0cmluZyB8IG51bGw7XG4gIC8vIFdoaWNoIGZpbHRlcnMgdGhlIHJlYWQgYXBwbGllZC4gQWJzZW50IGZyb20gb2xkZXIgc2VydmVycy5cbiAgYXBwbGllZD86IENvbXBvbmVudERhdGFBcHBsaWVkO1xuICAvLyBBIGRyaWxsYWJsZSBjaGFydCdzIGRyaWxsIHN0YXRlLiBBYnNlbnQgb24gZXZlcnkgb3RoZXIgdGlsZSBhbmQgZnJvbVxuICAvLyBvbGRlciBzZXJ2ZXJzLlxuICBkcmlsbD86IENvbXBvbmVudERhdGFEcmlsbDtcbn1cblxuLy8gV2hlcmUgYSBjb21wb25lbnQncyB0aW1lZnJhbWUgd2luZG93IGNhbWUgZnJvbTogYSB2aWV3ZXIgZGF0ZVJhbmdlIGJvdW5kIHRvXG4vLyB0aGUgdGltZWZyYW1lIGNvbHVtbiAod2hpY2ggcmVwbGFjZXMgdGhlIGF1dGhvcmVkIHJhbmdlLCBuZXZlciBuYXJyb3dzXG4vLyBpdCksIHRoZSBhdXRob3JlZCByZWxhdGl2ZSByYW5nZSwgdGhlIGF1dGhvcmVkIGZpeGVkIGRheXMsIG9yIG5vdGhpbmcgKGFuXG4vLyBvcGVuIHdpbmRvdykuXG5leHBvcnQgdHlwZSBUaW1lZnJhbWVTb3VyY2UgPSAnZmlsdGVyJyB8ICdyYW5nZScgfCAnZml4ZWQnIHwgJ25vbmUnO1xuXG4vLyBUaGUgd2luZG93IGEgY29tcG9uZW50J3MgdGltZWZyYW1lIHJlc29sdmVkIHRvLiBzdGFydCBhbmQgZW5kIGFyZVxuLy8gaW5jbHVzaXZlICd5eXl5LU1NLWRkJyBkYXlzIGluIHRoZSByZXBvcnQncyB6b25lLCB3cml0dGVuIHdpdGhvdXQgYSB6b25lLlxuLy8gdGhyb3VnaCBpcyB0aGUgVVRDICd5eXl5LU1NLWRkIEhIOm1tOnNzJyBpbnN0YW50IGEgd2luZG93IG9uIGEgZGF0ZXRpbWVcbi8vIGNvbHVtbiBpcyBjdXQgYXQ7IGl0IHJlYWRzIGFzIGEgdGltZSBpbiB0aGUgcmVwb3J0IHpvbmUuIEl0IGlzIHNldCBvbmx5IHdoZW5cbi8vIGEgY29tcGFyaXNvbiBjdXRzIGEgd2luZG93IHRoYXQgZW5kcyB0b2RheTogYSB0aW1lZnJhbWUgb24gaXRzIG93biByZWFkc1xuLy8gd2hvbGUgZGF5cywgc28gYSB3aW5kb3cgZW5kaW5nIHRvZGF5IHdpdGhvdXQgYSBjb21wYXJpc29uIHNlbmRzIG51bGwuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFRpbWVmcmFtZSB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBzdGFydDogc3RyaW5nIHwgbnVsbDtcbiAgZW5kOiBzdHJpbmcgfCBudWxsO1xuICB0aHJvdWdoOiBzdHJpbmcgfCBudWxsO1xuICByYW5nZTogUmVwb3J0UmVsYXRpdmVSYW5nZSB8IG51bGw7XG4gIHNvdXJjZTogVGltZWZyYW1lU291cmNlO1xufVxuXG4vLyBIb3cgYSBjb21wYXJpc29uIGlzIGxhaWQgb3V0OiBvbmUgdmFsdWUgcGVyIHdpbmRvdyAocmFuZ2UpLCBhIHByaW9yIHNlcmllc1xuLy8gYmVzaWRlIGEgdGltZSBheGlzIChzZXJpZXMpLCBvciBlYWNoIHBlcmlvZCdzIHZhbHVlIHJlYWQgYXQgaXRzIGVuZCwgc2V0XG4vLyBhZ2FpbnN0IHRoZSB2YWx1ZSBhdCB0aGUgZW5kIG9mIGFuIGVhcmxpZXIgcGVyaW9kIChwZXJpb2RfZW5kKS5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25Nb2RlID0gJ3JhbmdlJyB8ICdzZXJpZXMnIHwgJ3BlcmlvZF9lbmQnO1xuXG4vLyB0b19kYXRlIGNvbXBhcmVzIGxpa2Ugd2l0aCBsaWtlICh0aGUgZmlyc3QgMiBkYXlzIG9mIGEgbW9udGggYWdhaW5zdCB0aGVcbi8vIGZpcnN0IDIgZGF5cyBvZiB0aGUgb25lIGJlZm9yZSk7IGZ1bGwgY29tcGFyZXMgd2hvbGUgcGVyaW9kcy5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25BbGlnbiA9ICd0b19kYXRlJyB8ICdmdWxsJztcblxuLy8gV2hhdCBhIG1lYXN1cmUgaXMgY29tcGFyZWQgYWdhaW5zdC4gTWlycm9ycyB0aGUgc2VydmVyJ3Ncbi8vIENvbXBhcmlzb25BZ2FpbnN0RW51bSB2YWx1ZSBmb3IgdmFsdWUuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uQWdhaW5zdCA9XG4gIHwgJ3ByZXZpb3VzX3BlcmlvZCdcbiAgfCAncHJldmlvdXNfd2VlaydcbiAgfCAncHJldmlvdXNfbW9udGgnXG4gIHwgJ3ByZXZpb3VzX3F1YXJ0ZXInXG4gIHwgJ3ByZXZpb3VzX3llYXInXG4gIHwgJ3JhbmdlJztcblxuLy8gV2h5IGEgY29tcGFyaXNvbiByZWFkcyBhcyBpdCBkb2VzLiBUaGUgc2VydmVyIHNlbmRzIGNvZGVzLCBuZXZlclxuLy8gc2VudGVuY2VzOyB0aGUgdmlld2VyIHdvcmRzIHRoZW0uXG4vLyAtIG5vX3dpbmRvdzogbm8gZGF0ZSByYW5nZSB0byBjb21wYXJlIHlldDtcbi8vIC0gdW5pdF9pbmZlcnJlZDogdGhlIHBlcmlvZCB1bml0IHdhcyBpbmZlcnJlZCBmcm9tIHRoZSBkYXlzLCBub3QgbmFtZWQ7XG4vLyAtIHdpbmRvd19pbl9mdXR1cmU6IHRoZSB3aW5kb3cgc3RhcnRzIGFmdGVyIHRvZGF5O1xuLy8gLSBvdGhlcl9kYXRlX2ZpbHRlcjogYSBkYXRlIGZpbHRlciBvbiBhbm90aGVyIGNvbHVtbiBhbHNvIGFwcGxpZXM7XG4vLyAtIGdyYWluX2ZvbGxvd2VkOiB0aGUgcHJpb3IgZm9sbG93cyB0aGUgZ3JvdXAtYnkgZ3JhaW4gcGlja2VkIG9uIHRoZSByZXBvcnQuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uTm90ZUNvZGUgPVxuICB8ICdub193aW5kb3cnXG4gIHwgJ3VuaXRfaW5mZXJyZWQnXG4gIHwgJ3dpbmRvd19pbl9mdXR1cmUnXG4gIHwgJ290aGVyX2RhdGVfZmlsdGVyJ1xuICB8ICdncmFpbl9mb2xsb3dlZCc7XG5cbi8vIE9uZSBjb21wYXJpc29uIHdpbmRvdzogaW5jbHVzaXZlICd5eXl5LU1NLWRkJyBkYXlzIGluIHRoZSByZXBvcnQncyB6b25lLFxuLy8gYW5kIHRoZSBVVEMgaW5zdGFudCBpdCBpcyBjdXQgYXQgd2hlbiBpdCBlbmRzIHRvZGF5IG9uIGEgZGF0ZXRpbWUgY29sdW1uLlxuLy8gSW4gc2VyaWVzIG1vZGUgaXQgaXMgdGhlIHNwYW4gdGhlIGNoYXJ0IHNob3dzLlxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uV2luZG93IHtcbiAgc3RhcnQ6IHN0cmluZztcbiAgZW5kOiBzdHJpbmc7XG4gIHRocm91Z2g6IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIEhvdyBmYXIgYmFjayBvbmUgcHJpb3IgbGFuZSBzaXRzLiBBIGN1c3RvbSByYW5nZSBoYXMgbm8gdW5pdCBvciBjb3VudCwgYW5kXG4vLyBuZWl0aGVyIGRvZXMgcHJldmlvdXNfcGVyaW9kIHdoZW4gdGhlcmUgaXMgbm8gY3VycmVudCB3aW5kb3cgdG8gbWVhc3VyZVxuLy8gKG5vX3dpbmRvdywgd2luZG93X2luX2Z1dHVyZSk7IGEgc2hpZnQgYnkgdGhlIHdpbmRvdydzIGxlbmd0aCBpcyB1bml0IGRheVxuLy8gd2l0aCB0aGUgbGVuZ3RoIGFzIHRoZSBjb3VudDsgYSBwcmV2aW91cyB5ZWFyIGlzIDM2NCBkYXlzIG9uIGEgZGF5IGF4aXMgYW5kXG4vLyA1MiB3ZWVrcyBvbiBhIHdlZWsgYXhpcy5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFyaXNvbk9mZnNldCB7XG4gIGFnYWluc3Q6IENvbXBhcmlzb25BZ2FpbnN0O1xuICB1bml0OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgY291bnQ6IG51bWJlciB8IG51bGw7XG59XG5cbi8vIEEgY29tcG9uZW50J3MgY29tcGFyaXNvbjogdGhlIHpvbmUgaXRzIGRheXMgYXJlIGluLCB0aGUgY3VycmVudCB3aW5kb3dcbi8vIChudWxsIHdoZW4gdGhlcmUgaXMgbm8gd2luZG93IHRvIGNvbXBhcmUgeWV0LCBvciB3aGVuIGEgdGltZSBheGlzIHJ1bnNcbi8vIG92ZXIgYWxsIHRoZSBkYXRhLCB3aGljaCBoYXMgbm8gZmlyc3QgZGF5IHRvIG5hbWUpIGFuZCB1cCB0byAyIHByaW9yXG4vLyBsYW5lczogb2Zmc2V0c1tpXSBkZXNjcmliZXMgbGFuZSBpICsgMSwgYW5kIHByaW9yc1tpXSBpdHMgd2luZG93LiBXaXRoIG5vXG4vLyBjdXJyZW50IHdpbmRvdyBwcmlvcnMgaXMgZW1wdHksIHdoaWxlIG9mZnNldHMgc3RpbGwgbmFtZXMgZXZlcnkgbGFuZS5cbi8vIGZsb29yIGlzIHRoZSAneXl5eS1NTS1kZCcgZGF5IG9mIHRoZSBmaXJzdCByb3cgdGhlIHF1ZXJ5J3Mgb3duIGNvbmRpdGlvbnNcbi8vIGtlZXAgKHZpZXdlciBmaWx0ZXJzIGFzaWRlKTogYSBwcmlvciB3aW5kb3cgd2hvbGx5IGJlZm9yZSBpdCBoYXMgbm8gZGF0YVxuLy8gcmF0aGVyIHRoYW4gYSB6ZXJvLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRDb21wYXJpc29uIHtcbiAgbW9kZTogQ29tcGFyaXNvbk1vZGU7XG4gIHRpbWV6b25lOiBzdHJpbmc7XG4gIGFsaWduOiBDb21wYXJpc29uQWxpZ247XG4gIGN1cnJlbnQ6IENvbXBhcmlzb25XaW5kb3cgfCBudWxsO1xuICBwcmlvcnM6IENvbXBhcmlzb25XaW5kb3dbXTtcbiAgb2Zmc2V0czogQ29tcGFyaXNvbk9mZnNldFtdO1xuICBmbG9vcjogc3RyaW5nIHwgbnVsbDtcbiAgbm90ZXM6IENvbXBhcmlzb25Ob3RlQ29kZVtdO1xufVxuXG4vLyBXaGF0IGFuIG91dHB1dCBjb2x1bW4gaG9sZHM6IGEgbWVhc3VyZSdzIHZhbHVlLCBpdHMgcmFuayBvciBpdHMgc2hhcmUuXG5leHBvcnQgdHlwZSBPdXRwdXRLaW5kID0gJ3ZhbHVlJyB8ICdyYW5rJyB8ICdzaGFyZSc7XG5cbi8vIFdoaWNoIHNpZGUgb2YgYSBjb21wYXJpc29uIGFuIG91dHB1dCBjb2x1bW4gaXM6IHRoZSBjdXJyZW50IHZhbHVlLCB0aGVcbi8vIHByaW9yIG9uZSwgdGhlaXIgZGlmZmVyZW5jZSwgb3IgdGhlIGRpZmZlcmVuY2UgYXMgYSAwLTEgZnJhY3Rpb24gb2YgdGhlXG4vLyBwcmlvci4gbnVsbCBmb3IgYW4gb3V0cHV0IHRoYXQgaXMgbm90IGNvbXBhcmVkLlxuZXhwb3J0IHR5cGUgT3V0cHV0Um9sZSA9ICdjdXJyZW50JyB8ICdwcmlvcicgfCAnY2hhbmdlJyB8ICdwZXJjZW50X2NoYW5nZSc7XG5cbi8vIEhvdyB0aWVkIHZhbHVlcyByYW5rOiAxLCAxLCAzIChjb21wZXRpdGlvbikgb3IgMSwgMSwgMiAoZGVuc2UpLlxuZXhwb3J0IHR5cGUgT3V0cHV0UmFua01ldGhvZCA9ICdjb21wZXRpdGlvbicgfCAnZGVuc2UnO1xuXG4vLyBBIHJhbmsgb3V0cHV0OiBob3cgdGllcyByYW5rLCB3aGljaCBlbmQgcmFua3MgMSAoZGVzYzogdGhlIGxhcmdlc3QpLCBhbmRcbi8vIHRoZSBkaW1lbnNpb24gb3V0cHV0cyBpdCByZXN0YXJ0cyB3aXRoaW4gKG5vbmU6IHRoZSB3aG9sZSByZXN1bHQpLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRSYW5rIHtcbiAgbWV0aG9kOiBPdXRwdXRSYW5rTWV0aG9kO1xuICBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnO1xuICB3aXRoaW46IHN0cmluZ1tdO1xufVxuXG4vLyBBIHNoYXJlIG91dHB1dDogdGhlIGRpbWVuc2lvbiBvdXRwdXRzIHdob3NlIHRvdGFsIGl0IGlzIGEgc2hhcmUgb2YgKG5vbmU6XG4vLyB0aGUgd2hvbGUgcmVzdWx0KS5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0U2hhcmUge1xuICB3aXRoaW46IHN0cmluZ1tdO1xufVxuXG4vLyBUaGUgbWVhbmluZyBvZiBvbmUgY29tcGFyZWQsIHdpbmRvd2VkLCByYW5rZWQgb3Igc2hhcmVkIG91dHB1dCBjb2x1bW4uXG4vLyBtZWFzdXJlIGlzIHRoZSBzb3VyY2UgbWVhc3VyZSdzIGFsaWFzLCB3aG9zZSBmb3JtYXQgdGhlIGNvbHVtbiBpbmhlcml0cztcbi8vIG9mZnNldCBpcyB0aGUgcHJpb3IgbGFuZSBhIHByaW9yLCBjaGFuZ2Ugb3IgcGVyY2VudCBjaGFuZ2UgYmVsb25ncyB0byAoaXRzXG4vLyB3aW5kb3cgaXMgY29tcGFyaXNvbi5wcmlvcnNbb2Zmc2V0IC0gMV0pLiBVbmxlc3MgdGhlIGNvbmZpZyBmb3JtYXRzIGl0LCBhXG4vLyBzaGFyZSBwcmludHMgYXMgYSBwZXJjZW50IHRvIDEgZGVjaW1hbCBhbmQgYSByYW5rIGFzIGEgd2hvbGUgbnVtYmVyLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRNZXRhIHtcbiAgbWVhc3VyZTogc3RyaW5nO1xuICBraW5kOiBPdXRwdXRLaW5kO1xuICByb2xlOiBPdXRwdXRSb2xlIHwgbnVsbDtcbiAgb2Zmc2V0OiBudW1iZXIgfCBudWxsO1xuICB3aW5kb3c6IGJvb2xlYW47XG4gIHJhbms6IE91dHB1dFJhbmsgfCBudWxsO1xuICBzaGFyZTogT3V0cHV0U2hhcmUgfCBudWxsO1xufVxuXG4vLyBBIHdpbmRvdyBvdmVyIHRoZSByb3dzOiBhIHJ1bm5pbmcgdG90YWwsIGEgdG90YWwgdG8gZGF0ZSB3aXRoaW4gZWFjaFxuLy8gcGVyaW9kIChtb250aCB0byBkYXRlKSwgb3IgYSByb2xsaW5nIHNwYW4gb2YgcGVyaW9kcy5cbmV4cG9ydCB0eXBlIFdpbmRvd0tpbmQgPSAncnVubmluZycgfCAndG9fZGF0ZScgfCAncm9sbGluZyc7XG5cbi8vIFdoeSBhIHdpbmRvdyByZWFkcyBhcyBpdCBkb2VzLiBDb2RlcyBvbmx5OyB0aGUgdmlld2VyIHdvcmRzIHRoZW0uXG5leHBvcnQgdHlwZSBXaW5kb3dOb3RlQ29kZSA9XG4gIHwgJ3NuYXBwZWRfc3RhcnQnXG4gIHwgJ3NwYW5fY29udmVydGVkJ1xuICB8ICdncmFpbl90b29fY29hcnNlJ1xuICB8ICdlcXVhbF9ncmFpbl9wbGFpbidcbiAgfCAnb3duX2ZpbHRlcl9jYXBzX2xlYWRfaW4nXG4gIHwgJ3dlZWtfYnlfbW9uZGF5J1xuICB8ICdpbmNvbXBsZXRlX2hlYWQnO1xuXG4vLyBIb3cgb25lIHdpbmRvd2VkIG91dHB1dCBjb2x1bW4gd2FzIGNvbXB1dGVkLiBwZXJpb2RzIGFuZCB1bml0IHNpemUgYVxuLy8gcm9sbGluZyB3aW5kb3cgKGRyYXduUGVyaW9kcyBpcyB0aGF0IHNwYW4gY291bnRlZCBpbiB0aGUgZ3JhaW4gdGhlIHJvd3Ncbi8vIGFyZSBkcmF3biBhdCk7IHJlc2V0RXZlcnkgcmVzdGFydHMgYSB0by1kYXRlIHdpbmRvdzsgYXZlcmFnZSBtYWtlcyB0aGVcbi8vIHdpbmRvdyBhbiBhdmVyYWdlIHJhdGhlciB0aGFuIGEgdG90YWw7IGZyb21CZWdpbm5pbmdcbi8vIHJ1bnMgYSB0b3RhbCBmcm9tIHRoZSBmaXJzdCByb3cgZXZlciByYXRoZXIgdGhhbiBmcm9tIHRoZSBmaXJzdCByb3cgc2hvd24uXG4vLyBzdGFydCwgZW5kIGFuZCBsZWFkSW4gYXJlICd5eXl5LU1NLWRkJyByZXBvcnQtem9uZSBkYXlzOiB0aGUgcm93cyBzaG93bixcbi8vIGFuZCB0aGUgZWFybGllciBkYXkgdGhlIHdpbmRvdyByZWFkcyBmcm9tIHNvIGl0cyBmaXJzdCByb3dzIGFyZSB3aG9sZS5cbi8vIGRlc2NyaXB0aW9uIGlzIHRoZSBzZXJ2ZXIncyBFbmdsaXNoIGZvciB0aGUgYWdlbnQgYW5kIHRoZSBleHBvcnRzOyB0aGVcbi8vIHZpZXdlciBjb21wb3NlcyBpdHMgb3duIHdvcmRzIGZyb20gdGhlIGZpZWxkcy5cbmV4cG9ydCBpbnRlcmZhY2UgV2luZG93TWV0YSB7XG4gIGtpbmQ6IFdpbmRvd0tpbmQ7XG4gIHBlcmlvZHM6IG51bWJlciB8IG51bGw7XG4gIHVuaXQ6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBkcmF3blBlcmlvZHM6IG51bWJlciB8IG51bGw7XG4gIHJlc2V0RXZlcnk6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBhdmVyYWdlOiBib29sZWFuO1xuICBmcm9tQmVnaW5uaW5nOiBib29sZWFuO1xuICBkYXRlQ29sdW1uOiBzdHJpbmcgfCBudWxsO1xuICBzdGFydDogc3RyaW5nIHwgbnVsbDtcbiAgZW5kOiBzdHJpbmcgfCBudWxsO1xuICBsZWFkSW46IHN0cmluZyB8IG51bGw7XG4gIG5vdGVzOiBXaW5kb3dOb3RlQ29kZVtdO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG4vLyBXaGljaCBkZWx0YSBhIEtQSSBjYXJkIHNob3dzOiB0aGUgZGlmZmVyZW5jZSwgb3IgdGhlIHBlcmNlbnQgY2hhbmdlLlxuZXhwb3J0IHR5cGUgS3BpRGVsdGFTaG93ID0gJ2NoYW5nZScgfCAncGVyY2VudF9jaGFuZ2UnO1xuXG4vLyBXaHkgYSBLUEkncyBkZWx0YSByZWFkcyBhcyBpdCBkb2VzOlxuLy8gLSBub19wcmlvcl9kYXRhOiB0aGUgcHJpb3Igd2luZG93IGhhcyBubyB2YWx1ZTtcbi8vIC0gdXBfZnJvbV96ZXJvOiB0aGUgcHJpb3Igd2FzIDAsIHNvIHRoZXJlIGlzIG5vIHBlcmNlbnQgY2hhbmdlO1xuLy8gLSBub19jaGFuZ2U6IGJvdGggYXJlIDA7XG4vLyAtIG5vX2RhdGFfZWl0aGVyOiBuZWl0aGVyIHdpbmRvdyBoYXMgYSB2YWx1ZTtcbi8vIC0gc2lnbl9jaGFuZ2U6IHRoZSB2YWx1ZSBjcm9zc2VkIHplcm8sIHNvIHRoZXJlIGlzIG5vIHBlcmNlbnQgY2hhbmdlLlxuZXhwb3J0IHR5cGUgS3BpTm90ZUNvZGUgPVxuICB8ICdub19wcmlvcl9kYXRhJ1xuICB8ICd1cF9mcm9tX3plcm8nXG4gIHwgJ25vX2NoYW5nZSdcbiAgfCAnbm9fZGF0YV9laXRoZXInXG4gIHwgJ3NpZ25fY2hhbmdlJztcblxuLy8gQSBLUEkncyBwcm9ncmVzcyB0b3dhcmQgaXRzIGNvbmZpZ3VyZWQgdGFyZ2V0LiBwcm9ncmVzcyBpcyB2YWx1ZSAvIHRhcmdldFxuLy8gKG51bGwgd2hlbiB0aGUgdGFyZ2V0IGlzIDApOyBtZXQgZm9sbG93cyB0aGUgY29uZmlnJ3MgaW5jcmVhc2VJcyAobnVsbFxuLy8gd2hlbiBpdCBpcyBuZXV0cmFsKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpVGFyZ2V0IHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIHByb2dyZXNzOiBudW1iZXIgfCBudWxsO1xuICBtZXQ6IGJvb2xlYW4gfCBudWxsO1xufVxuXG4vLyBPbmUgc3BhcmtsaW5lIHBvaW50OiB0aGUgcGVyaW9kLCB3cml0dGVuIGFzIGEgdGltZS1heGlzIHZhbHVlLCBhbmQgdGhlXG4vLyB2YWx1ZSBpbiBpdCAobnVsbCB3aGVuIGEgbm9uLWFkZGl0aXZlIG1lYXN1cmUgaGFzIG5vIHJvd3MgdGhlcmUpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGlTcGFya2xpbmVQb2ludCB7XG4gIHBlcmlvZDogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gQSBLUEkncyBzcGFya2xpbmUgcG9pbnRzLCBvbGRlc3QgZmlyc3QuIHBhcnRpYWwgc2F5cyB0aGUgbGFzdCBwZXJpb2QgaXNcbi8vIG5vdCBmaW5pc2hlZCB5ZXQuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaVNwYXJrbGluZSB7XG4gIGdyYW51bGFyaXR5OiBDaGFydEdyYW51bGFyaXR5O1xuICBwYXJ0aWFsOiBib29sZWFuO1xuICBwb2ludHM6IENvbXBvbmVudEtwaVNwYXJrbGluZVBvaW50W107XG59XG5cbi8vIEV2ZXJ5IG51bWJlciBhIEtQSSBjYXJkIHNob3dzIGJlc2lkZSBpdHMgdmFsdWUuIHNob3cgbmFtZXMgdGhlIGRlbHRhIHRvXG4vLyBwcmludCwgZGVjaWRlZCBieSB0aGUgc2VydmVyLiBXaGVuIHZhbHVlIGlzIG51bGwgdGhlIGNhcmQgc2hvd3MgYSBkYXNoIGFuZFxuLy8gbm8gY29tcGFyaXNvbi5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpIHtcbiAgdmFsdWU6IG51bWJlciB8IG51bGw7XG4gIHByaW9yOiBudW1iZXIgfCBudWxsO1xuICBjaGFuZ2U6IG51bWJlciB8IG51bGw7XG4gIHBlcmNlbnRDaGFuZ2U6IG51bWJlciB8IG51bGw7XG4gIHNob3c6IEtwaURlbHRhU2hvdztcbiAgbm90ZTogS3BpTm90ZUNvZGUgfCBudWxsO1xuICB0YXJnZXQ6IENvbXBvbmVudEtwaVRhcmdldCB8IG51bGw7XG4gIHNwYXJrbGluZTogQ29tcG9uZW50S3BpU3BhcmtsaW5lIHwgbnVsbDtcbn1cblxuLy8gQSBjb21wb25lbnQncyBDU1YgZXhwb3J0OiB0aGUgcHJlc2lnbmVkIGRvd25sb2FkIFVSTCwgcGx1cyBvbmUgc2VudGVuY2UgcGVyXG4vLyB3YXkgdGhlIGZpbGUgZmFsbHMgc2hvcnQgb2YgdGhlIGZ1bGwgcmVzdWx0IChjdXQgYXQgdGhlIGV4cG9ydCBjZWlsaW5nLCBvclxuLy8gY3V0IGFzIHRoZSBjaGFydCBpdHNlbGYgaXMpLiBFbXB0eSB3aGVuIHRoZSBmaWxlIGlzIGNvbXBsZXRlLiBPcHRpb25hbFxuLy8gYmVjYXVzZSBhIHNlcnZlciBvbiBhbiBvbGRlciBmcmFtZXdvcmsgYW5zd2VycyB3aXRoIHRoZSB1cmwgYWxvbmUuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEV4cG9ydFJlc3BvbnNlIHtcbiAgdXJsOiBzdHJpbmc7XG4gIG5vdGVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TGlzdEl0ZW0ge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIG1vZGlmeURhdGU6IHN0cmluZztcbiAgc3RhdGU/OiBSZXBvcnRTdGF0ZTtcbiAgLy8gVGhlIGZvbGRlciB0aGUgcmVwb3J0IGlzIGZpbGVkIHVuZGVyLiBudWxsIGlzIGEgcmVhbCwgY29tbW9uIHZhbHVlIOKAlCB0aGVcbiAgLy8gcmVwb3J0IHNpdHMgYXQgdGhlIHJvb3Qgb2YgdGhlIGxpc3RpbmcgdHJlZSBhbG9uZ3NpZGUgdGhlIGZvbGRlcnMuXG4gIC8vXG4gIC8vIE9wdGlvbmFsIGxpa2UgYHN0YXRlYCBiZXNpZGUgaXQ6IHRoZSBiYWNrZW5kIGFsd2F5cyBzZW5kcyBpdCwgYnV0IG1ha2luZyBpdFxuICAvLyByZXF1aXJlZCBpcyBhIGJyZWFraW5nIHR5cGUgY2hhbmdlIGZvciBldmVyeSBjb25zdW1lciBob2xkaW5nIGFcbiAgLy8gUmVwb3J0TGlzdEl0ZW0gbGl0ZXJhbCAoZml4dHVyZXMsIG1vY2tzKSBhbmQgYnV5cyBub3RoaW5nIOKAlCB0aGUgbGlzdGluZ1xuICAvLyByZWFkcyBpdCBhcyBgPz8gbnVsbGAgZWl0aGVyIHdheS5cbiAgcmVwb3J0Rm9sZGVySWQ/OiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBPbmUgZm9sZGVyIGluIHRoZSBsaXN0aW5nIHRyZWUg4oCUIGFuIGF1ZGllbmNlIGJ1Y2tldCAoXCJNYW5hZ2VtZW50XCIsXG4vLyBcIk9wZXJhdGlvbnNcIikgcmVwb3J0cyBhcmUgZmlsZWQgaW50by4gRm9sZGVycyBuZXN0IHZpYSBwYXJlbnRSZXBvcnRGb2xkZXJJZDtcbi8vIHJlcG9ydHMgbmV2ZXIgZG8sIHNvIHRoZSB0cmVlJ3Mgb25seSBicmFuY2ggbm9kZXMgYXJlIGZvbGRlcnMuXG4vL1xuLy8gYHN0YXRlYCBpcyB0aGUgZm9sZGVyJ3MgT1dOIHN0YXRlLiBEZWxldGluZyBhIGZvbGRlciB3cml0ZXMgb25seSB0aGF0LCBhbmRcbi8vIGV2ZXJ5dGhpbmcgYmVsb3cgaXQgY291bnRzIGFzIGRlbGV0ZWQgYnkgcG9zaXRpb24g4oCUIHNlZSBSZXBvcnROb2RlLmRlbGV0ZWQuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZvbGRlciB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgcGFyZW50UmVwb3J0Rm9sZGVySWQ6IG51bWJlciB8IG51bGw7XG4gIHN0YXRlPzogUmVwb3J0U3RhdGU7XG59XG5cbi8vIEdFVCAvYXBpL3JlcG9ydHMgcmV0dXJucyBib3RoIGhhbHZlcyBmbGF0OyB0aGUgbGlzdGluZyBuZXN0cyB0aGVtIGl0c2VsZi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0VHJlZSB7XG4gIHJlcG9ydHM6IFJlcG9ydExpc3RJdGVtW107XG4gIGZvbGRlcnM6IFJlcG9ydEZvbGRlcltdO1xufVxuXG5leHBvcnQgZW51bSBSZXBvcnROb2RlVHlwZSB7XG4gIEZvbGRlciA9ICdmb2xkZXInLFxuICBSZXBvcnQgPSAncmVwb3J0Jyxcbn1cblxuLy8gT25lIG5vZGUgYXMgZnMtdHJlZSBzZWVzIGl0LiBGb2xkZXJzIGFuZCByZXBvcnRzIHNoYXJlIG9uZSBpZCBzcGFjZSBpbiB0aGVcbi8vIHZpZXcsIHNvIHRoZSBpZHMgYXJlIHByZWZpeGVkICgnZjoxMicgLyAncjozNCcpIOKAlCBgaWRgIGlzIHRoZSBvcmlnaW5hbCxcbi8vIHBlci10YWJsZSBpZCB0aGF0IHRoZSBBUEkgZW5kcG9pbnRzIHRha2UuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydE5vZGUge1xuICBrZXk6IHN0cmluZztcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBSZXBvcnROb2RlVHlwZTtcbiAgLy8gT25seSBldmVyIHBvcHVsYXRlZCBvbiBhIGZvbGRlcjsgYSByZXBvcnQgaXMgYWx3YXlzIGEgbGVhZi5cbiAgY2hpbGRyZW46IFJlcG9ydE5vZGVbXTtcbiAgLy8gUHJlc2VudCBvbiByZXBvcnQgbm9kZXMgb25seS5cbiAgcmVwb3J0PzogUmVwb3J0TGlzdEl0ZW07XG4gIC8vIFRoZSBub2RlJ3Mgb3duIHJvdyBpcyBkZWxldGVkLiBXaGF0IGVhcm5zIHRoZSBcIkRlbGV0ZWRcIiBjaGlwIOKAlCB0aGlzIGlzXG4gIC8vIHdoYXQgc29tZWJvZHkgYWN0dWFsbHkgZGVsZXRlZC5cbiAgc3RhdGVEZWxldGVkOiBib29sZWFuO1xuICAvLyBEZWxldGVkIGl0c2VsZiBPUiBhbnl3aGVyZSBiZWxvdyBhIGRlbGV0ZWQgZm9sZGVyLiBPbmx5IGV2ZXIgdHJ1ZSBpbiBTaG93XG4gIC8vIERlbGV0ZWQgbW9kZSAodGhlIGRlZmF1bHQgbGlzdGluZyBuZXZlciByZXR1cm5zIHN1Y2ggYSBub2RlKSwgYW5kIGl0IGlzIHdoYXRcbiAgLy8gc3dhcHMgdGhlIHJvdydzIGFjdGlvbnMgZm9yIFJlc3RvcmUuXG4gIGRlbGV0ZWQ6IGJvb2xlYW47XG59XG5cbi8vIFJlcG9ydHMgYW5kIGZvbGRlcnMgYXJlIGJvdGggc29mdC1kZWxldGFibGUuIEEgZGVsZXRlZCByZXBvcnQga2VlcHMgaXRzIHBhZ2VzXG4vLyBhbmQgY29tcG9uZW50czsgYSBkZWxldGVkIGZvbGRlciBrZWVwcyBldmVyeXRoaW5nIGZpbGVkIHVuZGVyIGl0LCB3aGljaCBsZWF2ZXNcbi8vIHRoZSBsaXN0aW5nIHdpdGggaXQgYW5kIGNvbWVzIGJhY2sgd2l0aCBpdC4gXCJTaG93IERlbGV0ZWRcIiBzaG93cyB0aGUgd2hvbGVcbi8vIHRyZWUsIGxpdmUgYW5kIGRlbGV0ZWQgdG9nZXRoZXIsIHNvIGFueSBvZiBpdCBjYW4gYmUgcmVzdG9yZWQgaW4gcGxhY2UuXG5leHBvcnQgZW51bSBSZXBvcnRTdGF0ZSB7XG4gIEFjdGl2ZSA9ICdhY3RpdmUnLFxuICBEZWxldGVkID0gJ2RlbGV0ZWQnLFxufVxuXG4vLyBUaGUgY2hhdCB0dXJuIGZsYWdzIHRoaXMgY29udGV4dCdzIGJhY2tlbmQgYWRkcyAoUmVwb3J0c1xcQWlWaWV3KS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q2hhdFJlc3BvbnNlIHtcbiAgcmVwb3J0Q2hhbmdlZD86IGJvb2xlYW47XG4gIHJlcG9ydFJlbmFtZWQ/OiBib29sZWFuO1xufVxuXG4vLyBPbmUgdmVyc2lvbiBvZiB0aGUgZ2xvYmFsIEFJIGtub3dsZWRnZSBkb2N1bWVudCDigJQgdGhlIG9wZXJhdG9yLWF1dGhvcmVkXG4vLyBtYXJrZG93biBhcHBlbmRlZCB0byB0aGUgcmVwb3J0IGFnZW50J3Mgc3lzdGVtIGluc3RydWN0aW9ucyBvbiBldmVyeSB0dXJuLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRJbnN0cnVjdGlvbiB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgY3VycmVudDogYm9vbGVhbjtcbiAgY3JlYXRlRGF0ZTogRGF0ZTtcbiAgbW9kaWZ5RGF0ZTogRGF0ZTtcbiAgYWNjb3VudElkOiBudW1iZXIgfCBudWxsO1xuICBhY2NvdW50TmFtZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gR0VUL1BVVCBpbnN0cnVjdGlvbnMgcGF5bG9hZDogdGhlIGN1cnJlbnQgdmVyc2lvbiAobnVsbCB1bnRpbCBvbmUgaXNcbi8vIGF1dGhvcmVkKSBwbHVzIHRoZSBmdWxsIGhpc3RvcnksIG5ld2VzdCBmaXJzdC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SW5zdHJ1Y3Rpb25zIHtcbiAgaW5zdHJ1Y3Rpb25zOiBSZXBvcnRJbnN0cnVjdGlvbiB8IG51bGw7XG4gIHZlcnNpb25zOiBSZXBvcnRJbnN0cnVjdGlvbltdO1xufVxuXG4vLyBUaGUgbGF0ZXN0IHNlbWFudGljLWRhdGFiYXNlIGJ1aWxkIChhbiBmZl9wcm9jZXNzZXMgcm93KSDigJQgZW5vdWdoIGZvciB0aGVcbi8vIHNldHRpbmdzIGRpYWxvZyB0byBzYXkgd2hhdCBzdGF0ZSB0aGUgYnVpbGQgaXMgaW4gYW5kIHdoZW4gaXQgbGFzdCByYW4uXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGQge1xuICBpZDogbnVtYmVyO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwZXJjZW50OiBudW1iZXIgfCBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgY3JlYXRlRGF0ZTogRGF0ZTtcbiAgc3RhcnREYXRlOiBEYXRlO1xuICBlbmREYXRlOiBEYXRlO1xufVxuXG4vLyBBIGJ1aWxkIHN0YWdlJ3Mgc3RhdGUgb24gdGhlIGVudGl0eSBzY29yZWJvYXJkOiAnZG9uZScgPSBidWlsdCwgJ21pc3NpbmcnID1cbi8vIHN0aWxsIG5lZWRzIGJ1aWxkaW5nIChhIG1pc3Npbmcgc3RhZ2UgaXMgdW5idWlsdCBjb250ZW50LCBuZXZlciBhbiBlcnJvcikuXG5leHBvcnQgdHlwZSBTZW1hbnRpY0J1aWxkU3RhZ2UgPSAnZG9uZScgfCAnbWlzc2luZyc7XG5cbi8vIE9uZSBlbnVtIGNvbHVtbiBvZiBhbiBlbnRpdHksIHdpdGggdGhlIGFsbG93ZWQgdmFsdWVzIHRoZSBidWlsZCBpbmxpbmVkLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRW51bSB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICB2YWx1ZXM6IHN0cmluZ1tdO1xufVxuXG4vLyBPbmUgZW50aXR5IHJvdyBvZiB0aGUgc2NvcmVib2FyZCAoYW4gZW50aXR5ID0gYSB0YWJsZSArIGEgbW9kZWwgKyBhXG4vLyBoYW5kbGVyKTogaXRzIHRhYmxlL3NoYXBlIGNvdW50cywgaW5saW5lZCBlbnVtIHZhbHVlcywgY29tcHV0ZWQgZmllbGRzLCBob3dcbi8vIG1hbnkgY29kZSBmdW5jdGlvbnMgd2VyZSBjYWNoZWQgKHNwbGl0IG1vZGVsIHZzIGhhbmRsZXIpLCBhbmQgdGhlIHBlci1zdGFnZVxuLy8gYnVpbHQvbWlzc2luZyBzdGF0ZS5cbi8vXG4vLyBgbW9kZWxgL2BoYW5kbGVyYCBhcmUgdGhlIGNsYXNzZXMgdGhlIGZ1bmN0aW9ucyB3ZXJlIHJlYWQgZnJvbSDigJQgd2hhdCBhXG4vLyByZWFkZXIgcmVjb2duaXplcyB0aGUgcm93IGJ5LCB3aGVyZSBga2V5YCBpcyB3aGF0IHRoZSByZXBvcnQgQUkgYWRkcmVzc2VzIGl0XG4vLyBieSBpbiBkZXNjcmliZV9lbnRpdHkgLyBjb21waWxlX3F1ZXJ5LlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRW50aXR5IHtcbiAga2V5OiBzdHJpbmc7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICBoYW5kbGVyOiBzdHJpbmcgfCBudWxsO1xuICBjb2x1bW5zOiBudW1iZXI7XG4gIHJlbGF0aW9uc2hpcHM6IG51bWJlcjtcbiAgZW51bXM6IFNlbWFudGljQnVpbGRFbnVtW107XG4gIGNvbXB1dGVkRmllbGRzOiBzdHJpbmdbXTtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBtb2RlbEZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgaGFuZGxlckZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgc3RhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBTZW1hbnRpY0J1aWxkU3RhZ2U+O1xufVxuXG4vLyBPbmUgc3RhbmRhbG9uZSBjb2RlIGNsYXNzIHRoZSBidWlsZCByZWFkOiBkb21haW4gbG9naWMgd2l0aCBubyB0YWJsZSBvZiBpdHNcbi8vIG93biAoYSBzdW1tYXJ5IG1vZGVsLCBhIGNhbGN1bGF0aW9uIHNlcnZpY2UpLiBUaGUgcmVwb3J0IEFJIHJlYWRzIGl0cyBjb2RlXG4vLyBleGFjdGx5IGxpa2UgYW4gZW50aXR5J3MsIGJ1dCBpdCBjYW4gbmV2ZXIgYmUgcXVlcmllZCDigJQgdGhlcmUgaXMgbm90aGluZyB0b1xuLy8gc2VsZWN0IGZyb20g4oCUIHNvIGl0IGNhcnJpZXMgbm8gdGFibGUsIGNvbHVtbnMgb3IgcmVsYXRpb25zaGlwcy5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZENsYXNzIHtcbiAga2V5OiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG59XG5cbi8vIFdoYXQgdGhlIGJ1aWxkIGRlY2lkZWQgYSBwaHlzaWNhbCB0YWJsZSBpcy4gRW50aXR5IGFuZCBqdW5jdGlvbiBhcmUgYm90aFxuLy8gcmVhY2hhYmxlIGJ5IHRoZSByZXBvcnQgQUkg4oCUIGFuIGVudGl0eSBkaXJlY3RseSwgYSBqdW5jdGlvbiB0aHJvdWdoIHRoZVxuLy8gbWFueS10by1tYW55IGl0IGJyaWRnZXMuIEV4Y2x1ZGVkIGlzIG5vdCByZWFjaGFibGUgYXQgYWxsLlxuZXhwb3J0IHR5cGUgU2VtYW50aWNUYWJsZUNsYXNzaWZpY2F0aW9uID0gJ2VudGl0eScgfCAnanVuY3Rpb24nIHwgJ2V4Y2x1ZGVkJztcblxuLy8gT25lIHBoeXNpY2FsIHRhYmxlIGFzIHRoZSBidWlsZCBjbGFzc2lmaWVkIGl0LiBgcmVhc29uYCBhbnN3ZXJzIGEgc2luZ2xlXG4vLyBxdWVzdGlvbiDigJQgd2h5IGNhbid0IHRoZSByZXBvcnQgQUkgc2VlIHRoaXMgdGFibGU/IOKAlCBhbmQgaXMgbnVsbCB3aGVuIGl0IGNhbi5cbi8vIEEganVuY3Rpb24gd2l0aCBhIHJlYXNvbiBicmlkZ2VkIG5vdGhpbmcsIHNvIGl0IGlzIGp1c3QgYXMgaW52aXNpYmxlIGFzIGFuXG4vLyBleGNsdWRlZCB0YWJsZS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZFRhYmxlIHtcbiAgdGFibGU6IHN0cmluZztcbiAgY2xhc3NpZmljYXRpb246IFNlbWFudGljVGFibGVDbGFzc2lmaWNhdGlvbjtcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIHJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gVGhlIGJ1aWxkIHNjb3JlYm9hcmQgc2hpcHBlZCBhbG9uZ3NpZGUgdGhlIGJ1aWxkIHN0YXR1czogdGhlIHN1bW1hcnkgY291bnRzLFxuLy8gdGhlIGZ1bGwgYnJlYWtkb3duIHRoZSBzZXR0aW5ncyBkaWFsb2cgZHJpbGxzIGludG8g4oCUIEJPVEgga2luZHMgb2YgdW5pdCB0aGVcbi8vIGJ1aWxkIGNhY2hlcywgdGFibGUtYmFja2VkIGVudGl0aWVzIGFuZCBzdGFuZGFsb25lIGNvZGUgY2xhc3NlcyDigJQgYW5kIHRoZVxuLy8gY2F0YWxvZyBvZiBldmVyeSB0YWJsZSB0aGUgYnVpbGQgc2F3LCBzbyB0aGUgdGFiIGNhbiBzaG93IHdoYXQgdGhlIHJlcG9ydCBBSVxuLy8gY2FuJ3Qgc2VlLCBub3QganVzdCB3aGF0IGl0IGNhbi5cbi8vXG4vLyBgZnVuY3Rpb25Db3VudGAgc3BhbnMgZW50aXRpZXMgYW5kIGNsYXNzZXMgYWxpa2U6IGl0IGlzIHRoZSBzYW1lIHRvdGFsIHRoZVxuLy8gYnVpbGQgaXRzZWxmIHJlcG9ydHMgd2hlbiBpdCBmaW5pc2hlcy5cbi8vXG4vLyBgdGFibGVzYCBpcyBlbXB0eSBmb3IgYW4gYXJ0aWZhY3QgYnVpbHQgYmVmb3JlIHRoZSBjYXRhbG9nIGV4aXN0ZWQuIFJlYWQgdGhhdFxuLy8gYXMgXCJubyBjYXRhbG9nXCIsIG5ldmVyIGFzIFwibm90aGluZyB3YXMgZXhjbHVkZWRcIi5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZERldGFpbCB7XG4gIC8vIFdoZXRoZXIgdGhlIGFydGlmYWN0IHdhcyBwcm9kdWNlZCBieSBhIGJ1aWxkIHRoYXQgcmFuIHRvIHRoZSBlbmQuIFJlYWQgaXRcbiAgLy8gYmVzaWRlIGBnZW5lcmF0ZWRBdGAsIG5ldmVyIGluc3RlYWQgb2YgaXQ6IHRoZSBzdHJ1Y3R1cmFsIGFydGlmYWN0IGlzXG4gIC8vIHB1Ymxpc2hlZCBCRUZPUkUgdGhlIEFJIGZ1bmN0aW9uIHBhc3MsIHNvIGEgYnVpbGQgd2hvc2UgQUkgcGFzcyBmYWlsZWQgc3RpbGxcbiAgLy8gY2FycmllcyBhIGRhdGUgYW5kIGEgZnVsbCBzZXQgb2YgY291bnRzLiBUaGUgZGF0ZSBzYXlzIHNvbWV0aGluZyB3YXNcbiAgLy8gd3JpdHRlbjsgb25seSB0aGlzIHNheXMgdGhlIGJ1aWxkIGZpbmlzaGVkIHdyaXRpbmcgaXQuXG4gIGNvbXBsZXRlOiBib29sZWFuO1xuICBnZW5lcmF0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGVudGl0eUNvdW50OiBudW1iZXI7XG4gIGNsYXNzQ291bnQ6IG51bWJlcjtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBlbnRpdGllczogU2VtYW50aWNCdWlsZEVudGl0eVtdO1xuICBjbGFzc2VzOiBTZW1hbnRpY0J1aWxkQ2xhc3NbXTtcbiAgdGFibGVDb3VudDogbnVtYmVyO1xuICBqdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIHVubGlua2VkSnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBleGNsdWRlZENvdW50OiBudW1iZXI7XG4gIHRhYmxlczogU2VtYW50aWNCdWlsZFRhYmxlW107XG59XG5cbi8vIFdoaWNoIGNsYXNzIGEgY2FjaGVkIGZ1bmN0aW9uIHdhcyByZWFkIGZyb20uIEFuIGVudGl0eSdzIGNhY2hlIHNwbGl0cyBpbnRvXG4vLyAnbW9kZWwnIGFuZCAnaGFuZGxlcic7IGEgc3RhbmRhbG9uZSBjb2RlIGNsYXNzIGhhcyBvbmUgZ3JvdXAsICdjbGFzcycuXG5leHBvcnQgdHlwZSBTZW1hbnRpY0Z1bmN0aW9uU291cmNlID0gJ21vZGVsJyB8ICdoYW5kbGVyJyB8ICdjbGFzcyc7XG5cbi8vIE9uZSBBSS1jbGFzc2lmaWVkIGNvZGUgZnVuY3Rpb24gZnJvbSBhIG1vZGVsLCBoYW5kbGVyIG9yIHN0YW5kYWxvbmUgY2xhc3M6XG4vLyB3aGF0IGtpbmQgb2YgbG9naWMgaXQgaXMsIHdoYXQgaXQgZG9lcywgYW5kIHdoYXQgaXQgcHJvZHVjZXMg4oCUIHRoZSBidWlsZCdzXG4vLyBjYWNoZWQgXCJ3aGF0IHRoZSBjb2RlIGRvZXNcIiBrbm93bGVkZ2Ugc2hvd24gaW4gdGhlIGZ1bmN0aW9ucyBkaWFsb2cuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljRW50aXR5RnVuY3Rpb24ge1xuICBjbGFzczogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gIGtpbmQ6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xuICBwcm9kdWNlczogc3RyaW5nO1xuICBzb3VyY2U6IFNlbWFudGljRnVuY3Rpb25Tb3VyY2U7XG59XG5cbi8vIE9uZSBlbnRpdHkncyBjYWNoZWQgY29kZS1mdW5jdGlvbiBrbm93bGVkZ2UsIGZldGNoZWQgd2hlbiBhIGZ1bmN0aW9ucyBkaWFsb2dcbi8vIG9wZW5zICh0aGUgZnVsbCBzZXQgYWNyb3NzIGFsbCBlbnRpdGllcyBpcyB0b28gYmlnIHRvIHNoaXAgd2l0aCB0aGVcbi8vIHNjb3JlYm9hcmQpLiBPbmUgcGF5bG9hZCBzZXJ2ZXMgYm90aCBkaWFsb2dzIOKAlCBjb25zdW1lcnMgZmlsdGVyIGJ5IHNvdXJjZS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNFbnRpdHlGdW5jdGlvbnMge1xuICBlbnRpdHk6IHN0cmluZztcbiAgZ2VuZXJhdGVkQXQ6IERhdGUgfCBudWxsO1xuICBtb2RlbENsYXNzOiBzdHJpbmcgfCBudWxsO1xuICBoYW5kbGVyQ2xhc3M6IHN0cmluZyB8IG51bGw7XG4gIGZ1bmN0aW9uczogU2VtYW50aWNFbnRpdHlGdW5jdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRTdGF0dXMge1xuICBidWlsZDogU2VtYW50aWNCdWlsZCB8IG51bGw7XG4gIGRldGFpbDogU2VtYW50aWNCdWlsZERldGFpbDtcbn1cblxuLy8gVGhlIHJlcG9ydCBtb2R1bGUncyBHZW5lcmFsIHNldHRpbmdzIChhIHNtYWxsIGdsb2JhbCBrZXkvdmFsdWUgc3RvcmUsIHRoZVxuLy8gcmVwb3J0aW5nIGNvdW50ZXJwYXJ0IG9mIHRoZSBhcHAtd2lkZSBzZXR0aW5ncykuIEVhY2ggdmFsdWUgc2hpcHMgd2l0aCB0aGVcbi8vIHNhZmUgYmFuZCBpdHMgZWRpdG9yIGZpZWxkIGlzIGJvdW5kZWQgdG8uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNldHRpbmdzIHtcbiAgLy8gSG93IG1hbnkgc3VtbWFyeSBjYWxscyB0aGUgc2VtYW50aWMgYnVpbGQgcnVucyBhdCBvbmNlLlxuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3k6IG51bWJlcjtcbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5TWluOiBudW1iZXI7XG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeU1heDogbnVtYmVyO1xufVxuIl19
|
|
@@ -5,7 +5,7 @@ import { REPORT_WEEK_STARTS_ON } from './consts/report-week.const';
|
|
|
5
5
|
// presets (Today, Last 7 days, This month, ...). The report adds none of its
|
|
6
6
|
// own: the built-in list covers every period a report filter names. A preset
|
|
7
7
|
// is a shortcut only: picking one sets the range's two days, which is all the
|
|
8
|
-
// bar
|
|
8
|
+
// bar and a saved view hold. Provided on the view; the host app's
|
|
9
9
|
// own pickers keep their config.
|
|
10
10
|
export function provideReportDatePicker() {
|
|
11
11
|
const config = {
|
|
@@ -15,4 +15,4 @@ export function provideReportDatePicker() {
|
|
|
15
15
|
};
|
|
16
16
|
return { provide: FS_DATEPICKER_CONFIG, useValue: config };
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhdGUtcHJlc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9yZXBvcnQtZGF0ZS1wcmVzZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSw0QkFBNEIsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVqSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUduRSw2RUFBNkU7QUFDN0UsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSw2RUFBNkU7QUFDN0UsOEVBQThFO0FBQzlFLGtFQUFrRTtBQUNsRSxpQ0FBaUM7QUFDakMsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxNQUFNLE1BQU0sR0FBd0I7UUFDbEMsR0FBRyw0QkFBNEI7UUFDL0IsWUFBWSxFQUFFLHFCQUFxQjtRQUNuQyxNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUM7SUFFRixPQUFPLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRlNfREFURVBJQ0tFUl9DT05GSUcsIEZTX0RBVEVQSUNLRVJfQ09ORklHX0RFRkFVTFQsIElGc0RhdGVQaWNrZXJDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHsgUkVQT1JUX1dFRUtfU1RBUlRTX09OIH0gZnJvbSAnLi9jb25zdHMvcmVwb3J0LXdlZWsuY29uc3QnO1xuXG5cbi8vIFRoZSBkYXRlIHBpY2tlciBjb25maWcgb2YgYSByZXBvcnQgdmlldzogaXRzIHdlZWtzIHN0YXJ0IG9uIE1vbmRheSwgYXMgdGhlXG4vLyBzZXJ2ZXIncyB3ZWVrcyBkbywgYW5kIGl0cyByYW5nZSBwaWNrZXJzIGxpc3QgdGhlIGRhdGUgcGlja2VyJ3MgYnVpbHQtaW5cbi8vIHByZXNldHMgKFRvZGF5LCBMYXN0IDcgZGF5cywgVGhpcyBtb250aCwgLi4uKS4gVGhlIHJlcG9ydCBhZGRzIG5vbmUgb2YgaXRzXG4vLyBvd246IHRoZSBidWlsdC1pbiBsaXN0IGNvdmVycyBldmVyeSBwZXJpb2QgYSByZXBvcnQgZmlsdGVyIG5hbWVzLiBBIHByZXNldFxuLy8gaXMgYSBzaG9ydGN1dCBvbmx5OiBwaWNraW5nIG9uZSBzZXRzIHRoZSByYW5nZSdzIHR3byBkYXlzLCB3aGljaCBpcyBhbGwgdGhlXG4vLyBiYXIgYW5kIGEgc2F2ZWQgdmlldyBob2xkLiBQcm92aWRlZCBvbiB0aGUgdmlldzsgdGhlIGhvc3QgYXBwJ3Ncbi8vIG93biBwaWNrZXJzIGtlZXAgdGhlaXIgY29uZmlnLlxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVSZXBvcnREYXRlUGlja2VyKCk6IFByb3ZpZGVyIHtcbiAgY29uc3QgY29uZmlnOiBJRnNEYXRlUGlja2VyQ29uZmlnID0ge1xuICAgIC4uLkZTX0RBVEVQSUNLRVJfQ09ORklHX0RFRkFVTFQsXG4gICAgd2Vla1N0YXJ0c09uOiBSRVBPUlRfV0VFS19TVEFSVFNfT04sXG4gICAgcHJlc2V0OiB0cnVlLFxuICB9O1xuXG4gIHJldHVybiB7IHByb3ZpZGU6IEZTX0RBVEVQSUNLRVJfQ09ORklHLCB1c2VWYWx1ZTogY29uZmlnIH07XG59XG4iXX0=
|