ca-components 1.5.21 → 1.5.22
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/esm2022/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.mjs +1 -1
- package/esm2022/lib/components/ca-input/base-classes/ca-input-base-helpres.mjs +1 -1
- package/esm2022/lib/components/ca-input/base-classes/ca-input-base.mjs +1 -1
- package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-dropdown-test/ca-input-dropdown-test.component.mjs +1 -1
- package/esm2022/lib/components/ca-input-note/ca-input-note.component.mjs +1 -1
- package/esm2022/lib/components/ca-map/ca-map.component.mjs +1 -1
- package/esm2022/lib/components/ca-note-container/ca-note-container.component.mjs +1 -1
- package/fesm2022/ca-components.mjs.map +1 -1
- package/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.d.ts +1 -1
- package/lib/components/ca-input/base-classes/ca-input-base-helpres.d.ts +1 -1
- package/lib/components/ca-input/base-classes/ca-input-base.d.ts +2 -2
- package/lib/components/ca-input-dropdown/ca-input-dropdown.component.d.ts +1 -1
- package/lib/components/ca-input-dropdown-test/ca-input-dropdown-test.component.d.ts +1 -1
- package/lib/components/ca-map/ca-map.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1198,4 +1198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1198
1198
|
type: Output,
|
|
1199
1199
|
args: ['clearInputEvent']
|
|
1200
1200
|
}] } });
|
|
1201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUd2QixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlELFlBQVk7QUFDWixPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDWixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLFlBQVk7QUFDWixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFLdEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDO0FBQ3hJLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FB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QkFBb0I7c0JBQTdCLE1BQU07Z0JBRWUsZUFBZTtzQkFBcEMsTUFBTTt1QkFBQyxZQUFZO2dCQUVHLGdCQUFnQjtzQkFBdEMsTUFBTTt1QkFBQyxhQUFhO2dCQUVNLGVBQWU7c0JBQXpDLE1BQU07dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBza2lwLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuLy8gYm9vdHN0cmFwXG5pbXBvcnQge1xuICAgIE5nYlBvcG92ZXIsXG4gICAgTmdiUG9wb3Zlck1vZHVsZSxcbiAgICBOZ2JNb2R1bGUsXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuLy8gYW5pbWF0aW9uXG5pbXBvcnQgeyBpbnB1dERyb3Bkb3duQW5pbWF0aW9uIH0gZnJvbSAnLi9hbmltYXRpb25zJztcblxuLy8gY29uZmlnXG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uL2NhLWlucHV0L2NvbmZpZyc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9jYS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25TdmdUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tc3ZnLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0RGlzcGF0Y2hUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkdyb3Vwc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1ncm91cHMvY2EtaW5wdXQtZHJvcGRvd24tZ3JvdXBzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1tdWx0aXNlbGVjdC9jYS1pbnB1dC1kcm9wZG93bi1tdWx0aXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTGFiZWxzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxhYmVscy9jYS1pbnB1dC1kcm9wZG93bi1sYWJlbHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlclNoaXBwZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItc2hpcHBlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25UZXh0Q291bnRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXIvY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Eb3VibGVUZXh0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blRyaXBsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGVmYXVsdFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRlZmF1bHQtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRnVlbEZyYW5jaGlzZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZS9jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGlzcGF0Y2hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZGlzcGF0Y2gvY2EtaW5wdXQtZHJvcGRvd24tZGlzcGF0Y2guY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRldGFpbHNUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blBheXJvbGxUcnVja3NDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3MvY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3MuY29tcG9uZW50JztcblxuLy8gcGlwZXNcbmltcG9ydCB7IEZvcm1Db250cm9sUGlwZSB9IGZyb20gJy4uL2NhLWlucHV0L3BpcGVzJztcbmltcG9ydCB7IERyb3Bkb3duQ291bnRQaXBlLCBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUgfSBmcm9tICcuL3BpcGVzJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gZGlyZWN0aXZlc1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NvbnRyb2wsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IENvbW1hbmRzRXZlbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9tb2RlbHMnO1xuaW1wb3J0IHsgT3B0aW9uTW9kZWwgfSBmcm9tICcuL21vZGVscy9pbnB1dC1kcm9wZG93bi1vcHRpb24ubW9kZWwnO1xuXG4vLyBzZXJ2aWNlc1xuaW1wb3J0IHsgSW1hZ2VCYXNlNjRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtYmFzZTY0LnNlcnZpY2UnO1xuXG4vLyBzdmcgcm91dGVzXG5pbXBvcnQgeyBJbnB1dERyb3Bkb3duU3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzL2lucHV0LWRyb3Bkb3duLXN2Zy1yb3V0ZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgRHJvcGRvd25TdHJpbmdFbnVtLCBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgdXVpZHY0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNhLWlucHV0LWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLWlucHV0LWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW0Zvcm1Db250cm9sUGlwZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW2lucHV0RHJvcGRvd25BbmltYXRpb24oJ3Nob3dIaWRlRHJvcGRvd25PcHRpb25zJyldLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nYlBvcG92ZXJNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nYk1vZHVsZSxcbiAgICAgICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gICAgICAgIC8vIENvbXBvbmVudFxuICAgICAgICBDYUlucHV0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25TdmdUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duU3ZndGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0RGlzcGF0Y2hUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTGFiZWxzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duVGV4dENvdW50ZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkZ1ZWxGcmFuY2hpc2VDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRpc3BhdGNoQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EZXRhaWxzVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blBheXJvbGxUcnVja3NDb21wb25lbnQsXG4gICAgICAgIC8vIFBpcGVzXG4gICAgICAgIEZvcm1Db250cm9sUGlwZSxcbiAgICAgICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgICAgIElucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzUGlwZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0RHJvcGRvd25Db21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dFJlZiE6IENhSW5wdXRDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgndDInKSBwdWJsaWMgcG9wb3ZlclJlZiE6IE5nYlBvcG92ZXI7XG5cbiAgICAvLyBkaWZmZXJlbnQgdGVtcGxhdGVzIGZvciBib2R5IHJlbmRlcmluZ1xuICAgIHB1YmxpYyBfdGVtcGxhdGUhOiBzdHJpbmc7XG4gICAgX2NhbkFkZE5ldzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNldCB0ZW1wbGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3RlbXBsYXRlID0gdmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ2RldGFpbHMtdGVtcGxhdGUnICYmIHRoaXMuaXNEZXRhaWxzUGFnZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLnNldElucHV0Q3Vyc29yQXRUaGVFbmQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXQubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5fb3B0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG9wdGlvbiB8fCBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sPy5zZXRWYWx1ZShvcHRpb24/Lm5hbWUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dDIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLm9wZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQyKTtcbiAgICAgICAgICAgICAgICB9LCAxNTApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBtdWx0aXNlbGVjdFRlbXBsYXRlITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gICAgQElucHV0KCkgc2V0IGNhbkFkZE5ldyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9jYW5BZGROZXcgPSB2YWx1ZTtcbiAgICB9IC8vIEFERCBORVcgaXRlbSBpbiBvcHRpb25zXG4gICAgQElucHV0KCkgY2FuT3Blbk1vZGFsITogYm9vbGVhbjsgLy8gb3BlbiBtb2RhbCB3aXRoIEFERCBORVcgYnV0dG9uXG4gICAgQElucHV0KCkgaXNBZGRyZXNzRHJvcGRvd24hOiBib29sZWFuOyAvLyBvbmx5IGZvciBhZGRyZXNzIGRyb3Bkb3duXG5cbiAgICAvLyBzb3J0LXRlbXBsYXRlIGZvciBkaWZmZXJlbnQgb3B0aW9uc1xuICAgIHB1YmxpYyBfc29ydCE6IHN0cmluZztcbiAgICBASW5wdXQoKSBzZXQgc29ydCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NvcnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBjdXJyZW50bHkgYWN0aXZlIGl0ZW1cbiAgICBwdWJsaWMgX2FjdGl2ZUl0ZW0hOiBPcHRpb25Nb2RlbCB8IG51bGw7XG4gICAgQElucHV0KCkgc2V0IGFjdGl2ZUl0ZW0odmFsdWU6IE9wdGlvbk1vZGVsIHwgbnVsbCkge1xuICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgIGJsYWNrSW5wdXQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB2YWx1ZTtcblxuICAgICAgICAvLyBXaXRoIGFkZHJlc3NcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lICYmXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYWRkcmVzcycpICYmXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX2FjdGl2ZUl0ZW0pLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU/LmFkZHJlc3MgPyB2YWx1ZT8uYWRkcmVzcyA6IG51bGxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaW5wdXRDb25maWcuaGlkZUNvbG9yVmFsaWRhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tJbnB1dDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0sIDE1MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2l0aG91dCBhZGRyZXNzXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU/Lm51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdmFsdWU/Lm51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWU/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdmFsdWU/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHZhbHVlPy5jb21wYW55TmFtZSA/PyBudWxsKVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbnB1dENvbmZpZy5oaWRlQ29sb3JWYWxpZGF0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrSW5wdXQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LCAxNTApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbUNvbG9yITogT3B0aW9uTW9kZWwgfCBudWxsOyAvLyBjdXJyZW50bHkgYWN0aXZlIGNvbG9yIGluIGRyb3Bkb3duXG4gICAgQElucHV0KCkgbGFiZWxNb2RlITogJ0xhYmVsJyB8ICdDb2xvcic7XG5cbiAgICAvLyB3aGVuIHNlbmQgU1ZHLCBwbGVhc2UgcHJlbW1hcGVkIG9iamVjdDogYWRkICdmb2xkZXInIHwgJ3N1YmZvbGRlcidcbiAgICBwdWJsaWMgX29wdGlvbnM6IE9wdGlvbk1vZGVsW10gPSBbXTtcbiAgICBASW5wdXQoKSBzZXQgb3B0aW9ucyh2YWx1ZXM6IE9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHZhbHVlcykgdGhpcy5fb3B0aW9ucyA9IFsuLi52YWx1ZXNdO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5fc29ydCkge1xuICAgICAgICAgICAgY2FzZSAnYWN0aXZlLWRyaXZlcnMnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlcy5zb3J0KFxuICAgICAgICAgICAgICAgICAgICAoeCwgeSkgPT4gTnVtYmVyKHkuc3RhdHVzKSAtIE51bWJlcih4LnN0YXR1cylcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSBbLi4udGhpcy5fb3B0aW9uc107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbkFkZE5ldyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuX29wdGlvbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gNzY1NSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IERyb3Bkb3duU3RyaW5nRW51bS5BRERfTkVXLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE11bHRpU2VsZWN0IFNlbGVjdGVkIEl0ZW1zIEZyb20gQmFja2VuZFxuICAgIEBJbnB1dCgpIHNldCBwcmVsb2FkTXVsdGlzZWxlY3RJdGVtcyh2YWx1ZXM6IE9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcubXVsdGlzZWxlY3REcm9wZG93bikge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUFsbE11bHRpU2VsZWN0SXRlbXModGhpcy5pbnB1dENvbmZpZy5sYWJlbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTXVsdGlzZWxlY3RTZWxlY3QoaXRlbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBpc0RldGFpbHNQYWdlcyE6IGJvb2xlYW47IC8vIG9ubHkgZm9yIGRldGFpbHMgcGFnZXNcbiAgICBASW5wdXQoKSBpc0luY29ycmVjdFZhbHVlITogYm9vbGVhbjsgLy8gYXBwbGljYW50IHJldmlldyBvcHRpb25cblxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW06IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbCB8IG51bGw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbCB8IG51bGw+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXM6IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbFtdIHwgbnVsbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsW10gfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1Db2xvcjogRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsIHwgbnVsbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRMYWJlbE1vZGU6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGNsb3NlRHJvcGRvd246IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgc2F2ZUl0ZW06IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGRhdGE6IE9wdGlvbk1vZGVsIHwgbnVsbDtcbiAgICAgICAgYWN0aW9uOiBzdHJpbmc7XG4gICAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZGF0YTogT3B0aW9uTW9kZWwgfCBudWxsOyBhY3Rpb246IHN0cmluZyB9PigpO1xuICAgIEBPdXRwdXQoKSBpbmNvcnJlY3RFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBwbGFjZWhvbGRlckljb25FdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoJ3BhZ2luYXRpb24nKSBwYWdpbmF0aW9uRXZlbnQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgQE91dHB1dCgnYWN0aXZlR3JvdXAnKSBhY3RpdmVHcm91cEV2ZW50OiBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbD4oKTtcbiAgICBAT3V0cHV0KCdjbGVhcklucHV0RXZlbnQnKSBjbGVhcklucHV0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8vIENvcHkgb2YgT3B0aW9uc1xuICAgIHB1YmxpYyBvcmlnaW5hbE9wdGlvbnM6IE9wdGlvbk1vZGVsW10gPSBbXTtcblxuICAgIC8vIFBhZ2luYXRpb25cbiAgICBwdWJsaWMgcGFnaW5hdGlvbk51bWJlcjogbnVtYmVyID0gMDtcblxuICAgIC8vIE11bHRpc2VsZWN0IGRyb3Bkb3duIG9wdGlvbnNcbiAgICBwdWJsaWMgbXVsdGlzZWxlY3RJdGVtczogT3B0aW9uTW9kZWxbXSA9IFtdO1xuICAgIHB1YmxpYyBpc011bHRpU2VsZWN0SW5wdXRGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBtdWx0aVNlbGVjdExhYmVsITogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHB1YmxpYyBsYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtITogT3B0aW9uTW9kZWwgfCBudWxsO1xuXG4gICAgLy8gQWRkIG1vZGVcbiAgICBwdWJsaWMgaXNJbkFkZE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIERyb3Bkb3duIG5hdmlnYXRpb24gd2l0aCBrZXlib2FyZFxuICAgIHByaXZhdGUgZHJvcGRvd25Qb3NpdGlvbjogbnVtYmVyID0gLTE7XG5cbiAgICAvLyBEcm9wZG93biBDbGVhcnRpbWVvdXRcbiAgICBwdWJsaWMgY2xlYXJUaW1lb3V0RHJvcGRvd246IHN0cmluZyB8IG51bWJlciB8IE5vZGVKUy5UaW1lb3V0IHwgdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIGhvdmVyaW5nSW5kZXghOiBudW1iZXI7XG4gICAgcHVibGljIGlucHV0RHJvcGRvd25TdmdSb3V0ZXMgPSBJbnB1dERyb3Bkb3duU3ZnUm91dGVzO1xuICAgIHB1YmxpYyBkcm9wZG93blRlbXBsYXRlVHlwZUVudW0gPSBEcm9wZG93blRlbXBsYXRlVHlwZUVudW07XG5cbiAgICBwdWJsaWMgb3JpZ2luYWxJbnB1dENvbmZpZyE6IElDYUlucHV0O1xuXG4gICAgLy8gRGVzdHJveVxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKCkgcHVibGljIHN1cGVyQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwdWJsaWMgaW1hZ2VCYXNlNjRTZXJ2aWNlOiBJbWFnZUJhc2U2NFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgZ2V0IGdldFN1cGVyQ29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShfOiBhbnkpOiB2b2lkIHt9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKF86IGFueSk6IHZvaWQge31cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKF86IGFueSk6IHZvaWQge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBNdWx0aXNlbGVjdFxuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0TGFiZWwgPSB0aGlzLmlucHV0Q29uZmlnLmxhYmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VhcmNoXG4gICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICBza2lwKDEpXG4gICAgICAgICkuc3Vic2NyaWJlKChzZWFyY2hUZXh0KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgPT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlYXJjaChzZWFyY2hUZXh0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vcmlnaW5hbElucHV0Q29uZmlnID0gc3RydWN0dXJlZENsb25lKHRoaXMuaW5wdXRDb25maWcpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ29wdGlvbnMnXSAmJiBjaGFuZ2VzWydvcHRpb25zJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IGNoYW5nZXNbJ29wdGlvbnMnXS5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmF1dG9Gb2N1cykge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5vcGVuKCk7XG4gICAgICAgICAgICB9LCA0NTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2Nyb2xsRHJvcGRvd24oZXZlbnQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAodGFyZ2V0LnNjcm9sbFRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgPT09IHRhcmdldC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbk51bWJlciArPSAxO1xuXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25FdmVudC5lbWl0KHRoaXMucGFnaW5hdGlvbk51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25BY3RpdmVJdGVtKG9wdGlvbjogT3B0aW9uTW9kZWwsIGdyb3VwPzogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIFByZXZlbnQgdXNlciB0byBwaWNrIGZyYW5jaGlzZSwgd2l0aG91dCBncm91cFxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJyAmJlxuICAgICAgICAgICAgb3B0aW9uPy5pc0ZyYW5jaGlzZSAmJlxuICAgICAgICAgICAgIWdyb3VwXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIERpc2FibGUgdG8gcGlja2luZyBiYW5uZWQgb3IgZG51IHVzZXJcbiAgICAgICAgaWYgKG9wdGlvbj8uZG51IHx8IG9wdGlvbj8uYmFuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gTm8gUmVzdWx0XG4gICAgICAgIGlmIChvcHRpb24uaWQgPT09IDc2NTQgfHwgb3B0aW9uLmlkID09PSA3NjU2KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQUREIE5FV1xuICAgICAgICBlbHNlIGlmIChvcHRpb24uaWQgPT09IDc2NTUpIHtcbiAgICAgICAgICAgIC8vIE9wZW4gTmV3IE1vZGFsXG4gICAgICAgICAgICBpZiAodGhpcy5jYW5PcGVuTW9kYWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHsgLi4ub3B0aW9uLCBjYW5PcGVuTW9kYWw6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXb3JrIHdpdGggY3VycmVudCBtb2RhbFxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRHJvcERvd24gbGFiZWxcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbE5ldyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNFZGl0SW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0NvbG9yJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXQubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG9wdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBEcm9wZG93blxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE5ld0NvbmZpZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBQaWNrIHRoZSBpdGVtXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5zZWxlY3RlZERyb3Bkb3duID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIERyb3Bkb3duIGxhYmVscyBvcHRpb24gc2VsZWN0ZWRcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgPT09ICdMYWJlbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2w/LnNldFZhbHVlKG9wdGlvbi5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG9wdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGFiZWxNb2RlID09PSAnQ29sb3InKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbUNvbG9yID0gb3B0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ29sb3IuZW1pdCh0aGlzLmFjdGl2ZUl0ZW1Db2xvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTm9ybWFsIERyb3Bkb3duIG9wdGlvbiBzZWxlY3RlZFxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG9wdGlvbjtcblxuICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucztcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm5hbWUgIT09ICdSb3V0aW5nQWRkcmVzcycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24/Lm51bWJlciA/IG9wdGlvbi5udW1iZXIgOiBvcHRpb24ubmFtZVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPyBvcHRpb24ubmFtZSA6IG9wdGlvbi5idXNpbmVzc05hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGlkIH0gPSBvcHRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ub3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5vcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aXZlSXRlbUdyb3VwKGV2ZW50OiB7IG9wdGlvbjogT3B0aW9uTW9kZWw7IGdyb3VwOiBhbnkgfSkge1xuICAgICAgICB0aGlzLm9uQWN0aXZlSXRlbShldmVudC5vcHRpb24sIGV2ZW50Lmdyb3VwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zO1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5zZWxlY3RlZERyb3Bkb3duID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sPy5wYXRjaFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLmlucHV0Q29uZmlnLnBsYWNlaG9sZGVyV2l0aExhYmVsXG4gICAgICAgICAgICAgICAgPyB0aGlzLm9yaWdpbmFsSW5wdXRDb25maWcucGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgZHJvcGRvd25JbWFnZUlucHV0OiBudWxsLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG51bGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRyb3Bkb3duTGFiZWwoKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1Db2xvciA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ29sb3IuZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21tYW5kRXZlbnQoZXZlbnQ6IENvbW1hbmRzRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ0VkaXQgSW5wdXQnKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0NvbG9yJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWxOZXcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnVG9nZ2xlIERyb3Bkb3duJykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdjb25maXJtJyAmJiBldmVudC5tb2RlID09PSAnbmV3Jykge1xuICAgICAgICAgICAgdGhpcy5hZGROZXdJdGVtKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnY29uZmlybScgJiYgZXZlbnQubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUl0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdQbGFjZWhvbGRlciBJY29uIEV2ZW50Jykge1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlckljb25FdmVudC5lbWl0KHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdjYW5jZWwnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTmV3SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgIGlkOiBwYXJzZUludCh1dWlkdjQoKSksXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbCEudmFsdWUsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlzVmlzaWJsZUNvbW1hbmRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zYXZlSXRlbS5lbWl0KHsgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSwgYWN0aW9uOiAnbmV3JyB9KTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzVG91Y2hlZElucHV0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVJdGVtKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlLFxuICAgICAgICAgICAgICAgIGNvbG9ySWQ6IHRoaXMuYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVJdGVtQ29sb3IuaWRcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2xvcklkLFxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2xvcixcbiAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLmNvZGVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2RlLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNhdmVJdGVtLmVtaXQoe1xuICAgICAgICAgICAgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgIGFjdGlvbjogJ2VkaXQnLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTmV3Q29uZmlnKCkge1xuICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgIGNvbW1hbmRzOiB7XG4gICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdjb25maXJtLWNhbmNlbCcsXG4gICAgICAgICAgICAgICAgZmlyc3RDb21tYW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvcHVwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ29uZmlybScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMzA3NGQzJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbmZpcm0nLFxuICAgICAgICAgICAgICAgICAgICBzdmc6IElucHV0RHJvcGRvd25TdmdSb3V0ZXMuc3BlY0NvbmZpcm1TdmcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZWNvbmRDb21tYW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvcHVwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMyZjJmMmYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgICAgc3ZnOiBJbnB1dERyb3Bkb3duU3ZnUm91dGVzLnhDbGVhclN2ZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcblxuICAgICAgICB0aGlzLmlzSW5BZGRNb2RlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0luQWRkTW9kZSA9IGZhbHNlO1xuICAgICAgICB9LCAyMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkluY29ycmVjdElucHV0KGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaW5jb3JyZWN0RXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIsIGl0ZW06IE9wdGlvbk1vZGVsKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU5lc3RlZExpc3Qob3B0aW9uOiBPcHRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAob3B0aW9uLm9wZW4pIHtcbiAgICAgICAgICAgIG9wdGlvbi5vcGVuID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IChpdGVtLm9wZW4gPSBmYWxzZSkpO1xuXG4gICAgICAgIG9wdGlvbi5vcGVuID0gIW9wdGlvbi5vcGVuO1xuXG4gICAgICAgIGlmIChvcHRpb24ub3Blbikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHcm91cEV2ZW50LmVtaXQob3B0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkJsdXJJbnB1dChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24uZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJJbnB1dEV2ZW50KGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY2xlYXJJbnB1dEV2ZW50LmVtaXQoZXZlbnQpO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAvLyBsYWJlbCBkcm9wZG93blxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJEcm9wZG93bkxhYmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBub3JtYWwgZHJvcGRvd25cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub25DbGVhclNlYXJjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dIaWRlRHJvcGRvd24oYWN0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSBhY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgIT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgIC8vIEZvY3VzIE91dFxuICAgICAgICAgICAgaWYgKCFhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGUgIT09ICdmdWVsLWZyYW5jaGlzZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLm9wZW4oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IHVzZXIgdG8gdHlwaW5nIGR1bW1teSBkYXRhIGlmIF9hY3RpdmVJdGVtIGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0VmFsdWUodGhpcy5fYWN0aXZlSXRlbS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25DbGVhclNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZW1wbGF0ZSAhPT0gJ2Z1ZWwtZnJhbmNoaXNlJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGb2N1cyBJblxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmdldFN1cGVyQ29udHJvbCEudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5pbnB1dENvbmZpZy5wbGFjZWhvbGRlcldpdGhMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMub3JpZ2luYWxJbnB1dENvbmZpZy5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShudWxsKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJbkFkZE1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0YWlscyBwYWdlc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmN1c3RvbUNsYXNzPy5pbmNsdWRlcygnZGV0YWlscy1wYWdlcycpICYmXG4gICAgICAgICAgICAhYWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh0aGlzLl9hY3RpdmVJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBkcm9wRG93bktleU5hdmlnYXRpb24oe1xuICAgICAgICBrZXlDb2RlLFxuICAgICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgICAga2V5Q29kZTogbnVtYmVyO1xuICAgICAgICBkYXRhOiBhbnk7XG4gICAgfSkge1xuICAgICAgICAvLyBOYXZpZ2F0ZSBkb3duXG4gICAgICAgIGlmIChrZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bk5hdmlnYXRpb24oMSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTmF2aWdhdGUgdXBcbiAgICAgICAgaWYgKGtleUNvZGUgPT09IDM4KSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duTmF2aWdhdGlvbigtMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmVzcyBFc2NhcGVcbiAgICAgICAgaWYgKGtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZz8uY29tbWFuZHM/LmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuY29tbWFuZHMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc1Zpc2libGVDb21tYW5kcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbD8uc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbE5ldyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbnB1dENvbmZpZy5oaWRlQ29sb3JWYWxpZGF0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmJsYWNrSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRWRpdElucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgPT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnBhdGNoVmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJlc3MgJ2VudGVyJ1xuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KFxuICAgICAgICAgICAgICAgICcuZHJvcGRvd24tb3B0aW9uLWhvdmVyZWQnLFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIC8vIE9wZW4gTmV3IE1vZGFsXG4gICAgICAgICAgICBpZiAodGhpcy5jYW5PcGVuTW9kYWwgJiYgc2VsZWN0ZWRJdGVtLnRvTG93ZXJDYXNlKCkgPT09ICdhZGQgbmV3Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBpZDogNzY1NSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLkFERF9ORVcsXG4gICAgICAgICAgICAgICAgICAgIGNhbk9wZW5Nb2RhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMubGVuZ3RoID09PSAxICYmICFzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSB0aGlzLl9vcHRpb25zWzBdPy5idXNpbmVzc05hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX29wdGlvbnNbMF0/LmJ1c2luZXNzTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc1swXT8ubmFtZSB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9IHRoaXMuX29wdGlvbnNbMF0/Lm51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fb3B0aW9uc1swXT8ubnVtYmVyLnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9vcHRpb25zWzBdLm5hbWU/LnRvU3RyaW5nKCkudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5waWNrdXBFbGVtZW50V2l0aEtleWJvYXJkKHNlbGVjdGVkSXRlbSwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gOSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9uc1swXS5pZCAhPT0gNzY1NSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnNbMF0uaWQgIT09IDc2NTRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW0gPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9IHRoaXMuX29wdGlvbnNbMF0/LmJ1c2luZXNzTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9vcHRpb25zWzBdPy5idXNpbmVzc05hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc1swXT8ubmFtZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSB0aGlzLl9vcHRpb25zWzBdPy5udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fb3B0aW9uc1swXT8ubnVtYmVyLnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX29wdGlvbnNbMF0ubmFtZSEudG9TdHJpbmcoKS50cmltKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5waWNrdXBFbGVtZW50V2l0aEtleWJvYXJkKHNlbGVjdGVkSXRlbSwgZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5vcGVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBNdWx0aXNlbGVjdCBEcm9wZG93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIG9uTXVsdGlzZWxlY3RTZWxlY3Qob3B0aW9uOiBPcHRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcubGFiZWwgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3RJdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLmlkID09PSBvcHRpb24uaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSBvcHRpb24uaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMgPSB0aGlzLl9vcHRpb25zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5hY3RpdmUpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KHRoaXMubXVsdGlzZWxlY3RJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuc29ydChcbiAgICAgICAgICAgICh4LCB5KSA9PiBOdW1iZXIoeS5hY3RpdmUpIC0gTnVtYmVyKHguYWN0aXZlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IFsuLi50aGlzLl9vcHRpb25zXTtcblxuICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSB0aGlzLl9vcHRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgIC5zbGljZSgtMSlbMF07XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcsXG4gICAgICAgICAgICBtdWx0aVNlbGVjdERyb3Bkb3duQWN0aXZlOiB0cnVlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVNdWx0aVNlbGVjdEl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gdGhpcy5tdWx0aXNlbGVjdEl0ZW1zW2luZGV4XS5pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubXVsdGlzZWxlY3RJdGVtc1tpbmRleF0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5zb3J0KFxuICAgICAgICAgICAgKHgsIHkpID0+IE51bWJlcih5LmFjdGl2ZSkgLSBOdW1iZXIoeC5hY3RpdmUpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLl9vcHRpb25zO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdERyb3Bkb3duQWN0aXZlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5sYWJlbCA9IHRoaXMubXVsdGlTZWxlY3RMYWJlbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IHRoaXMuX29wdGlvbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICAuc2xpY2UoLTEpWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQoXG4gICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlQWxsTXVsdGlTZWxlY3RJdGVtcyhjdXJyZW50TGFiZWw/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgbXVsdGlTZWxlY3REcm9wZG93bkFjdGl2ZTogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcubGFiZWwgPSBjdXJyZW50TGFiZWxcbiAgICAgICAgICAgID8gY3VycmVudExhYmVsXG4gICAgICAgICAgICA6IHRoaXMubXVsdGlTZWxlY3RMYWJlbDtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KG51bGwpO1xuXG4gICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gIXRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXM7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZChcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYub3BlbigpO1xuICAgICAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBFbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJpdmF0ZSBwaWNrdXBFbGVtZW50V2l0aEtleWJvYXJkKFxuICAgICAgICBzZWxlY3RlZEl0ZW06IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YTogYW55XG4gICAgKSB7XG4gICAgICAgIC8vIEFkZHJlc3MgU2VsZWN0XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT0gJ0FkZHJlc3MnIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09ICdSb3V0aW5nQWRkcmVzcycpICYmXG4gICAgICAgICAgICAoIXNlbGVjdGVkSXRlbSB8fCBzZWxlY3RlZEl0ZW0gPT0gJycpXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtID0gdGhpcy5fb3B0aW9uc1swXS5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5wdXQgRHJvcGRvd24gQmFuayBOYW1lXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFzZWxlY3RlZEl0ZW0gJiZcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT0gJ0lucHV0IERyb3Bkb3duIEJhbmsgTmFtZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZE5ld0l0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElucHV0IERyb3Bkb3duIExhYmVsXG4gICAgICAgIGlmICghc2VsZWN0ZWRJdGVtICYmIHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5jb21tYW5kRXZlbnQoe1xuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZSxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdjb25maXJtJyxcbiAgICAgICAgICAgICAgICBtb2RlOiBkYXRhLmRyb3Bkb3duTGFiZWxOZXcgPyAnbmV3JyA6ICdlZGl0JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsTmV3ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5jb21tYW5kcyEuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlucHV0Q29uZmlnLmhpZGVDb2xvclZhbGlkYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuYmxhY2tJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNFZGl0SW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFERCBORVcgT3B0aW9uXG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW0gPT09IERyb3Bkb3duU3RyaW5nRW51bS5BRERfTkVXKSB7XG4gICAgICAgICAgICB0aGlzLmFkZE5ld0NvbmZpZygpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgLy8gRHJvcERvd24gbGFiZWxcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbE5ldyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNFZGl0SW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0NvbG9yJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXQubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmJsYWNrSW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLkFERF9ORVcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBOb3JtYWwgUGljayBEcm9wZG93blxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0SXRlbSA9IHRoaXMuX29wdGlvbnNcbiAgICAgICAgICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbnB1dENvbmZpZy5uYW1lID09ICdBZGRyZXNzJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PSAnUm91dGluZ0FkZHJlc3MnKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGl0ZW0uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nTGF0OiBpdGVtLmxvbmdMYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBEaXNwYXRjaGVzIFRURFxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9hZC1kaXNwYXRjaGVzLXR0ZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvYWQtYnJva2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9hZC1zaGlwcGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0uaW5jbHVkZXModGhpcy5fdGVtcGxhdGUpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSW1hZ2UgKG11c3QgYmUgYmVmb3JlIHR5cGUgY29kZSwgYmVjYXVzZSBjb2xvciBoYXMgc2FtZSBwcm9wIGxpa2Ugb3RoZXIgZHJvcGRvd24gcG9wKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLmxvZ29OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW0uY29kZSAmJiBpdGVtLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0uY29kZS5jb25jYXQoJyAtICcsIGl0ZW0uZGVzY3JpcHRpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBEcm9wZG93biBMYWJlbHNcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5kcm9wTGFiZWwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0gfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluZCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBEcm9wZG93biBMYWJlbFxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbT8uZHJvcExhYmVsIHx8IHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSEuc3Vic3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtIS5sYXN0SW5kZXhPZignICcpXG4gICAgICAgICAgICAgICAgICAgICAgICApID09PSBpdGVtPy5uYW1lIS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBEcm9wZG93biBMb2FkIERpc3BhdGNoZXIsIEJyb2tlclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbT8ubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2FkLWJyb2tlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2FkLWRpc3BhdGNoZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9hZC1zaGlwcGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKHRoaXMuX3RlbXBsYXRlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGl0ZW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRHJvcGRvd24gTG9hZCBEaXNwYXRjaGVzXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRyYWlsZXI/LnRyYWlsZXJOdW1iZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRydWNrPy50cnVja051bWJlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uZHJpdmVyPy5maXJzdE5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmRyaXZlcj8ubGFzdE5hbWVcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlID09PSAnbG9hZC1kaXNwYXRjaGVzLXR0ZCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRyYWlsZXI/LnRyYWlsZXJOdW1iZXIudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50cnVjaz8udHJ1Y2tOdW1iZXIudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5kcml2ZXI/LmZpcnN0TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoJyAnLCBpdGVtPy5kcml2ZXI/Lmxhc3ROYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGUgIT09ICdsb2FkLWRpc3BhdGNoZXMtdHRkJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm5hbWUhLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgICB9KSBhcyBPcHRpb25Nb2RlbDtcblxuICAgICAgICAgICAgLy8gTXVsdGlTZWxlY3QgRHJvcGRvd25cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTXVsdGlzZWxlY3RTZWxlY3QoZXhpc3RJdGVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRHJvcGRvd24gbGFiZWxzIG9wdGlvbiBzZWxlY3RlZFxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhYmVsTW9kZSA9PT0gJ0xhYmVsJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gZXhpc3RJdGVtIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShleGlzdEl0ZW0hLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcmlnaW5hbE9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoZXhpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0Ryb3Bkb3duVG9nZ2xlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhYmVsTW9kZSA9PT0gJ0NvbG9yJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1Db2xvciA9IGV4aXN0SXRlbSB8fCBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ29sb3IuZW1pdCh0aGlzLmFjdGl2ZUl0ZW1Db2xvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTm9ybWFsXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0VmFsdWUoZXhpc3RJdGVtPy5uYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KGV4aXN0SXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IGV4aXN0SXRlbSB8fCBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2goc2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIFNpbmdsZSBEcm9wZG93blxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhW1xuICAgICAgICAgICAgICAgICdncm91cHMnLFxuICAgICAgICAgICAgICAgICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAnZnVlbC1mcmFuY2hpc2UnLFxuICAgICAgICAgICAgICAgICdsb2FkLWRpc3BhdGNoZXMtdHRkJyxcbiAgICAgICAgICAgIF0uaW5jbHVkZXModGhpcy5fdGVtcGxhdGUpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHNlYXJjaFRleHQ/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0/Lm5hbWUgIT09IHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5uYW1lID09PSBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVykgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoJyAtICcsIGl0ZW0uZGVzY3JpcHRpb24hKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGUgIT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5TVkdURVhUX0RJU1BBVENIX1RFTVBMQVRFICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmlzQWRkcmVzc0Ryb3Bkb3duXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5pc0ludmFsaWRTZWFyY2hJbkRyb3Bkb3duID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmlzSW52YWxpZFNlYXJjaEluRHJvcGRvd24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgWyd0cnVjaycsICd0cmFpbGVyJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnPy5kcm9wZG93bkltYWdlSW5wdXQ/LnRlbXBsYXRlIVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25JbWFnZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZW1wdHlPcHRpb25zV2loQWRkTmV3ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9uc1swXS5uYW1lID09PSBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVztcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fb3B0aW9ucy5sZW5ndGggfHwgZW1wdHlPcHRpb25zV2loQWRkTmV3KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlID09PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmlucHV0Q29uZmlnLmlzRGlzcGF0Y2hMb2NhdGlvbkRyb3Bkb3duICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhZW1wdHlPcHRpb25zV2loQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogNzY1NSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA3NjU0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLk5PX1JFU1VMVFMsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVBbGxJdGVtc0luSW5wdXREcm9wZG93bjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT0gJ0FkZHJlc3MnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09PSAnUm91dGluZ0FkZHJlc3MnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWY/Lm9wZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgWyd0cnVjaycsICd0cmFpbGVyJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnPy5kcm9wZG93bkltYWdlSW5wdXQ/LnRlbXBsYXRlIVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25JbWFnZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZz8uZHJvcGRvd25JbWFnZUlucHV0ISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICBoaWRlQWxsSXRlbXNJbklucHV0RHJvcGRvd246IGZhbHNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gR3JvdXAgRHJvcGRvd24gSXRlbXNcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc2VhcmNoVGV4dD8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGUgPT09ICdncm91cHMnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLm9yaWdpbmFsT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkR3JvdXBzID0gZWxlbWVudC5ncm91cHMhLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YkVsZW1lbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJFbGVtZW50Py5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogZmlsdGVyZWRHcm91cHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBmaWx0ZXJlZEdyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uZ3JvdXBzLmxlbmd0aCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogNzY1NCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IERyb3Bkb3duU3RyaW5nRW51bS5OT19SRVNVTFRTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA3NjU0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLk5PX1JFU1VMVFMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm1hcCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3RzOiBlbGVtZW50Py5jb250YWN0cz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ViRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YkVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZ1bGxOYW1lIS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFRleHQ/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWFwKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVzOiBlbGVtZW50Py5zdG9yZXM/LmZpbHRlcigoc3ViRWxlbWVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5hbWUhLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGUgPT09ICdsb2FkLWRpc3BhdGNoZXMtdHRkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mdWxsTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IDc2NTQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLk5PX1JFU1VMVFMsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGUgdGhyb3VnaCBkcm9wZG93biB3aXRoIGtleWJvYXJkIGFycm93c1xuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25OYXZpZ2F0aW9uKHN0ZXA6IG51bWJlcikge1xuICAgICAgICB0aGlzLmRyb3Bkb3duUG9zaXRpb24gKz0gc3RlcDtcblxuICAgICAgICBpZiAodGhpcy5kcm9wZG93blBvc2l0aW9uID4gdGhpcy5fb3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUG9zaXRpb24gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25Qb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Qb3NpdGlvbiA9IHRoaXMuX29wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjc3NDbGFzcyA9ICdkcm9wZG93bi1vcHRpb24taG92ZXJlZCc7XG4gICAgICAgIGxldCBkcm9wZG93bkNvbnRhaW5lciA9IHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoXG4gICAgICAgICAgICAnLmRyb3Bkb3duLW9wdGlvbnMnLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBkcm9wZG93bk9wdGlvbiA9IHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoXG4gICAgICAgICAgICAnLmRyb3Bkb3duLW9wdGlvbicsXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGVsT2Zmc2V0ID1cbiAgICAgICAgICAgIGRyb3Bkb3duT3B0aW9uLmhlaWdodCgpISAqIHRoaXMuZHJvcGRvd25Qb3NpdGlvbiArXG4gICAgICAgICAgICAodGhpcy5kcm9wZG93blBvc2l0aW9uICE9PSAwID8gdGhpcy5kcm9wZG93blBvc2l0aW9uICogNiA6IDApO1xuXG4gICAgICAgIGxldCB2aWV3cG9ydCA9XG4gICAgICAgICAgICBkcm9wZG93bkNvbnRhaW5lci5zY3JvbGxUb3AoKSEgKyBkcm9wZG93bkNvbnRhaW5lci5oZWlnaHQoKSE7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZWxPZmZzZXQgPCBkcm9wZG93bkNvbnRhaW5lci5zY3JvbGxUb3AoKSEgfHxcbiAgICAgICAgICAgIGVsT2Zmc2V0ICsgZHJvcGRvd25PcHRpb24uaGVpZ2h0KCkhID4gdmlld3BvcnRcbiAgICAgICAgKVxuICAgICAgICAgICAgZHJvcGRvd25Db250YWluZXIuc2Nyb2xsVG9wKGVsT2Zmc2V0KTtcblxuICAgICAgICBkcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgLnJlbW92ZUNsYXNzKGNzc0NsYXNzKVxuICAgICAgICAgICAgLmVxKHRoaXMuZHJvcGRvd25Qb3NpdGlvbilcbiAgICAgICAgICAgIC5hZGRDbGFzcyhjc3NDbGFzcyk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJhcHBsaWNhdGlvbi1kcm9wZG93blwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIGlucHV0Q29uZmlnXG4gICAgICAgICAgICB8IGlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzXG4gICAgICAgICAgICAgICAgOiBtdWx0aXNlbGVjdEl0ZW1zXG4gICAgICAgICAgICAgICAgOiBpc011bHRpU2VsZWN0SW5wdXRGb2N1c1xuICAgIFwiXG4+XG4gICAgQGlmIChtdWx0aXNlbGVjdEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICA8cCBjbGFzcz1cIm11bHRpc2VsZWN0LWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBtdWx0aVNlbGVjdExhYmVsIH19XG4gICAgICAgIDwvcD5cbiAgICB9XG4gICAgPCEtLSBNdWx0aXNlbGVjdCBhcnJvdyAtLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnLm11bHRpU2VsZWN0RHJvcGRvd25BY3RpdmUpIHtcbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWFycm93XCJcbiAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy5pbnB1dERyb3Bkb3duQXJyb3dTdmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKVwiXG4gICAgICAgID48L3N2Zy1pY29uPlxuICAgIH1cbiAgICA8IS0tIE11bHRpc2VsZWN0IGNsZWFyIGFsbCAtLT5cbiAgICBAaWYgKG11bHRpc2VsZWN0SXRlbXMubGVuZ3RoICYmICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtY2xlYXIgbXVsdGlzZWxlY3QtY2xlYXJcIlxuICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhciBBbGxcIlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjMmYyZjJmXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyLXhcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8IS0tIE11bHRpc2VsZWN0IGl0ZW1zIC0tPlxuICAgIEBpZiAoXG4gICAgICAgIGlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24gJiZcbiAgICAgICAgbXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiZcbiAgICAgICAgX3RlbXBsYXRlID09PSAnbXVsdGlzZWxlY3QnXG4gICAgKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcyB7eyBtdWx0aXNlbGVjdFRlbXBsYXRlIH19XCI+XG4gICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdCBvZiBtdWx0aXNlbGVjdEl0ZW1zO1xuICAgICAgICAgICAgICAgIGxldCBpbmQgPSAkaW5kZXg7XG4gICAgICAgICAgICAgICAgdHJhY2sgaW5kXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbXVsdGlTZWxlY3Q/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgLSBUb3RhbCBDb3VudGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubXVsdGlTZWxlY3RJdGVtUmFuZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0Py50b3RhbENvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8uYWN0aXZlQ291bnRlciB9fSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py50b3RhbENvdW50ZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIENvdW50ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tdWx0aVNlbGVjdEl0ZW1SYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIW11bHRpU2VsZWN0Py50b3RhbENvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8uYWN0aXZlQ291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlTXVsdGlTZWxlY3RJdGVtKGluZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbS1jbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiMyZjJmMmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImlucHV0RHJvcGRvd25TdmdSb3V0ZXMueENsZWFyU3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIERyb3Bkb3duIHNlYXJjaCAtLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnLmlzSWNvbklucHV0KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGlucHV0LWljb24tY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICB2YWxpZDpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaXNWYWxpZEljb24gJiZcbiAgICAgICAgICAgICAgICAgICAgIWlucHV0Q29uZmlnLmlucHV0SWNvbj8uaW5jbHVkZXMoJ2N1c3RvbScpLFxuICAgICAgICAgICAgICAgIGFjdGl2ZTogcG9wb3ZlclJlZj8uaXNPcGVuKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiY2FJbnB1dERyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiY2EtaW5wdXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCJbJ2JvdHRvbS1sZWZ0J11cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtaWNvblwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXREcm9wZG93blN2Z1JvdXRlcy5yZXBhaXJQbVN2Z1JvdXRlICtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaW5wdXRJY29uXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGFwcC1jYS1pbnB1dFxuICAgICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJjYUlucHV0RHJvcGRvd25Qb3BvdmVyXCJcbiAgICAgICAgICAgIHBvcG92ZXJDbGFzcz1cImNhLWlucHV0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiXG4gICAgICAgICAgICAgICAgX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJ1xuICAgICAgICAgICAgICAgICAgICA/IFsnYm90dG9tLWxlZnQnLCAndG9wLWxlZnQnXVxuICAgICAgICAgICAgICAgICAgICA6IFsnYm90dG9tLWxlZnQnXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImdldFN1cGVyQ29udHJvbCEgfCBmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICBbaW5jb3JyZWN0VmFsdWVdPVwiaXNJbmNvcnJlY3RWYWx1ZVwiXG4gICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW3NlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXT1cIlxuICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgPyBfYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBhY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cIl90ZW1wbGF0ZVwiXG4gICAgICAgICAgICAoYmx1cklucHV0KT1cIm9uQmx1cklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgKGNsZWFyKT1cIm9uQ2xlYXJJbnB1dEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKGNvbW1hbmRFdmVudCk9XCJjb21tYW5kRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2hvd0hpZGVEcm9wZG93bik9XCJzaG93SGlkZURyb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgKGRyb3BEb3duS2V5TmF2aWdhdGlvbik9XCJkcm9wRG93bktleU5hdmlnYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoaW5jb3JyZWN0RXZlbnQpPVwib25JbmNvcnJlY3RJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gaWNvbiBpbnN0ZWFkIG9mIGlucHV0IC0tPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY2FJbnB1dERyb3Bkb3duUG9wb3Zlcj5cbiAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEcm9wZG93biBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnPy5tZXJnZURyb3Bkb3duQm9keVdpdGhJbnB1dCAmJiBfb3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucy1kaXZpZGVyIHt7XG4gICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzcGF0Y2hfZHJvcGRvd25dPVwiX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJ1wiXG4gICAgICAgID48L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKFxuICAgICAgICAoaW5wdXRDb25maWc/Lm5hbWUgIT0gJ0FkZHJlc3MnICYmXG4gICAgICAgICAgICBpbnB1dENvbmZpZz8ubmFtZSAhPSAnUm91dGluZ0FkZHJlc3MnICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCkgfHxcbiAgICAgICAgKChpbnB1dENvbmZpZz8ubmFtZSA9PSAnQWRkcmVzcycgfHxcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lID09ICdSb3V0aW5nQWRkcmVzcycpICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgICAgICAgX29wdGlvbnM/Lmxlbmd0aClcbiAgICApIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbERyb3Bkb3duKCRldmVudC50YXJnZXQpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICBzY3JvbGw6IF9vcHRpb25zIHwgY2FEcm9wZG93bkNvdW50OiBfdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZ3JvdXBzJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZ3JvdXBzJyB8fFxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1mdWVsLWZyYW5jaGlzZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJyxcbiAgICAgICAgICAgICAgICAnbWVyZ2UtZHJvcGRvd24tYm9keS13aXRoLWlucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubWVyZ2VEcm9wZG93bkJvZHlXaXRoSW5wdXQsXG4gICAgICAgICAgICAgICAgJ25vLXJlc3VsdC1jb250YWluZXInOiBfb3B0aW9uc1swXT8ubmFtZSA9PT0gJ05vIFJlc3VsdHMnLFxuICAgICAgICAgICAgICAgICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zICB7eyBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3MgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIEBzd2l0Y2ggKF90ZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlNWR19URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlNWR1RFWFRfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9ESVNQQVRDSF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ERVRBSUxTX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc29ydF09XCJfc29ydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uR1JPVVBTKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZ3JvdXBzPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTVVMVElTRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1dPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25NdWx0aXNlbGVjdFNlbGVjdCk9XCJvbk11bHRpc2VsZWN0U2VsZWN0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MQUJFTFMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxNb2RlXT1cImxhYmVsTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbkFkZE5ld109XCJfY2FuQWRkTmV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxhYmVscz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRJU1BBVENIKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRpc3BhdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFU19UVEQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSX0NPTlRBQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfU0hJUFBFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlRFWFRfQ09VTlRFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkZVRUxfRlJBTkNISVNFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvZ2dsZU5lc3RlZExpc3QpPVwidG9nZ2xlTmVzdGVkTGlzdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtR3JvdXApPVwib25BY3RpdmVJdGVtR3JvdXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRPVUJMRV9URVhUX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRPVUJMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uVFJJUExFX0NPTFVNTl9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tdHJpcGxlLXRleHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5QQVlST0xMX1RSVUNLUykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3M+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRlZmF1bHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
1201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUd2QixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlELFlBQVk7QUFDWixPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDWixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLFlBQVk7QUFDWixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFLdEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDO0FBQ3hJLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FBQ3BKLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHNGQUFzRixDQUFDO0FBQzNJLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ3ZKLE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxNQUFNLGdIQUFnSCxDQUFDO0FBQ2pMLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzFILE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLG9GQUFvRixDQUFDO0FBQ3pJLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzFILE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHNGQUFzRixDQUFDO0FBQzNJLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLHNHQUFzRyxDQUFDO0FBQ2xLLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLHNHQUFzRyxDQUFDO0FBQ2xLLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ3ZKLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBGQUEwRixDQUFDO0FBQ2pKLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ3ZKLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDBGQUEwRixDQUFDO0FBRWpKLFFBQVE7QUFDUixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRS9FLFVBQVU7QUFDVixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RCxhQUFhO0FBQ2IsT0FBTyxFQUVILFdBQVcsRUFFWCxtQkFBbUIsR0FDdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4QixhQUFhO0FBQ2IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFdEYsUUFBUTtBQUNSLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV2RSxVQUFVO0FBQ1YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBOEM3QyxNQUFNLE9BQU8sd0JBQXdCO0lBU2pDLElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxLQUFLLEtBQUssa0JBQWtCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQ3BDLENBQUM7Z0JBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRTdDLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3ZCLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUlELElBQWEsU0FBUyxDQUFDLEtBQWM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQyxDQUFDLDBCQUEwQjtJQU01QixJQUFhLElBQUksQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxJQUFhLFVBQVUsQ0FBQyxLQUF5QjtRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2YsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixVQUFVLEVBQUUsSUFBSTtTQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFekIsZUFBZTtRQUNmLElBQ0ksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDdkQsSUFBSSxDQUFDLFdBQVcsRUFDbEIsQ0FBQztZQUNDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FDNUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN6QyxDQUFDO1lBQ04sQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHO3dCQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7d0JBQ25CLFVBQVUsRUFBRSxLQUFLO3FCQUNwQixDQUFDO29CQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQy9CLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLENBQUM7UUFDTCxDQUFDO1FBQ0Qsa0JBQWtCO2FBQ2IsQ0FBQztZQUNGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLGVBQWdCLENBQUMsVUFBVSxDQUM1QixLQUFLLEVBQUUsTUFBTTt3QkFDVCxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU07d0JBQ2YsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJOzRCQUNYLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSTs0QkFDYixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUN2QyxDQUFDO29CQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUM7d0JBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUc7NEJBQ2YsR0FBRyxJQUFJLENBQUMsV0FBVzs0QkFDbkIsVUFBVSxFQUFFLEtBQUs7eUJBQ3BCLENBQUM7b0JBQ04sQ0FBQztvQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMvQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDWixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFPRCxJQUFhLE9BQU8sQ0FBQyxNQUFxQjtRQUN0QyxJQUFJLE1BQU07WUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUV4QyxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQixLQUFLLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUN2QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDaEQsQ0FBQztnQkFFRixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFDLE1BQU07WUFDVixDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDTixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQ0ksSUFBSSxDQUFDLFVBQVU7d0JBQ2YsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFDakQsQ0FBQzt3QkFDQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQzs0QkFDbEIsRUFBRSxFQUFFLElBQUk7NEJBQ1IsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE9BQU87eUJBQ25DLENBQUMsQ0FBQztvQkFDUCxDQUFDO29CQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDekMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNSLE1BQU07WUFDVixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsSUFBYSx1QkFBdUIsQ0FBQyxNQUFxQjtRQUN0RCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZELE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQTRERCxZQUNtQixZQUF1QixFQUMvQixrQkFBc0MsRUFDckMsS0FBd0IsRUFDeEIsUUFBbUI7UUFIWixpQkFBWSxHQUFaLFlBQVksQ0FBVztRQUMvQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQVc7UUEzTS9CLGVBQVUsR0FBWSxLQUFLLENBQUM7UUE0RjVCLHFFQUFxRTtRQUM5RCxhQUFRLEdBQWtCLEVBQUUsQ0FBQztRQW1EMUIsaUJBQVksR0FDbEIsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDakMsa0JBQWEsR0FDbkIsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFDbkMsc0JBQWlCLEdBQ3ZCLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQ2pDLHNCQUFpQixHQUN2QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3JCLGtCQUFhLEdBQ25CLElBQUksWUFBWSxFQUFXLENBQUM7UUFDdEIsYUFBUSxHQUdiLElBQUksWUFBWSxFQUFnRCxDQUFDO1FBQzVELG1CQUFjLEdBQ3BCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDdEIseUJBQW9CLEdBQzFCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDVixvQkFBZSxHQUNqQyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ1IscUJBQWdCLEdBQ25DLElBQUksWUFBWSxFQUFlLENBQUM7UUFDVCxvQkFBZSxHQUN0QyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRWhDLGtCQUFrQjtRQUNYLG9CQUFlLEdBQWtCLEVBQUUsQ0FBQztRQUUzQyxhQUFhO1FBQ04scUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBRXBDLCtCQUErQjtRQUN4QixxQkFBZ0IsR0FBa0IsRUFBRSxDQUFDO1FBQ3JDLDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUloRCxXQUFXO1FBQ0osZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFcEMsb0NBQW9DO1FBQzVCLHFCQUFnQixHQUFXLENBQUMsQ0FBQyxDQUFDO1FBTS9CLDJCQUFzQixHQUFHLHNCQUFzQixDQUFDO1FBQ2hELDZCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBSTNELFVBQVU7UUFDRixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVFuQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFDckMsQ0FBQztJQUVELFVBQVUsQ0FBQyxDQUFNLElBQVMsQ0FBQztJQUUzQixnQkFBZ0IsQ0FBQyxDQUFNLElBQVMsQ0FBQztJQUVqQyxpQkFBaUIsQ0FBQyxDQUFNLElBQVMsQ0FBQztJQUVsQyxRQUFRO1FBQ0osY0FBYztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNuRCxDQUFDO1FBRUQsU0FBUztRQUNULElBQUksQ0FBQyxlQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ25DLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFDaEIsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNWLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixPQUFPO1lBQ1gsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDM0QsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNaLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBeUI7UUFDN0MsTUFBTSxNQUFNLEdBQUcsS0FBb0IsQ0FBQztRQUVwQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDakUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQztZQUUzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0wsQ0FBQztJQUVNLFlBQVksQ0FBQyxNQUFtQixFQUFFLEtBQVc7UUFDaEQsZ0RBQWdEO1FBQ2hELElBQ0ksSUFBSSxDQUFDLFNBQVMsS0FBSyxnQkFBZ0I7WUFDbkMsTUFBTSxFQUFFLFdBQVc7WUFDbkIsQ0FBQyxLQUFLLEVBQ1IsQ0FBQztZQUNDLE9BQU87UUFDWCxDQUFDO1FBQ0Qsd0NBQXdDO1FBQ3hDLElBQUksTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDN0IsT0FBTztRQUNYLENBQUM7UUFDRCxZQUFZO1FBQ1osSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNDLE9BQU87UUFDWCxDQUFDO1FBQ0QsVUFBVTthQUNMLElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMxQixpQkFBaUI7WUFDakIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUNELDBCQUEwQjtpQkFDckIsQ0FBQztnQkFDRixpQkFBaUI7Z0JBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUNwQyxDQUFDO29CQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELGtCQUFrQjtxQkFDYixDQUFDO29CQUNGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsZ0JBQWdCO2FBQ1gsQ0FBQztZQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLGtDQUFrQztZQUNsQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7b0JBQzFCLElBQUksQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO29CQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO29CQUU5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDdEQsQ0FBQztZQUNMLENBQUM7WUFDRCxrQ0FBa0M7aUJBQzdCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7Z0JBRTFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFFckMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO29CQUM3QyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FDNUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDL0MsQ0FBQztvQkFFRixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQzt3QkFDdEMsSUFBSSxDQUFDLGVBQWdCLENBQUMsVUFBVSxDQUM1QixLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQzVDLENBQUM7d0JBQ0YsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQzt3QkFDdEIsS0FBSzs0QkFDRCxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0NBQ25CLEdBQUcsTUFBTTtnQ0FDVCxHQUFHLEtBQUs7Z0NBQ1IsT0FBTyxFQUFFLEVBQUU7NkJBQ2QsQ0FBQzs0QkFDSixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3pDLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixLQUFLOzRCQUNELENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQ0FDbkIsR0FBRyxNQUFNO2dDQUNULEdBQUcsS0FBSzs2QkFDWCxDQUFDOzRCQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDekMsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztZQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFFcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGdCQUFnQixFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQztJQUNMLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxLQUEwQztRQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxhQUFhO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2YsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0I7Z0JBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVztnQkFDdEMsQ0FBQyxDQUFDLEVBQUU7WUFDUixrQkFBa0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQW9CO1FBQ3BDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlDLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssd0JBQXdCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUN0QixNQUFNLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDZixFQUFFLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZ0IsQ0FBQyxLQUFLO1NBQ3BDLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUVuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRTlELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFVBQVU7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRztnQkFDZixHQUFHLElBQUksQ0FBQyxXQUFXO2dCQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLO2dCQUNqQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWU7b0JBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7b0JBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU87Z0JBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZTtvQkFDdkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSTtvQkFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSztnQkFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlO29CQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJO29CQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJO2FBQy9CLENBQUM7WUFFRixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFdBQVcsR0FBRztnQkFDZixHQUFHLElBQUksQ0FBQyxXQUFXO2dCQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLO2FBQ3BDLENBQUM7UUFDTixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDdEIsTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFlBQVk7UUFDZixJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2YsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixRQUFRLEVBQUU7Z0JBQ04sTUFBTSxFQUFFLElBQUk7Z0JBQ1osSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsWUFBWSxFQUFFO29CQUNWLEtBQUssRUFBRTt3QkFDSCxJQUFJLEVBQUUsU0FBUzt3QkFDZixlQUFlLEVBQUUsU0FBUztxQkFDN0I7b0JBQ0QsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsR0FBRyxFQUFFLHNCQUFzQixDQUFDLGNBQWM7aUJBQzdDO2dCQUNELGFBQWEsRUFBRTtvQkFDWCxLQUFLLEVBQUU7d0JBQ0gsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsZUFBZSxFQUFFLFNBQVM7cUJBQzdCO29CQUNELElBQUksRUFBRSxRQUFRO29CQUNkLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxTQUFTO2lCQUN4QzthQUNKO1lBQ0QsV0FBVyxFQUFFLEVBQUU7U0FDbEIsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDN0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVNLGdCQUFnQixDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFhLEVBQUUsSUFBaUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxNQUFtQjtRQUN2QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLE1BQU0sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXBELE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBRTNCLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFjO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxLQUFjO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLGlCQUFpQjtZQUNqQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzlCLENBQUM7WUFDRCxrQkFBa0I7aUJBQ2IsQ0FBQztnQkFDRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBZTtRQUNuQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsTUFBTSxDQUFDO1FBQzFDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDN0IsWUFBWTtZQUNaLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDVixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQztnQkFFRCxrRUFBa0U7Z0JBQ2xFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsZUFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUQsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUN4QyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsZUFBZ0IsQ0FBQyxLQUFLLENBQ3RELENBQUM7b0JBRUYsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3pCLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUIsQ0FBQztZQUNMLENBQUM7WUFDRCxXQUFXO2lCQUNOLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRztvQkFDZixHQUFHLElBQUksQ0FBQyxXQUFXO29CQUNuQixXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWdCLENBQUMsS0FBSzt3QkFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFnQixDQUFDLEtBQUs7d0JBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQjs0QkFDckMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXOzRCQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJO2lCQUNqQyxDQUFDO2dCQUVGLElBQUksQ0FBQyxlQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFckMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUc7d0JBQ2YsR0FBRyxJQUFJLENBQUMsV0FBVzt3QkFDbkIsV0FBVyxFQUFFLEVBQUU7cUJBQ2xCLENBQUM7Z0JBQ04sQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsZ0JBQWdCO1FBQ2hCLElBQ0ksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQztZQUN2RCxDQUFDLE1BQU0sRUFDVCxDQUFDO1lBQ0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDTCxDQUFDO0lBRU0scUJBQXFCLENBQUMsRUFDekIsT0FBTyxFQUNQLElBQUksR0FJUDtRQUNHLGdCQUFnQjtRQUNoQixJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELGNBQWM7UUFDZCxJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsZUFBZTtRQUNmLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUN2QyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQkFDeEMsQ0FBQztnQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN6QyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxlQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDekMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsZ0JBQWdCO1FBQ2hCLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQzlDLDBCQUEwQixFQUMxQixJQUFJLENBQ1AsQ0FBQztZQUVGLG9CQUFvQjtZQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDbkIsRUFBRSxFQUFFLElBQUk7b0JBQ1IsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE9BQU87b0JBQ2hDLFlBQVksRUFBRSxJQUFJO2lCQUNyQixDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGdCQUFnQixFQUFFLENBQUM7d0JBQ3RDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVk7NEJBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVk7NEJBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3ZDLENBQUM7eUJBQU0sQ0FBQzt3QkFDSixZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNOzRCQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFOzRCQUM1QyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ25ELENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEIsSUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJO2dCQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQzlCLENBQUM7Z0JBQ0MsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUV4QixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztvQkFDdEMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWTt3QkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWTt3QkFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO2dCQUNqQyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTTt3QkFDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRTt3QkFDNUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuRCxDQUFDO2dCQUVELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdkQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsOEZBQThGO0lBQ3ZGLG1CQUFtQixDQUFDLE1BQW1CO1FBQzFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBRW5DLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM5RCxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN4QixPQUFPO29CQUNILEdBQUcsSUFBSTtvQkFDUCxNQUFNLEVBQUUsSUFBSTtpQkFDZixDQUFDO1lBQ04sQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2YsT0FBTzt3QkFDSCxHQUFHLElBQUk7d0JBQ1AsTUFBTSxFQUFFLEtBQUs7cUJBQ2hCLENBQUM7Z0JBQ04sQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU87d0JBQ0gsR0FBRyxJQUFJO3dCQUNQLE1BQU0sRUFBRSxJQUFJO3FCQUNmLENBQUM7Z0JBQ04sQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRS9DLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUNoRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsUUFBUTthQUN6QyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDN0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDbkIseUJBQXlCLEVBQUUsSUFBSTtTQUNsQyxDQUFDO0lBQ04sQ0FBQztJQUVNLHFCQUFxQixDQUFDLEtBQWE7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzlDLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzlDLE9BQU87b0JBQ0gsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO29CQUMvQixNQUFNLEVBQUUsS0FBSztpQkFDaEIsQ0FBQztZQUNOLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUNoRCxDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRztnQkFDZixHQUFHLElBQUksQ0FBQyxXQUFXO2dCQUNuQix5QkFBeUIsRUFBRSxTQUFTO2FBQ3ZDLENBQUM7WUFFRixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsUUFBUTtpQkFDekMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2lCQUM3QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMvQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVNLHlCQUF5QixDQUFDLFlBQXFCO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7WUFDbkIseUJBQXlCLEVBQUUsU0FBUztTQUN2QyxDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsWUFBWTtZQUNqQyxDQUFDLENBQUMsWUFBWTtZQUNkLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3ZDLE9BQU87Z0JBQ0gsR0FBRyxJQUFJO2dCQUNQLE1BQU0sRUFBRSxLQUFLO2FBQ2hCLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO0lBQzFDLENBQUM7SUFFTSx5QkFBeUI7UUFDNUIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzlCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBRTdELElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUNwQyxDQUFDO1lBRUYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQztJQUNELDZFQUE2RTtJQUVyRSx5QkFBeUIsQ0FDN0IsWUFBZ0MsRUFDaEMsSUFBUztRQUVULGlCQUFpQjtRQUNqQixJQUNJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksU0FBUztZQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQztZQUM5QyxDQUFDLENBQUMsWUFBWSxJQUFJLFlBQVksSUFBSSxFQUFFLENBQUMsRUFDdkMsQ0FBQztZQUNDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN6QyxDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQ0ksQ0FBQyxZQUFZO1lBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssMEJBQTBCLEVBQ3RELENBQUM7WUFDQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWdCLENBQUMsS0FBSztnQkFDakMsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTTthQUMvQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLGVBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN4QyxDQUFDO2dCQUNELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0MsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1osQ0FBQztRQUVELGlCQUFpQjtRQUNqQixJQUFJLFlBQVksS0FBSyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNqQyxpQkFBaUI7Z0JBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUNwQyxDQUFDO29CQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7d0JBQ25CLEVBQUUsRUFBRSxJQUFJO3dCQUNSLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO3FCQUNuQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNMLENBQUM7WUFDRCxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7UUFDRCx1QkFBdUI7YUFDbEIsQ0FBQztZQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRO2lCQUMxQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDVixVQUFVO2dCQUNWLElBQ0ksSUFBSSxDQUFDLElBQUk7b0JBQ1QsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxTQUFTO3dCQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxFQUNoRCxDQUFDO29CQUNDLE9BQU87d0JBQ0gsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO3dCQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87d0JBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztxQkFDeEIsQ0FBQztnQkFDTixDQUFDO2dCQUVELHNCQUFzQjtxQkFDakIsSUFDRDtvQkFDSSxxQkFBcUI7b0JBQ3JCLGFBQWE7b0JBQ2IsY0FBYztpQkFDakIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUM1QixDQUFDO29CQUNDLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO2dCQUN2QixDQUFDO2dCQUVELHdGQUF3RjtxQkFDbkYsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3JCLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO2dCQUN2QixDQUFDO2dCQUVELE9BQU87cUJBQ0YsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDckMsT0FBTzt3QkFDSCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7d0JBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO3FCQUNsRCxDQUFDO2dCQUNOLENBQUM7Z0JBQ0Qsa0JBQWtCO3FCQUNiLElBQ0QsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQ2hDLENBQUM7b0JBQ0MsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQ0QsVUFBVTtxQkFDTCxDQUFDO29CQUNGLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUNaLE9BQU87NEJBQ0gsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFOzRCQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt5QkFDbEIsQ0FBQztvQkFDTixDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNYLGlCQUFpQjtnQkFDakIsSUFDSSxDQUFDLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7b0JBQ25ELFlBQWEsQ0FBQyxTQUFTLENBQ25CLENBQUMsRUFDRCxZQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUNqQyxLQUFLLElBQUksRUFBRSxJQUFLLENBQUMsV0FBVyxFQUFFLEVBQ2pDLENBQUM7b0JBQ0MsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUM7Z0JBRUQsbUNBQW1DO2dCQUNuQyxJQUFJLElBQUksRUFBRSxJQUFJO29CQUNWLElBQ0k7d0JBQ0ksYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGNBQWM7cUJBQ2pCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7d0JBQzFCLFlBQVk7NEJBQ1IsRUFBRSxXQUFXLEVBQUU7NkJBQ2QsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFDMUMsQ0FBQzt3QkFDQyxPQUFPLElBQUksQ0FBQztvQkFDaEIsQ0FBQztnQkFDTCwyQkFBMkI7Z0JBQzNCLElBQ0ksSUFBSSxFQUFFLE9BQU8sRUFBRSxhQUFhO29CQUM1QixJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVc7b0JBQ3hCLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUztvQkFDdkIsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRO29CQUV0QixJQUNJLElBQUksQ0FBQyxTQUFTLEtBQUsscUJBQXFCO3dCQUN4QyxZQUFZOzRCQUNSLEVBQUUsV0FBVyxFQUFFOzZCQUNkLFFBQVEsQ0FDTCxJQUFJLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FDN0M7d0JBQ0wsWUFBWTs0QkFDUixFQUFFLFdBQVcsRUFBRTs2QkFDZCxRQUFRLENBQ0wsSUFBSSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsV0FBVyxFQUFFLENBQ3pDO3dCQUNMLFlBQVk7NEJBQ1IsRUFBRSxXQUFXLEVBQUU7NkJBQ2QsUUFBUSxDQUNMLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUzs2QkFDbEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQzs2QkFDbkMsV0FBVyxFQUFFLENBQ3JCLEVBQ1AsQ0FBQzt3QkFDQyxPQUFPLElBQUksQ0FBQztvQkFDaEIsQ0FBQztnQkFFTCxVQUFVO2dCQUNWLElBQ0ksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWE7b0JBQy9CLElBQUksQ0FBQyxTQUFTLEtBQUsscUJBQXFCO29CQUN4QyxZQUFZLEVBQUUsV0FBVyxFQUFFO3dCQUN2QixJQUFJLEVBQUUsSUFBSyxDQUFDLFdBQVcsRUFBRSxFQUMvQixDQUFDO29CQUNDLE9BQU8sSUFBSSxDQUFDO2dCQUNoQixDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBZ0IsQ0FBQztZQUV0Qix1QkFBdUI7WUFDdkIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBRUQsa0NBQWtDO1lBQ2xDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxlQUFnQixDQUFDLFFBQVEsQ0FBQyxTQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO29CQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7b0JBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDN0MsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQztvQkFFekMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3RELENBQUM7WUFDTCxDQUFDO1lBQ0QsU0FBUztpQkFDSixDQUFDO2dCQUNGLElBQUksQ0FBQyxlQUFnQixDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdDLENBQUM7WUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLFVBQWtCO1FBQzdCLGtCQUFrQjtRQUNsQixJQUNJLENBQUM7WUFDRyxRQUFRO1lBQ1IscUJBQXFCO1lBQ3JCLGdCQUFnQjtZQUNoQixxQkFBcUI7U0FDeEIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUM1QixDQUFDO1lBQ0MsSUFDSSxVQUFVLEVBQUUsTUFBTTtnQkFDbEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLO2dCQUMzQixJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFDeEQsQ0FBQztnQkFDQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2pELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxPQUFPO3dCQUFFLE9BQU8sSUFBSSxDQUFDO29CQUMxRCxPQUFPLElBQUksQ0FBQyxJQUFJO3dCQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSTs2QkFDSixXQUFXLEVBQUU7NkJBQ2IsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJOzRCQUNULENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSTtpQ0FDSixNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFZLENBQUM7aUNBQ2hDLFdBQVcsRUFBRTtpQ0FDYixRQUFRLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDOzRCQUN6QyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQyxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUNJLElBQUksQ0FBQyxTQUFTO29CQUNWLElBQUksQ0FBQyx3QkFBd0I7eUJBQ3hCLHlCQUF5QjtvQkFDbEMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQ3pCLENBQUM7b0JBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxlQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztvQkFDdEQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLElBQUksQ0FBQyxlQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7b0JBQ3ZELENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxJQUNJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxRQUFTLENBQ2xELEVBQ0gsQ0FBQztvQkFDQyxJQUFJLENBQUMsV0FBVyxHQUFHO3dCQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7d0JBQ25CLGtCQUFrQixFQUFFOzRCQUNoQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQW1COzRCQUN2QyxNQUFNLEVBQUUsSUFBSTt5QkFDZjtxQkFDSixDQUFDO2dCQUNOLENBQUM7Z0JBRUQsTUFBTSxxQkFBcUIsR0FDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztvQkFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsT0FBTyxDQUFDO2dCQUV6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUkscUJBQXFCLEVBQUUsQ0FBQztvQkFDakQsSUFDSSxJQUFJLENBQUMsU0FBUyxLQUFLLDJCQUEyQjt3QkFDOUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLDBCQUEwQjt3QkFDNUMsQ0FBQyxxQkFBcUIsRUFDeEIsQ0FBQzt3QkFDQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzs0QkFDZixFQUFFLEVBQUUsSUFBSTs0QkFDUixJQUFJLEVBQUUsa0JBQWtCLENBQUMsT0FBTzt5QkFDbkMsQ0FBQyxDQUFDO29CQUNQLENBQUM7b0JBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQ2YsRUFBRSxFQUFFLElBQUk7d0JBQ1IsSUFBSSxFQUFFLGtCQUFrQixDQUFDLFVBQVU7cUJBQ3RDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsV0FBVyxHQUFHO3dCQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7d0JBQ25CLDJCQUEyQixFQUFFLElBQUk7cUJBQ3BDLENBQUM7b0JBQ0YsSUFDSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFNBQVM7d0JBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDO3dCQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFDNUIsQ0FBQzt3QkFDQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO29CQUM1QixDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUNyQyxJQUNJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxRQUFTLENBQ2xELEVBQ0gsQ0FBQztvQkFDQyxJQUFJLENBQUMsV0FBVyxHQUFHO3dCQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVc7d0JBQ25CLGtCQUFrQixFQUFFOzRCQUNoQixHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsa0JBQW1COzRCQUN4QyxNQUFNLEVBQUUsS0FBSzt5QkFDaEI7cUJBQ0osQ0FBQztnQkFDTixDQUFDO2dCQUVELElBQUksQ0FBQyxXQUFXLEdBQUc7b0JBQ2YsR0FBRyxJQUFJLENBQUMsV0FBVztvQkFDbkIsMkJBQTJCLEVBQUUsS0FBSztpQkFDckMsQ0FBQztZQUNOLENBQUM7UUFDTCxDQUFDO1FBQ0QsdUJBQXVCO2FBQ2xCLENBQUM7WUFDRixJQUNJLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFDNUMsQ0FBQztnQkFDQyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWU7eUJBQy9CLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO3dCQUNiLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxNQUFPLENBQUMsTUFBTSxDQUN6QyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ1gsVUFBVSxFQUFFLElBQUk7NEJBQ1osRUFBRSxXQUFXLEVBQUU7NkJBQ2QsUUFBUSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUM5QyxDQUFDO3dCQUNGLE9BQU87NEJBQ0gsR0FBRyxPQUFPOzRCQUNWLE1BQU0sRUFBRSxjQUFjOzRCQUN0QixLQUFLLEVBQUUsY0FBYzt5QkFDeEIsQ0FBQztvQkFDTixDQUFDLENBQUM7eUJBQ0QsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUUxQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7NEJBQ2YsS0FBSyxFQUFFO2dDQUNIO29DQUNJLEVBQUUsRUFBRSxJQUFJO29DQUNSLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxVQUFVO2lDQUN0Qzs2QkFDSjs0QkFDRCxNQUFNLEVBQUU7Z0NBQ0o7b0NBQ0ksRUFBRSxFQUFFLElBQUk7b0NBQ1IsSUFBSSxFQUFFLGtCQUFrQixDQUFDLFVBQVU7aUNBQ3RDOzZCQUNKO3lCQUNKLENBQUMsQ0FBQztvQkFDUCxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLHFCQUFxQixFQUFFLENBQUM7b0JBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTt3QkFDakQsT0FBTzs0QkFDSCxHQUFHLE9BQU87NEJBQ1YsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUMvQixDQUFDLFVBQVUsRUFBRSxFQUFFO2dDQUNYLE9BQU8sVUFBVTtvQ0FDYixFQUFFLFFBQVMsQ0FBQyxXQUFXLEVBQUU7cUNBQ3hCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQzs0QkFDN0MsQ0FBQyxDQUNKO3lCQUNKLENBQUM7b0JBQ04sQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO3dCQUNqRCxPQUFPOzRCQUNILEdBQUcsT0FBTzs0QkFDVixNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUMzQyxVQUFVO2lDQUNMLElBQUssQ0FBQyxRQUFRLEVBQUU7aUNBQ2hCLFdBQVcsRUFBRTtpQ0FDYixRQUFRLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQzFDO3lCQUNKLENBQUM7b0JBQ04sQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO3dCQUNqRCxJQUNJLElBQUksQ0FBQyxRQUFROzRCQUNULEVBQUUsV0FBVyxFQUFFOzZCQUNkLFFBQVEsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsRUFDekMsQ0FBQzs0QkFDQyxPQUFPLElBQUksQ0FBQzt3QkFDaEIsQ0FBQzt3QkFFRCxPQUFPLEtBQUssQ0FBQztvQkFDakIsQ0FBQyxDQUFDLENBQUM7b0JBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDOzRCQUNmLEVBQUUsRUFBRSxJQUFJOzRCQUNSLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxVQUFVO3lCQUN0QyxDQUFDLENBQUM7b0JBQ1AsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUN6QyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQixDQUFDLElBQVk7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLFFBQVEsR0FBRyx5QkFBeUIsQ0FBQztRQUN6QyxJQUFJLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQ25ELG1CQUFtQixFQUNuQixJQUFJLENBQ1AsQ0FBQztRQUVGLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQ2hELGtCQUFrQixFQUNsQixJQUFJLENBQ1AsQ0FBQztRQUVGLElBQUksUUFBUSxHQUNSLGNBQWMsQ0FBQyxNQUFNLEVBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO1lBQ2hELENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEUsSUFBSSxRQUFRLEdBQ1IsaUJBQWlCLENBQUMsU0FBUyxFQUFHLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFHLENBQUM7UUFFakUsSUFDSSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxFQUFHO1lBQ3pDLFFBQVEsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFHLEdBQUcsUUFBUTtZQUU5QyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUMsY0FBYzthQUNULFdBQVcsQ0FBQyxRQUFRLENBQUM7YUFDckIsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzthQUN6QixRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsWUFBWSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7K0dBcHpDUSx3QkFBd0I7bUdBQXhCLHdCQUF3QixxNEJBdEN0QixDQUFDLGVBQWUsQ0FBQyxxT0MvRmhDLGcwaUJBbVlBO2dCRGhTUSxTQUFTO2dCQUNULFlBQVksNEhBQ1osV0FBVyxzSUFDWCxnQkFBZ0Isc1hBQ2hCLG1CQUFtQixpTkFDbkIsU0FBUyxzV0FDVCxvQkFBb0I7Z0JBQ3BCLFlBQVk7Z0JBQ1osZ0JBQWdCLHdVQUNoQixtQ0FBbUMsZ0tBQ25DLHVDQUF1QyxtTEFDdkMsK0NBQStDLDRMQUMvQyw4QkFBOEIsMEpBQzlCLG1DQUFtQyxxTEFDbkMsOEJBQThCLG1NQUM5QixrQ0FBa0MsK0pBQ2xDLHlDQUF5Qyx1S0FDekMsc0NBQXNDLG1LQUN0Qyx5Q0FBeUMsdUtBQ3pDLHlDQUF5QyxnS0FDekMsbUNBQW1DLGdLQUNuQywwQ0FBMEMsd0tBQzFDLDBDQUEwQyx3S0FDMUMsdUNBQXVDLG1MQUN2QyxxQ0FBcUMsMk1BQ3JDLGdDQUFnQyw0SkFDaEMsdUNBQXVDLDRLQUN2QyxxQ0FBcUM7Z0JBQ3JDLFFBQVE7Z0JBQ1IsZUFBZSwrQ0FDZixpQkFBaUIsbURBQ2pCLGlDQUFpQyx3REFqQ3pCLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsQ0FBQzs7NEZBb0N0RCx3QkFBd0I7a0JBNUNwQyxTQUFTOytCQUNJLHVCQUF1QixjQUdyQixJQUFJLGlCQUNELGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxlQUFlLENBQUMsbUJBQ1gsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLENBQUMsV0FDdEQ7d0JBQ0wsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1Qsb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsbUNBQW1DO3dCQUNuQyx1Q0FBdUM7d0JBQ3ZDLCtDQUErQzt3QkFDL0MsOEJBQThCO3dCQUM5QixtQ0FBbUM7d0JBQ25DLDhCQUE4Qjt3QkFDOUIsa0NBQWtDO3dCQUNsQyx5Q0FBeUM7d0JBQ3pDLHNDQUFzQzt3QkFDdEMseUNBQXlDO3dCQUN6Qyx5Q0FBeUM7d0JBQ3pDLG1DQUFtQzt3QkFDbkMsMENBQTBDO3dCQUMxQywwQ0FBMEM7d0JBQzFDLHVDQUF1Qzt3QkFDdkMscUNBQXFDO3dCQUNyQyxnQ0FBZ0M7d0JBQ2hDLHVDQUF1Qzt3QkFDdkMscUNBQXFDO3dCQUNyQyxRQUFRO3dCQUNSLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixpQ0FBaUM7cUJBQ3BDOzswQkFrTkksSUFBSTtrSUE3TVcsUUFBUTtzQkFBM0IsU0FBUzt1QkFBQyxPQUFPO2dCQUNNLFVBQVU7c0JBQWpDLFNBQVM7dUJBQUMsSUFBSTtnQkFLRixRQUFRO3NCQUFwQixLQUFLO2dCQW1CRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDTyxTQUFTO3NCQUFyQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUlPLElBQUk7c0JBQWhCLEtBQUs7Z0JBTU8sVUFBVTtzQkFBdEIsS0FBSztnQkFxREcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlPLE9BQU87c0JBQW5CLEtBQUs7Z0JBZ0NPLHVCQUF1QjtzQkFBbkMsS0FBSztnQkFlRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLFFBQVE7c0JBQWpCLE1BQU07Z0JBSUcsY0FBYztzQkFBdkIsTUFBTTtnQkFFRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBRWUsZUFBZTtzQkFBcEMsTUFBTTt1QkFBQyxZQUFZO2dCQUVHLGdCQUFnQjtzQkFBdEMsTUFBTTt1QkFBQyxhQUFhO2dCQUVNLGVBQWU7c0JBQXpDLE1BQU07dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBza2lwLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuLy8gYm9vdHN0cmFwXG5pbXBvcnQge1xuICAgIE5nYlBvcG92ZXIsXG4gICAgTmdiUG9wb3Zlck1vZHVsZSxcbiAgICBOZ2JNb2R1bGUsXG59IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuLy8gYW5pbWF0aW9uXG5pbXBvcnQgeyBpbnB1dERyb3Bkb3duQW5pbWF0aW9uIH0gZnJvbSAnLi9hbmltYXRpb25zJztcblxuLy8gY29uZmlnXG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uL2NhLWlucHV0L2NvbmZpZyc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCB7IENhSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9jYS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25TdmdUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tc3ZnLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0RGlzcGF0Y2hUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkdyb3Vwc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1ncm91cHMvY2EtaW5wdXQtZHJvcGRvd24tZ3JvdXBzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1tdWx0aXNlbGVjdC9jYS1pbnB1dC1kcm9wZG93bi1tdWx0aXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTGFiZWxzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxhYmVscy9jYS1pbnB1dC1kcm9wZG93bi1sYWJlbHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlclNoaXBwZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItc2hpcHBlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25UZXh0Q291bnRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXIvY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Eb3VibGVUZXh0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blRyaXBsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGVmYXVsdFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRlZmF1bHQtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRnVlbEZyYW5jaGlzZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZS9jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGlzcGF0Y2hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZGlzcGF0Y2gvY2EtaW5wdXQtZHJvcGRvd24tZGlzcGF0Y2guY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRldGFpbHNUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blBheXJvbGxUcnVja3NDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3MvY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3MuY29tcG9uZW50JztcblxuLy8gcGlwZXNcbmltcG9ydCB7IEZvcm1Db250cm9sUGlwZSB9IGZyb20gJy4uL2NhLWlucHV0L3BpcGVzJztcbmltcG9ydCB7IERyb3Bkb3duQ291bnRQaXBlLCBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUgfSBmcm9tICcuL3BpcGVzJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gZGlyZWN0aXZlc1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NvbnRyb2wsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IENvbW1hbmRzRXZlbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9tb2RlbHMnO1xuaW1wb3J0IHsgT3B0aW9uTW9kZWwgfSBmcm9tICcuL21vZGVscy9pbnB1dC1kcm9wZG93bi1vcHRpb24ubW9kZWwnO1xuXG4vLyBzZXJ2aWNlc1xuaW1wb3J0IHsgSW1hZ2VCYXNlNjRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1hZ2UtYmFzZTY0LnNlcnZpY2UnO1xuXG4vLyBzdmcgcm91dGVzXG5pbXBvcnQgeyBJbnB1dERyb3Bkb3duU3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzL2lucHV0LWRyb3Bkb3duLXN2Zy1yb3V0ZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgRHJvcGRvd25TdHJpbmdFbnVtLCBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgdXVpZHY0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNhLWlucHV0LWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtaW5wdXQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLWlucHV0LWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW0Zvcm1Db250cm9sUGlwZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW2lucHV0RHJvcGRvd25BbmltYXRpb24oJ3Nob3dIaWRlRHJvcGRvd25PcHRpb25zJyldLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgLy8gTW9kdWxlXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nYlBvcG92ZXJNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nYk1vZHVsZSxcbiAgICAgICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gICAgICAgIC8vIENvbXBvbmVudFxuICAgICAgICBDYUlucHV0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25TdmdUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duU3ZndGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Tdmd0ZXh0RGlzcGF0Y2hUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTGFiZWxzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb250YWN0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duVGV4dENvdW50ZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkZ1ZWxGcmFuY2hpc2VDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkRpc3BhdGNoQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EZXRhaWxzVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blBheXJvbGxUcnVja3NDb21wb25lbnQsXG4gICAgICAgIC8vIFBpcGVzXG4gICAgICAgIEZvcm1Db250cm9sUGlwZSxcbiAgICAgICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgICAgIElucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzUGlwZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0RHJvcGRvd25Db21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dFJlZiE6IENhSW5wdXRDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgndDInKSBwdWJsaWMgcG9wb3ZlclJlZiE6IE5nYlBvcG92ZXI7XG5cbiAgICAvLyBkaWZmZXJlbnQgdGVtcGxhdGVzIGZvciBib2R5IHJlbmRlcmluZ1xuICAgIHB1YmxpYyBfdGVtcGxhdGUhOiBzdHJpbmc7XG4gICAgX2NhbkFkZE5ldzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNldCB0ZW1wbGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3RlbXBsYXRlID0gdmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJ2RldGFpbHMtdGVtcGxhdGUnICYmIHRoaXMuaXNEZXRhaWxzUGFnZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLnNldElucHV0Q3Vyc29yQXRUaGVFbmQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXQubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5fb3B0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG9wdGlvbiB8fCBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sPy5zZXRWYWx1ZShvcHRpb24/Lm5hbWUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dDIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLm9wZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQyKTtcbiAgICAgICAgICAgICAgICB9LCAxNTApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBtdWx0aXNlbGVjdFRlbXBsYXRlITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gICAgQElucHV0KCkgc2V0IGNhbkFkZE5ldyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9jYW5BZGROZXcgPSB2YWx1ZTtcbiAgICB9IC8vIEFERCBORVcgaXRlbSBpbiBvcHRpb25zXG4gICAgQElucHV0KCkgY2FuT3Blbk1vZGFsITogYm9vbGVhbjsgLy8gb3BlbiBtb2RhbCB3aXRoIEFERCBORVcgYnV0dG9uXG4gICAgQElucHV0KCkgaXNBZGRyZXNzRHJvcGRvd24hOiBib29sZWFuOyAvLyBvbmx5IGZvciBhZGRyZXNzIGRyb3Bkb3duXG5cbiAgICAvLyBzb3J0LXRlbXBsYXRlIGZvciBkaWZmZXJlbnQgb3B0aW9uc1xuICAgIHB1YmxpYyBfc29ydCE6IHN0cmluZztcbiAgICBASW5wdXQoKSBzZXQgc29ydCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NvcnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBjdXJyZW50bHkgYWN0aXZlIGl0ZW1cbiAgICBwdWJsaWMgX2FjdGl2ZUl0ZW0hOiBPcHRpb25Nb2RlbCB8IG51bGw7XG4gICAgQElucHV0KCkgc2V0IGFjdGl2ZUl0ZW0odmFsdWU6IE9wdGlvbk1vZGVsIHwgbnVsbCkge1xuICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgIGJsYWNrSW5wdXQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB2YWx1ZTtcblxuICAgICAgICAvLyBXaXRoIGFkZHJlc3NcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lICYmXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYWRkcmVzcycpICYmXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX2FjdGl2ZUl0ZW0pLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU/LmFkZHJlc3MgPyB2YWx1ZT8uYWRkcmVzcyA6IG51bGxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaW5wdXRDb25maWcuaGlkZUNvbG9yVmFsaWRhdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tJbnB1dDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0sIDE1MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2l0aG91dCBhZGRyZXNzXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU/Lm51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdmFsdWU/Lm51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdmFsdWU/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdmFsdWU/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHZhbHVlPy5jb21wYW55TmFtZSA/PyBudWxsKVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbnB1dENvbmZpZy5oaWRlQ29sb3JWYWxpZGF0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrSW5wdXQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9LCAxNTApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgYWN0aXZlSXRlbUNvbG9yITogT3B0aW9uTW9kZWwgfCBudWxsOyAvLyBjdXJyZW50bHkgYWN0aXZlIGNvbG9yIGluIGRyb3Bkb3duXG4gICAgQElucHV0KCkgbGFiZWxNb2RlITogJ0xhYmVsJyB8ICdDb2xvcic7XG5cbiAgICAvLyB3aGVuIHNlbmQgU1ZHLCBwbGVhc2UgcHJlbW1hcGVkIG9iamVjdDogYWRkICdmb2xkZXInIHwgJ3N1YmZvbGRlcidcbiAgICBwdWJsaWMgX29wdGlvbnM6IE9wdGlvbk1vZGVsW10gPSBbXTtcbiAgICBASW5wdXQoKSBzZXQgb3B0aW9ucyh2YWx1ZXM6IE9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHZhbHVlcykgdGhpcy5fb3B0aW9ucyA9IFsuLi52YWx1ZXNdO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5fc29ydCkge1xuICAgICAgICAgICAgY2FzZSAnYWN0aXZlLWRyaXZlcnMnOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlcy5zb3J0KFxuICAgICAgICAgICAgICAgICAgICAoeCwgeSkgPT4gTnVtYmVyKHkuc3RhdHVzKSAtIE51bWJlcih4LnN0YXR1cylcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSBbLi4udGhpcy5fb3B0aW9uc107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbkFkZE5ldyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuX29wdGlvbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gNzY1NSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zLnVuc2hpZnQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IERyb3Bkb3duU3RyaW5nRW51bS5BRERfTkVXLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE11bHRpU2VsZWN0IFNlbGVjdGVkIEl0ZW1zIEZyb20gQmFja2VuZFxuICAgIEBJbnB1dCgpIHNldCBwcmVsb2FkTXVsdGlzZWxlY3RJdGVtcyh2YWx1ZXM6IE9wdGlvbk1vZGVsW10pIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcubXVsdGlzZWxlY3REcm9wZG93bikge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUFsbE11bHRpU2VsZWN0SXRlbXModGhpcy5pbnB1dENvbmZpZy5sYWJlbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTXVsdGlzZWxlY3RTZWxlY3QoaXRlbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKSBpc0RldGFpbHNQYWdlcyE6IGJvb2xlYW47IC8vIG9ubHkgZm9yIGRldGFpbHMgcGFnZXNcbiAgICBASW5wdXQoKSBpc0luY29ycmVjdFZhbHVlITogYm9vbGVhbjsgLy8gYXBwbGljYW50IHJldmlldyBvcHRpb25cblxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW06IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbCB8IG51bGw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbCB8IG51bGw+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXM6IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbFtdIHwgbnVsbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsW10gfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1Db2xvcjogRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsIHwgbnVsbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE9wdGlvbk1vZGVsIHwgbnVsbD4oKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRMYWJlbE1vZGU6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGNsb3NlRHJvcGRvd246IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgc2F2ZUl0ZW06IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGRhdGE6IE9wdGlvbk1vZGVsIHwgbnVsbDtcbiAgICAgICAgYWN0aW9uOiBzdHJpbmc7XG4gICAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZGF0YTogT3B0aW9uTW9kZWwgfCBudWxsOyBhY3Rpb246IHN0cmluZyB9PigpO1xuICAgIEBPdXRwdXQoKSBpbmNvcnJlY3RFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBwbGFjZWhvbGRlckljb25FdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoJ3BhZ2luYXRpb24nKSBwYWdpbmF0aW9uRXZlbnQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgQE91dHB1dCgnYWN0aXZlR3JvdXAnKSBhY3RpdmVHcm91cEV2ZW50OiBFdmVudEVtaXR0ZXI8T3B0aW9uTW9kZWw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxPcHRpb25Nb2RlbD4oKTtcbiAgICBAT3V0cHV0KCdjbGVhcklucHV0RXZlbnQnKSBjbGVhcklucHV0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8vIENvcHkgb2YgT3B0aW9uc1xuICAgIHB1YmxpYyBvcmlnaW5hbE9wdGlvbnM6IE9wdGlvbk1vZGVsW10gPSBbXTtcblxuICAgIC8vIFBhZ2luYXRpb25cbiAgICBwdWJsaWMgcGFnaW5hdGlvbk51bWJlcjogbnVtYmVyID0gMDtcblxuICAgIC8vIE11bHRpc2VsZWN0IGRyb3Bkb3duIG9wdGlvbnNcbiAgICBwdWJsaWMgbXVsdGlzZWxlY3RJdGVtczogT3B0aW9uTW9kZWxbXSA9IFtdO1xuICAgIHB1YmxpYyBpc011bHRpU2VsZWN0SW5wdXRGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBtdWx0aVNlbGVjdExhYmVsITogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHB1YmxpYyBsYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtITogT3B0aW9uTW9kZWwgfCBudWxsO1xuXG4gICAgLy8gQWRkIG1vZGVcbiAgICBwdWJsaWMgaXNJbkFkZE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIERyb3Bkb3duIG5hdmlnYXRpb24gd2l0aCBrZXlib2FyZFxuICAgIHByaXZhdGUgZHJvcGRvd25Qb3NpdGlvbjogbnVtYmVyID0gLTE7XG5cbiAgICAvLyBEcm9wZG93biBDbGVhcnRpbWVvdXRcbiAgICBwdWJsaWMgY2xlYXJUaW1lb3V0RHJvcGRvd246IHN0cmluZyB8IG51bWJlciB8IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIGhvdmVyaW5nSW5kZXghOiBudW1iZXI7XG4gICAgcHVibGljIGlucHV0RHJvcGRvd25TdmdSb3V0ZXMgPSBJbnB1dERyb3Bkb3duU3ZnUm91dGVzO1xuICAgIHB1YmxpYyBkcm9wZG93blRlbXBsYXRlVHlwZUVudW0gPSBEcm9wZG93blRlbXBsYXRlVHlwZUVudW07XG5cbiAgICBwdWJsaWMgb3JpZ2luYWxJbnB1dENvbmZpZyE6IElDYUlucHV0O1xuXG4gICAgLy8gRGVzdHJveVxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKCkgcHVibGljIHN1cGVyQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwdWJsaWMgaW1hZ2VCYXNlNjRTZXJ2aWNlOiBJbWFnZUJhc2U2NFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgZ2V0IGdldFN1cGVyQ29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShfOiBhbnkpOiB2b2lkIHt9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKF86IGFueSk6IHZvaWQge31cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKF86IGFueSk6IHZvaWQge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBNdWx0aXNlbGVjdFxuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLm11bHRpU2VsZWN0TGFiZWwgPSB0aGlzLmlucHV0Q29uZmlnLmxhYmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VhcmNoXG4gICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICBza2lwKDEpXG4gICAgICAgICkuc3Vic2NyaWJlKChzZWFyY2hUZXh0KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgPT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlYXJjaChzZWFyY2hUZXh0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vcmlnaW5hbElucHV0Q29uZmlnID0gc3RydWN0dXJlZENsb25lKHRoaXMuaW5wdXRDb25maWcpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ29wdGlvbnMnXSAmJiBjaGFuZ2VzWydvcHRpb25zJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IGNoYW5nZXNbJ29wdGlvbnMnXS5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmF1dG9Gb2N1cykge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5vcGVuKCk7XG4gICAgICAgICAgICB9LCA0NTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2Nyb2xsRHJvcGRvd24oZXZlbnQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAodGFyZ2V0LnNjcm9sbFRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgPT09IHRhcmdldC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbk51bWJlciArPSAxO1xuXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25FdmVudC5lbWl0KHRoaXMucGFnaW5hdGlvbk51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25BY3RpdmVJdGVtKG9wdGlvbjogT3B0aW9uTW9kZWwsIGdyb3VwPzogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIFByZXZlbnQgdXNlciB0byBwaWNrIGZyYW5jaGlzZSwgd2l0aG91dCBncm91cFxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJyAmJlxuICAgICAgICAgICAgb3B0aW9uPy5pc0ZyYW5jaGlzZSAmJlxuICAgICAgICAgICAgIWdyb3VwXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIERpc2FibGUgdG8gcGlja2luZyBiYW5uZWQgb3IgZG51IHVzZXJcbiAgICAgICAgaWYgKG9wdGlvbj8uZG51IHx8IG9wdGlvbj8uYmFuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gTm8gUmVzdWx0XG4gICAgICAgIGlmIChvcHRpb24uaWQgPT09IDc2NTQgfHwgb3B0aW9uLmlkID09PSA3NjU2KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQUREIE5FV1xuICAgICAgICBlbHNlIGlmIChvcHRpb24uaWQgPT09IDc2NTUpIHtcbiAgICAgICAgICAgIC8vIE9wZW4gTmV3IE1vZGFsXG4gICAgICAgICAgICBpZiAodGhpcy5jYW5PcGVuTW9kYWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHsgLi4ub3B0aW9uLCBjYW5PcGVuTW9kYWw6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBXb3JrIHdpdGggY3VycmVudCBtb2RhbFxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRHJvcERvd24gbGFiZWxcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbE5ldyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNFZGl0SW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0NvbG9yJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXQubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG9wdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBEcm9wZG93blxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE5ld0NvbmZpZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBQaWNrIHRoZSBpdGVtXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5zZWxlY3RlZERyb3Bkb3duID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIERyb3Bkb3duIGxhYmVscyBvcHRpb24gc2VsZWN0ZWRcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgPT09ICdMYWJlbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2w/LnNldFZhbHVlKG9wdGlvbi5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG9wdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGFiZWxNb2RlID09PSAnQ29sb3InKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbUNvbG9yID0gb3B0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ29sb3IuZW1pdCh0aGlzLmFjdGl2ZUl0ZW1Db2xvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTm9ybWFsIERyb3Bkb3duIG9wdGlvbiBzZWxlY3RlZFxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG9wdGlvbjtcblxuICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucztcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm5hbWUgIT09ICdSb3V0aW5nQWRkcmVzcycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24/Lm51bWJlciA/IG9wdGlvbi5udW1iZXIgOiBvcHRpb24ubmFtZVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnBhdGNoVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPyBvcHRpb24ubmFtZSA6IG9wdGlvbi5idXNpbmVzc05hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGlkIH0gPSBvcHRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ub3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5vcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aXZlSXRlbUdyb3VwKGV2ZW50OiB7IG9wdGlvbjogT3B0aW9uTW9kZWw7IGdyb3VwOiBhbnkgfSkge1xuICAgICAgICB0aGlzLm9uQWN0aXZlSXRlbShldmVudC5vcHRpb24sIGV2ZW50Lmdyb3VwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhclNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zO1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5zZWxlY3RlZERyb3Bkb3duID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sPy5wYXRjaFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLmlucHV0Q29uZmlnLnBsYWNlaG9sZGVyV2l0aExhYmVsXG4gICAgICAgICAgICAgICAgPyB0aGlzLm9yaWdpbmFsSW5wdXRDb25maWcucGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgZHJvcGRvd25JbWFnZUlucHV0OiBudWxsLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG51bGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRyb3Bkb3duTGFiZWwoKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1Db2xvciA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ29sb3IuZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21tYW5kRXZlbnQoZXZlbnQ6IENvbW1hbmRzRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ0VkaXQgSW5wdXQnKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0NvbG9yJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWxOZXcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnVG9nZ2xlIERyb3Bkb3duJykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdjb25maXJtJyAmJiBldmVudC5tb2RlID09PSAnbmV3Jykge1xuICAgICAgICAgICAgdGhpcy5hZGROZXdJdGVtKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnY29uZmlybScgJiYgZXZlbnQubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUl0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdQbGFjZWhvbGRlciBJY29uIEV2ZW50Jykge1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlckljb25FdmVudC5lbWl0KHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdjYW5jZWwnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTmV3SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgIGlkOiBwYXJzZUludCh1dWlkdjQoKSksXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbCEudmFsdWUsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlzVmlzaWJsZUNvbW1hbmRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zYXZlSXRlbS5lbWl0KHsgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSwgYWN0aW9uOiAnbmV3JyB9KTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzVG91Y2hlZElucHV0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVJdGVtKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlLFxuICAgICAgICAgICAgICAgIGNvbG9ySWQ6IHRoaXMuYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVJdGVtQ29sb3IuaWRcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2xvcklkLFxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2xvcixcbiAgICAgICAgICAgICAgICBjb2RlOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLmNvZGVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hY3RpdmVJdGVtPy5jb2RlLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNhdmVJdGVtLmVtaXQoe1xuICAgICAgICAgICAgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgIGFjdGlvbjogJ2VkaXQnLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTmV3Q29uZmlnKCkge1xuICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgIGNvbW1hbmRzOiB7XG4gICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdjb25maXJtLWNhbmNlbCcsXG4gICAgICAgICAgICAgICAgZmlyc3RDb21tYW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvcHVwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ29uZmlybScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMzA3NGQzJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbmZpcm0nLFxuICAgICAgICAgICAgICAgICAgICBzdmc6IElucHV0RHJvcGRvd25TdmdSb3V0ZXMuc3BlY0NvbmZpcm1TdmcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZWNvbmRDb21tYW5kOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvcHVwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnQ2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMyZjJmMmYnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgICAgc3ZnOiBJbnB1dERyb3Bkb3duU3ZnUm91dGVzLnhDbGVhclN2ZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcblxuICAgICAgICB0aGlzLmlzSW5BZGRNb2RlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0luQWRkTW9kZSA9IGZhbHNlO1xuICAgICAgICB9LCAyMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkluY29ycmVjdElucHV0KGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaW5jb3JyZWN0RXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIsIGl0ZW06IE9wdGlvbk1vZGVsKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU5lc3RlZExpc3Qob3B0aW9uOiBPcHRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAob3B0aW9uLm9wZW4pIHtcbiAgICAgICAgICAgIG9wdGlvbi5vcGVuID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IChpdGVtLm9wZW4gPSBmYWxzZSkpO1xuXG4gICAgICAgIG9wdGlvbi5vcGVuID0gIW9wdGlvbi5vcGVuO1xuXG4gICAgICAgIGlmIChvcHRpb24ub3Blbikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHcm91cEV2ZW50LmVtaXQob3B0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkJsdXJJbnB1dChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24uZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJJbnB1dEV2ZW50KGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY2xlYXJJbnB1dEV2ZW50LmVtaXQoZXZlbnQpO1xuXG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAvLyBsYWJlbCBkcm9wZG93blxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJEcm9wZG93bkxhYmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBub3JtYWwgZHJvcGRvd25cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub25DbGVhclNlYXJjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dIaWRlRHJvcGRvd24oYWN0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSBhY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgIT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgIC8vIEZvY3VzIE91dFxuICAgICAgICAgICAgaWYgKCFhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGUgIT09ICdmdWVsLWZyYW5jaGlzZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLm9wZW4oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IHVzZXIgdG8gdHlwaW5nIGR1bW1teSBkYXRhIGlmIF9hY3RpdmVJdGVtIGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0VmFsdWUodGhpcy5fYWN0aXZlSXRlbS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25DbGVhclNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZW1wbGF0ZSAhPT0gJ2Z1ZWwtZnJhbmNoaXNlJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGb2N1cyBJblxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmdldFN1cGVyQ29udHJvbCEudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5pbnB1dENvbmZpZy5wbGFjZWhvbGRlcldpdGhMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMub3JpZ2luYWxJbnB1dENvbmZpZy5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShudWxsKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJbkFkZE1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0YWlscyBwYWdlc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmN1c3RvbUNsYXNzPy5pbmNsdWRlcygnZGV0YWlscy1wYWdlcycpICYmXG4gICAgICAgICAgICAhYWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh0aGlzLl9hY3RpdmVJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBkcm9wRG93bktleU5hdmlnYXRpb24oe1xuICAgICAgICBrZXlDb2RlLFxuICAgICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgICAga2V5Q29kZTogbnVtYmVyO1xuICAgICAgICBkYXRhOiBhbnk7XG4gICAgfSkge1xuICAgICAgICAvLyBOYXZpZ2F0ZSBkb3duXG4gICAgICAgIGlmIChrZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bk5hdmlnYXRpb24oMSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTmF2aWdhdGUgdXBcbiAgICAgICAgaWYgKGtleUNvZGUgPT09IDM4KSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duTmF2aWdhdGlvbigtMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmVzcyBFc2NhcGVcbiAgICAgICAgaWYgKGtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZz8uY29tbWFuZHM/LmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuY29tbWFuZHMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc1Zpc2libGVDb21tYW5kcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbD8uc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbE5ldyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbnB1dENvbmZpZy5oaWRlQ29sb3JWYWxpZGF0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmJsYWNrSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRWRpdElucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgPT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2whLnBhdGNoVmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJlc3MgJ2VudGVyJ1xuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KFxuICAgICAgICAgICAgICAgICcuZHJvcGRvd24tb3B0aW9uLWhvdmVyZWQnLFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIC8vIE9wZW4gTmV3IE1vZGFsXG4gICAgICAgICAgICBpZiAodGhpcy5jYW5PcGVuTW9kYWwgJiYgc2VsZWN0ZWRJdGVtLnRvTG93ZXJDYXNlKCkgPT09ICdhZGQgbmV3Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBpZDogNzY1NSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLkFERF9ORVcsXG4gICAgICAgICAgICAgICAgICAgIGNhbk9wZW5Nb2RhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMubGVuZ3RoID09PSAxICYmICFzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSB0aGlzLl9vcHRpb25zWzBdPy5idXNpbmVzc05hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX29wdGlvbnNbMF0/LmJ1c2luZXNzTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc1swXT8ubmFtZSB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9IHRoaXMuX29wdGlvbnNbMF0/Lm51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fb3B0aW9uc1swXT8ubnVtYmVyLnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9vcHRpb25zWzBdLm5hbWU/LnRvU3RyaW5nKCkudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5waWNrdXBFbGVtZW50V2l0aEtleWJvYXJkKHNlbGVjdGVkSXRlbSwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gOSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9uc1swXS5pZCAhPT0gNzY1NSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnNbMF0uaWQgIT09IDc2NTRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW0gPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9IHRoaXMuX29wdGlvbnNbMF0/LmJ1c2luZXNzTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9vcHRpb25zWzBdPy5idXNpbmVzc05hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fb3B0aW9uc1swXT8ubmFtZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSB0aGlzLl9vcHRpb25zWzBdPy5udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fb3B0aW9uc1swXT8ubnVtYmVyLnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX29wdGlvbnNbMF0ubmFtZSEudG9TdHJpbmcoKS50cmltKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5waWNrdXBFbGVtZW50V2l0aEtleWJvYXJkKHNlbGVjdGVkSXRlbSwgZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5vcGVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBNdWx0aXNlbGVjdCBEcm9wZG93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIG9uTXVsdGlzZWxlY3RTZWxlY3Qob3B0aW9uOiBPcHRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcubGFiZWwgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3RJdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLmlkID09PSBvcHRpb24uaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSBvcHRpb24uaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMgPSB0aGlzLl9vcHRpb25zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5hY3RpdmUpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KHRoaXMubXVsdGlzZWxlY3RJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuc29ydChcbiAgICAgICAgICAgICh4LCB5KSA9PiBOdW1iZXIoeS5hY3RpdmUpIC0gTnVtYmVyKHguYWN0aXZlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IFsuLi50aGlzLl9vcHRpb25zXTtcblxuICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSB0aGlzLl9vcHRpb25zXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgIC5zbGljZSgtMSlbMF07XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcsXG4gICAgICAgICAgICBtdWx0aVNlbGVjdERyb3Bkb3duQWN0aXZlOiB0cnVlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVNdWx0aVNlbGVjdEl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gdGhpcy5tdWx0aXNlbGVjdEl0ZW1zW2luZGV4XS5pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMubXVsdGlzZWxlY3RJdGVtc1tpbmRleF0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5zb3J0KFxuICAgICAgICAgICAgKHgsIHkpID0+IE51bWJlcih5LmFjdGl2ZSkgLSBOdW1iZXIoeC5hY3RpdmUpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLl9vcHRpb25zO1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdERyb3Bkb3duQWN0aXZlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5sYWJlbCA9IHRoaXMubXVsdGlTZWxlY3RMYWJlbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IHRoaXMuX29wdGlvbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICAuc2xpY2UoLTEpWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQoXG4gICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlQWxsTXVsdGlTZWxlY3RJdGVtcyhjdXJyZW50TGFiZWw/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgbXVsdGlTZWxlY3REcm9wZG93bkFjdGl2ZTogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcubGFiZWwgPSBjdXJyZW50TGFiZWxcbiAgICAgICAgICAgID8gY3VycmVudExhYmVsXG4gICAgICAgICAgICA6IHRoaXMubXVsdGlTZWxlY3RMYWJlbDtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KG51bGwpO1xuXG4gICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gIXRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXM7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZChcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYub3BlbigpO1xuICAgICAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBFbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJpdmF0ZSBwaWNrdXBFbGVtZW50V2l0aEtleWJvYXJkKFxuICAgICAgICBzZWxlY3RlZEl0ZW06IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YTogYW55XG4gICAgKSB7XG4gICAgICAgIC8vIEFkZHJlc3MgU2VsZWN0XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT0gJ0FkZHJlc3MnIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09ICdSb3V0aW5nQWRkcmVzcycpICYmXG4gICAgICAgICAgICAoIXNlbGVjdGVkSXRlbSB8fCBzZWxlY3RlZEl0ZW0gPT0gJycpXG4gICAgICAgICkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtID0gdGhpcy5fb3B0aW9uc1swXS5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5wdXQgRHJvcGRvd24gQmFuayBOYW1lXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFzZWxlY3RlZEl0ZW0gJiZcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT0gJ0lucHV0IERyb3Bkb3duIEJhbmsgTmFtZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZE5ld0l0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElucHV0IERyb3Bkb3duIExhYmVsXG4gICAgICAgIGlmICghc2VsZWN0ZWRJdGVtICYmIHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5jb21tYW5kRXZlbnQoe1xuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZSxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdjb25maXJtJyxcbiAgICAgICAgICAgICAgICBtb2RlOiBkYXRhLmRyb3Bkb3duTGFiZWxOZXcgPyAnbmV3JyA6ICdlZGl0JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsTmV3ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5jb21tYW5kcyEuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlucHV0Q29uZmlnLmhpZGVDb2xvclZhbGlkYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuYmxhY2tJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNFZGl0SW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFERCBORVcgT3B0aW9uXG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW0gPT09IERyb3Bkb3duU3RyaW5nRW51bS5BRERfTkVXKSB7XG4gICAgICAgICAgICB0aGlzLmFkZE5ld0NvbmZpZygpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgLy8gRHJvcERvd24gbGFiZWxcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbE5ldyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNFZGl0SW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0NvbG9yJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXQubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmJsYWNrSW5wdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLkFERF9ORVcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBOb3JtYWwgUGljayBEcm9wZG93blxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0SXRlbSA9IHRoaXMuX29wdGlvbnNcbiAgICAgICAgICAgICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5pbnB1dENvbmZpZy5uYW1lID09ICdBZGRyZXNzJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PSAnUm91dGluZ0FkZHJlc3MnKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGl0ZW0uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nTGF0OiBpdGVtLmxvbmdMYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBEaXNwYXRjaGVzIFRURFxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9hZC1kaXNwYXRjaGVzLXR0ZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvYWQtYnJva2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9hZC1zaGlwcGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0uaW5jbHVkZXModGhpcy5fdGVtcGxhdGUpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSW1hZ2UgKG11c3QgYmUgYmVmb3JlIHR5cGUgY29kZSwgYmVjYXVzZSBjb2xvciBoYXMgc2FtZSBwcm9wIGxpa2Ugb3RoZXIgZHJvcGRvd24gcG9wKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLmxvZ29OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDb2RlXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW0uY29kZSAmJiBpdGVtLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0uY29kZS5jb25jYXQoJyAtICcsIGl0ZW0uZGVzY3JpcHRpb24pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBEcm9wZG93biBMYWJlbHNcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5kcm9wTGFiZWwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0gfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmluZCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBEcm9wZG93biBMYWJlbFxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoaXRlbT8uZHJvcExhYmVsIHx8IHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSEuc3Vic3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtIS5sYXN0SW5kZXhPZignICcpXG4gICAgICAgICAgICAgICAgICAgICAgICApID09PSBpdGVtPy5uYW1lIS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBEcm9wZG93biBMb2FkIERpc3BhdGNoZXIsIEJyb2tlclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbT8ubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2FkLWJyb2tlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2FkLWRpc3BhdGNoZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9hZC1zaGlwcGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKHRoaXMuX3RlbXBsYXRlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGl0ZW0/Lm5hbWU/LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRHJvcGRvd24gTG9hZCBEaXNwYXRjaGVzXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRyYWlsZXI/LnRyYWlsZXJOdW1iZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRydWNrPy50cnVja051bWJlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uZHJpdmVyPy5maXJzdE5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmRyaXZlcj8ubGFzdE5hbWVcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlID09PSAnbG9hZC1kaXNwYXRjaGVzLXR0ZCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnRyYWlsZXI/LnRyYWlsZXJOdW1iZXIudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50cnVjaz8udHJ1Y2tOdW1iZXIudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5kcml2ZXI/LmZpcnN0TmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoJyAnLCBpdGVtPy5kcml2ZXI/Lmxhc3ROYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGUgIT09ICdsb2FkLWRpc3BhdGNoZXMtdHRkJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm5hbWUhLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgICB9KSBhcyBPcHRpb25Nb2RlbDtcblxuICAgICAgICAgICAgLy8gTXVsdGlTZWxlY3QgRHJvcGRvd25cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTXVsdGlzZWxlY3RTZWxlY3QoZXhpc3RJdGVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRHJvcGRvd24gbGFiZWxzIG9wdGlvbiBzZWxlY3RlZFxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhYmVsTW9kZSA9PT0gJ0xhYmVsJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gZXhpc3RJdGVtIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShleGlzdEl0ZW0hLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcmlnaW5hbE9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoZXhpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0Ryb3Bkb3duVG9nZ2xlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhYmVsTW9kZSA9PT0gJ0NvbG9yJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1Db2xvciA9IGV4aXN0SXRlbSB8fCBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ29sb3IuZW1pdCh0aGlzLmFjdGl2ZUl0ZW1Db2xvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTm9ybWFsXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0VmFsdWUoZXhpc3RJdGVtPy5uYW1lKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KGV4aXN0SXRlbSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IGV4aXN0SXRlbSB8fCBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2goc2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIFNpbmdsZSBEcm9wZG93blxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhW1xuICAgICAgICAgICAgICAgICdncm91cHMnLFxuICAgICAgICAgICAgICAgICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAnZnVlbC1mcmFuY2hpc2UnLFxuICAgICAgICAgICAgICAgICdsb2FkLWRpc3BhdGNoZXMtdHRkJyxcbiAgICAgICAgICAgIF0uaW5jbHVkZXModGhpcy5fdGVtcGxhdGUpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHNlYXJjaFRleHQ/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0/Lm5hbWUgIT09IHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5uYW1lID09PSBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVykgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbS5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoJyAtICcsIGl0ZW0uZGVzY3JpcHRpb24hKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGUgIT09XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5TVkdURVhUX0RJU1BBVENIX1RFTVBMQVRFICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmlzQWRkcmVzc0Ryb3Bkb3duXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5pc0ludmFsaWRTZWFyY2hJbkRyb3Bkb3duID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmlzSW52YWxpZFNlYXJjaEluRHJvcGRvd24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgWyd0cnVjaycsICd0cmFpbGVyJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnPy5kcm9wZG93bkltYWdlSW5wdXQ/LnRlbXBsYXRlIVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25JbWFnZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZW1wdHlPcHRpb25zV2loQWRkTmV3ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9uc1swXS5uYW1lID09PSBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVztcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fb3B0aW9ucy5sZW5ndGggfHwgZW1wdHlPcHRpb25zV2loQWRkTmV3KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlID09PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmlucHV0Q29uZmlnLmlzRGlzcGF0Y2hMb2NhdGlvbkRyb3Bkb3duICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhZW1wdHlPcHRpb25zV2loQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogNzY1NSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA3NjU0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLk5PX1JFU1VMVFMsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVBbGxJdGVtc0luSW5wdXREcm9wZG93bjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT0gJ0FkZHJlc3MnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09PSAnUm91dGluZ0FkZHJlc3MnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWY/Lm9wZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgWyd0cnVjaycsICd0cmFpbGVyJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnPy5kcm9wZG93bkltYWdlSW5wdXQ/LnRlbXBsYXRlIVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHJvcGRvd25JbWFnZUlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbnB1dENvbmZpZz8uZHJvcGRvd25JbWFnZUlucHV0ISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICBoaWRlQWxsSXRlbXNJbklucHV0RHJvcGRvd246IGZhbHNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gR3JvdXAgRHJvcGRvd24gSXRlbXNcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc2VhcmNoVGV4dD8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGUgPT09ICdncm91cHMnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLm9yaWdpbmFsT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkR3JvdXBzID0gZWxlbWVudC5ncm91cHMhLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YkVsZW1lbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJFbGVtZW50Py5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwczogZmlsdGVyZWRHcm91cHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBmaWx0ZXJlZEdyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uZ3JvdXBzLmxlbmd0aCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogNzY1NCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IERyb3Bkb3duU3RyaW5nRW51bS5OT19SRVNVTFRTLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiA3NjU0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLk5PX1JFU1VMVFMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm1hcCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3RzOiBlbGVtZW50Py5jb250YWN0cz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ViRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YkVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZ1bGxOYW1lIS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFRleHQ/LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMubWFwKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVzOiBlbGVtZW50Py5zdG9yZXM/LmZpbHRlcigoc3ViRWxlbWVudCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5hbWUhLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGUgPT09ICdsb2FkLWRpc3BhdGNoZXMtdHRkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5vcmlnaW5hbE9wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5mdWxsTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29wdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IDc2NTQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLk5PX1JFU1VMVFMsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGUgdGhyb3VnaCBkcm9wZG93biB3aXRoIGtleWJvYXJkIGFycm93c1xuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25OYXZpZ2F0aW9uKHN0ZXA6IG51bWJlcikge1xuICAgICAgICB0aGlzLmRyb3Bkb3duUG9zaXRpb24gKz0gc3RlcDtcblxuICAgICAgICBpZiAodGhpcy5kcm9wZG93blBvc2l0aW9uID4gdGhpcy5fb3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUG9zaXRpb24gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25Qb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Qb3NpdGlvbiA9IHRoaXMuX29wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjc3NDbGFzcyA9ICdkcm9wZG93bi1vcHRpb24taG92ZXJlZCc7XG4gICAgICAgIGxldCBkcm9wZG93bkNvbnRhaW5lciA9IHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoXG4gICAgICAgICAgICAnLmRyb3Bkb3duLW9wdGlvbnMnLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBkcm9wZG93bk9wdGlvbiA9IHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoXG4gICAgICAgICAgICAnLmRyb3Bkb3duLW9wdGlvbicsXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGVsT2Zmc2V0ID1cbiAgICAgICAgICAgIGRyb3Bkb3duT3B0aW9uLmhlaWdodCgpISAqIHRoaXMuZHJvcGRvd25Qb3NpdGlvbiArXG4gICAgICAgICAgICAodGhpcy5kcm9wZG93blBvc2l0aW9uICE9PSAwID8gdGhpcy5kcm9wZG93blBvc2l0aW9uICogNiA6IDApO1xuXG4gICAgICAgIGxldCB2aWV3cG9ydCA9XG4gICAgICAgICAgICBkcm9wZG93bkNvbnRhaW5lci5zY3JvbGxUb3AoKSEgKyBkcm9wZG93bkNvbnRhaW5lci5oZWlnaHQoKSE7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZWxPZmZzZXQgPCBkcm9wZG93bkNvbnRhaW5lci5zY3JvbGxUb3AoKSEgfHxcbiAgICAgICAgICAgIGVsT2Zmc2V0ICsgZHJvcGRvd25PcHRpb24uaGVpZ2h0KCkhID4gdmlld3BvcnRcbiAgICAgICAgKVxuICAgICAgICAgICAgZHJvcGRvd25Db250YWluZXIuc2Nyb2xsVG9wKGVsT2Zmc2V0KTtcblxuICAgICAgICBkcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgLnJlbW92ZUNsYXNzKGNzc0NsYXNzKVxuICAgICAgICAgICAgLmVxKHRoaXMuZHJvcGRvd25Qb3NpdGlvbilcbiAgICAgICAgICAgIC5hZGRDbGFzcyhjc3NDbGFzcyk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJhcHBsaWNhdGlvbi1kcm9wZG93blwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIGlucHV0Q29uZmlnXG4gICAgICAgICAgICB8IGlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzXG4gICAgICAgICAgICAgICAgOiBtdWx0aXNlbGVjdEl0ZW1zXG4gICAgICAgICAgICAgICAgOiBpc011bHRpU2VsZWN0SW5wdXRGb2N1c1xuICAgIFwiXG4+XG4gICAgQGlmIChtdWx0aXNlbGVjdEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICA8cCBjbGFzcz1cIm11bHRpc2VsZWN0LWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBtdWx0aVNlbGVjdExhYmVsIH19XG4gICAgICAgIDwvcD5cbiAgICB9XG4gICAgPCEtLSBNdWx0aXNlbGVjdCBhcnJvdyAtLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnLm11bHRpU2VsZWN0RHJvcGRvd25BY3RpdmUpIHtcbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWFycm93XCJcbiAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy5pbnB1dERyb3Bkb3duQXJyb3dTdmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKVwiXG4gICAgICAgID48L3N2Zy1pY29uPlxuICAgIH1cbiAgICA8IS0tIE11bHRpc2VsZWN0IGNsZWFyIGFsbCAtLT5cbiAgICBAaWYgKG11bHRpc2VsZWN0SXRlbXMubGVuZ3RoICYmICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtY2xlYXIgbXVsdGlzZWxlY3QtY2xlYXJcIlxuICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhciBBbGxcIlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjMmYyZjJmXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyLXhcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8IS0tIE11bHRpc2VsZWN0IGl0ZW1zIC0tPlxuICAgIEBpZiAoXG4gICAgICAgIGlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24gJiZcbiAgICAgICAgbXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiZcbiAgICAgICAgX3RlbXBsYXRlID09PSAnbXVsdGlzZWxlY3QnXG4gICAgKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcyB7eyBtdWx0aXNlbGVjdFRlbXBsYXRlIH19XCI+XG4gICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdCBvZiBtdWx0aXNlbGVjdEl0ZW1zO1xuICAgICAgICAgICAgICAgIGxldCBpbmQgPSAkaW5kZXg7XG4gICAgICAgICAgICAgICAgdHJhY2sgaW5kXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbXVsdGlTZWxlY3Q/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgLSBUb3RhbCBDb3VudGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubXVsdGlTZWxlY3RJdGVtUmFuZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0Py50b3RhbENvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8uYWN0aXZlQ291bnRlciB9fSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py50b3RhbENvdW50ZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIENvdW50ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tdWx0aVNlbGVjdEl0ZW1SYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIW11bHRpU2VsZWN0Py50b3RhbENvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8uYWN0aXZlQ291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlTXVsdGlTZWxlY3RJdGVtKGluZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbS1jbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiMyZjJmMmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImlucHV0RHJvcGRvd25TdmdSb3V0ZXMueENsZWFyU3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIERyb3Bkb3duIHNlYXJjaCAtLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnLmlzSWNvbklucHV0KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGlucHV0LWljb24tY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICB2YWxpZDpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaXNWYWxpZEljb24gJiZcbiAgICAgICAgICAgICAgICAgICAgIWlucHV0Q29uZmlnLmlucHV0SWNvbj8uaW5jbHVkZXMoJ2N1c3RvbScpLFxuICAgICAgICAgICAgICAgIGFjdGl2ZTogcG9wb3ZlclJlZj8uaXNPcGVuKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiY2FJbnB1dERyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiY2EtaW5wdXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCJbJ2JvdHRvbS1sZWZ0J11cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtaWNvblwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXREcm9wZG93blN2Z1JvdXRlcy5yZXBhaXJQbVN2Z1JvdXRlICtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaW5wdXRJY29uXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGFwcC1jYS1pbnB1dFxuICAgICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJjYUlucHV0RHJvcGRvd25Qb3BvdmVyXCJcbiAgICAgICAgICAgIHBvcG92ZXJDbGFzcz1cImNhLWlucHV0LWRyb3Bkb3duXCJcbiAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiXG4gICAgICAgICAgICAgICAgX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJ1xuICAgICAgICAgICAgICAgICAgICA/IFsnYm90dG9tLWxlZnQnLCAndG9wLWxlZnQnXVxuICAgICAgICAgICAgICAgICAgICA6IFsnYm90dG9tLWxlZnQnXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImdldFN1cGVyQ29udHJvbCEgfCBmb3JtQ29udHJvbFwiXG4gICAgICAgICAgICBbaW5jb3JyZWN0VmFsdWVdPVwiaXNJbmNvcnJlY3RWYWx1ZVwiXG4gICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW3NlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXT1cIlxuICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgPyBfYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBhY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cIl90ZW1wbGF0ZVwiXG4gICAgICAgICAgICAoYmx1cklucHV0KT1cIm9uQmx1cklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgKGNsZWFyKT1cIm9uQ2xlYXJJbnB1dEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKGNvbW1hbmRFdmVudCk9XCJjb21tYW5kRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2hvd0hpZGVEcm9wZG93bik9XCJzaG93SGlkZURyb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgKGRyb3BEb3duS2V5TmF2aWdhdGlvbik9XCJkcm9wRG93bktleU5hdmlnYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoaW5jb3JyZWN0RXZlbnQpPVwib25JbmNvcnJlY3RJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgPjwvYXBwLWNhLWlucHV0PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gaWNvbiBpbnN0ZWFkIG9mIGlucHV0IC0tPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY2FJbnB1dERyb3Bkb3duUG9wb3Zlcj5cbiAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEcm9wZG93biBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnPy5tZXJnZURyb3Bkb3duQm9keVdpdGhJbnB1dCAmJiBfb3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucy1kaXZpZGVyIHt7XG4gICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzcGF0Y2hfZHJvcGRvd25dPVwiX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJ1wiXG4gICAgICAgID48L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKFxuICAgICAgICAoaW5wdXRDb25maWc/Lm5hbWUgIT0gJ0FkZHJlc3MnICYmXG4gICAgICAgICAgICBpbnB1dENvbmZpZz8ubmFtZSAhPSAnUm91dGluZ0FkZHJlc3MnICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCkgfHxcbiAgICAgICAgKChpbnB1dENvbmZpZz8ubmFtZSA9PSAnQWRkcmVzcycgfHxcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lID09ICdSb3V0aW5nQWRkcmVzcycpICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgICAgICAgX29wdGlvbnM/Lmxlbmd0aClcbiAgICApIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbERyb3Bkb3duKCRldmVudC50YXJnZXQpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICBzY3JvbGw6IF9vcHRpb25zIHwgY2FEcm9wZG93bkNvdW50OiBfdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZ3JvdXBzJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZ3JvdXBzJyB8fFxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1mdWVsLWZyYW5jaGlzZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJyxcbiAgICAgICAgICAgICAgICAnbWVyZ2UtZHJvcGRvd24tYm9keS13aXRoLWlucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubWVyZ2VEcm9wZG93bkJvZHlXaXRoSW5wdXQsXG4gICAgICAgICAgICAgICAgJ25vLXJlc3VsdC1jb250YWluZXInOiBfb3B0aW9uc1swXT8ubmFtZSA9PT0gJ05vIFJlc3VsdHMnLFxuICAgICAgICAgICAgICAgICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zICB7eyBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3MgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIEBzd2l0Y2ggKF90ZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlNWR19URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlNWR1RFWFRfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9ESVNQQVRDSF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ERVRBSUxTX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc29ydF09XCJfc29ydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uR1JPVVBTKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZ3JvdXBzPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTVVMVElTRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1dPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25NdWx0aXNlbGVjdFNlbGVjdCk9XCJvbk11bHRpc2VsZWN0U2VsZWN0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MQUJFTFMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxNb2RlXT1cImxhYmVsTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbkFkZE5ld109XCJfY2FuQWRkTmV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxhYmVscz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRJU1BBVENIKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRpc3BhdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFU19UVEQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSX0NPTlRBQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfU0hJUFBFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlRFWFRfQ09VTlRFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlcj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkZVRUxfRlJBTkNISVNFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvZ2dsZU5lc3RlZExpc3QpPVwidG9nZ2xlTmVzdGVkTGlzdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtR3JvdXApPVwib25BY3RpdmVJdGVtR3JvdXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRPVUJMRV9URVhUX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRPVUJMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfb3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiX2FjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRTdXBlckNvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uVFJJUExFX0NPTFVNTl9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tdHJpcGxlLXRleHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5QQVlST0xMX1RSVUNLUykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIl9vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJfYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldFN1cGVyQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3M+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiX29wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cIl9hY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0U3VwZXJDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRlZmF1bHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|