@simpleangularcontrols/sac-common 10.0.0-rc.29 → 10.0.0-rc.30
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/bundles/simpleangularcontrols-sac-common.umd.js +1848 -1249
- package/bundles/simpleangularcontrols-sac-common.umd.js.map +1 -1
- package/bundles/simpleangularcontrols-sac-common.umd.min.js +1 -1
- package/bundles/simpleangularcontrols-sac-common.umd.min.js.map +1 -1
- package/common/basedatetimecontrol.d.ts +47 -21
- package/common/baseinputcontrol.d.ts +10 -8
- package/common/baselistcontrol.d.ts +15 -15
- package/common/basemodelcontrol.d.ts +59 -43
- package/common/baseselectcontrol.d.ts +5 -5
- package/common/baseuploadcontrol.d.ts +77 -57
- package/components/browser/browser.d.ts +86 -89
- package/components/browser/models/browserfile.d.ts +6 -6
- package/components/browser/models/browserfiledeleterequest.d.ts +7 -7
- package/components/browser/models/browserfilerenamerequest.d.ts +10 -10
- package/components/browser/models/browserfileresponse.d.ts +2 -2
- package/components/browser/models/browserfilesaverequest.d.ts +7 -7
- package/components/browser/models/browsernode.d.ts +13 -13
- package/components/browser/models/browsernodedeleterequest.d.ts +6 -6
- package/components/browser/models/browsernodenewrequest.d.ts +7 -7
- package/components/browser/models/browsernoderenamerequest.d.ts +7 -7
- package/components/browser/models/browsernoderequest.d.ts +7 -7
- package/components/browser/models/browsernoderesponse.d.ts +1 -1
- package/controls/buttons/button.d.ts +25 -19
- package/controls/checkbox/checkbox.d.ts +3 -3
- package/controls/checkbox/radiobutton.d.ts +19 -13
- package/controls/checkbox/radiobuttons.d.ts +13 -10
- package/controls/confirm/confirm.button.d.ts +3 -3
- package/controls/confirm/confirm.d.ts +13 -12
- package/controls/confirm/confirm.service.d.ts +14 -14
- package/controls/contextmenu/contextmenu.d.ts +33 -27
- package/controls/contextmenu/contextmenu.interface.d.ts +6 -0
- package/controls/contextmenu/contextmenuanchor.d.ts +4 -4
- package/controls/contextmenu/contextmenucontainer.d.ts +4 -4
- package/controls/contextmenu/contextmenuitembutton.d.ts +12 -12
- package/controls/datetime/date.d.ts +11 -11
- package/controls/datetime/dateselector.d.ts +47 -40
- package/controls/datetime/datetime.d.ts +15 -14
- package/controls/datetime/time.d.ts +22 -12
- package/controls/dialog/dialog.d.ts +28 -22
- package/controls/form/form.d.ts +17 -12
- package/controls/grid/grid.d.ts +1 -0
- package/controls/grid/gridbutton.d.ts +1 -0
- package/controls/grid/gridcolumn.d.ts +5 -1
- package/controls/grid/gridcolumnaction.d.ts +1 -1
- package/controls/grid/gridcolumnbase.d.ts +8 -3
- package/controls/grid/model.d.ts +5 -2
- package/controls/grid/paging.d.ts +2 -3
- package/controls/input/input.d.ts +7 -7
- package/controls/input/inputarea.d.ts +8 -6
- package/controls/input/inputcurrency.d.ts +4 -1
- package/controls/input/inputdecimal.d.ts +14 -14
- package/controls/input/inputemail.d.ts +4 -4
- package/controls/input/inputinteger.d.ts +14 -14
- package/controls/input/inputpassword.d.ts +3 -3
- package/controls/input/inputsearch.d.ts +8 -5
- package/controls/layout/formlayout.d.ts +8 -5
- package/controls/list/buildvaluestring.d.ts +2 -2
- package/controls/list/dropdown.d.ts +23 -22
- package/controls/list/dropdownoptions.d.ts +10 -10
- package/controls/list/listbox.d.ts +25 -23
- package/controls/multilanguage/multilanguageinput.d.ts +25 -25
- package/controls/multilanguage/multilanguageinputarea.d.ts +27 -27
- package/controls/static/formcontainer.d.ts +8 -8
- package/controls/static/staticlabel.d.ts +5 -5
- package/controls/tabs/tab.d.ts +2 -2
- package/controls/tabs/tabitem.d.ts +7 -7
- package/controls/tinymce/tinymce.d.ts +37 -37
- package/controls/tinymce/tinymcedialogsettings.d.ts +6 -6
- package/controls/tinymce/tinymcedialogsettingsmeta.d.ts +2 -2
- package/controls/tinymce/tinymceinstance.d.ts +2 -2
- package/controls/tooltip/tooltip.d.ts +10 -5
- package/controls/treeview/treeview.d.ts +50 -5
- package/controls/upload/dropzonemultiple.d.ts +16 -16
- package/controls/upload/dropzonesingle.d.ts +11 -11
- package/controls/upload/uploadmultiple.d.ts +12 -12
- package/controls/upload/uploadsingle.d.ts +7 -7
- package/controls/validation/validationsummary.d.ts +12 -11
- package/controls/wizard/wizard.d.ts +25 -18
- package/controls/wizard/wizarditem.d.ts +5 -5
- package/enums/ButtonRoleType.d.ts +26 -1
- package/enums/ControlHeight.d.ts +1 -1
- package/enums/IconType.d.ts +1 -1
- package/esm2015/common/basedatetimecontrol.js +47 -22
- package/esm2015/common/baseinputcontrol.js +13 -11
- package/esm2015/common/baselistcontrol.js +21 -17
- package/esm2015/common/basemodelcontrol.js +72 -49
- package/esm2015/common/baseselectcontrol.js +11 -9
- package/esm2015/common/baseuploadcontrol.js +69 -49
- package/esm2015/components/browser/browser.js +93 -105
- package/esm2015/components/browser/models/browserfile.js +1 -1
- package/esm2015/components/browser/models/browserfiledeleterequest.js +6 -4
- package/esm2015/components/browser/models/browserfilerenamerequest.js +6 -4
- package/esm2015/components/browser/models/browserfileresponse.js +1 -1
- package/esm2015/components/browser/models/browserfilesaverequest.js +5 -3
- package/esm2015/components/browser/models/browsernode.js +1 -1
- package/esm2015/components/browser/models/browsernodedeleterequest.js +6 -4
- package/esm2015/components/browser/models/browsernodenewrequest.js +6 -4
- package/esm2015/components/browser/models/browsernoderenamerequest.js +6 -4
- package/esm2015/components/browser/models/browsernoderequest.js +6 -4
- package/esm2015/components/browser/models/browsernoderesponse.js +1 -1
- package/esm2015/controls/buttons/button.js +26 -20
- package/esm2015/controls/checkbox/checkbox.js +3 -3
- package/esm2015/controls/checkbox/radiobutton.js +21 -15
- package/esm2015/controls/checkbox/radiobuttons.js +14 -11
- package/esm2015/controls/confirm/confirm.button.js +4 -4
- package/esm2015/controls/confirm/confirm.js +14 -13
- package/esm2015/controls/confirm/confirm.service.js +21 -21
- package/esm2015/controls/contextmenu/contextmenu.interface.js +1 -1
- package/esm2015/controls/contextmenu/contextmenu.js +29 -23
- package/esm2015/controls/contextmenu/contextmenuanchor.js +4 -4
- package/esm2015/controls/contextmenu/contextmenucontainer.js +4 -4
- package/esm2015/controls/contextmenu/contextmenuitembutton.js +10 -10
- package/esm2015/controls/datetime/date.js +13 -13
- package/esm2015/controls/datetime/dateselector.js +55 -54
- package/esm2015/controls/datetime/datetime.js +17 -16
- package/esm2015/controls/datetime/time.js +24 -14
- package/esm2015/controls/dialog/dialog.js +31 -24
- package/esm2015/controls/form/form.js +18 -13
- package/esm2015/controls/grid/grid.js +2 -1
- package/esm2015/controls/grid/gridbutton.js +2 -1
- package/esm2015/controls/grid/gridcolumn.js +6 -2
- package/esm2015/controls/grid/gridcolumnaction.js +2 -2
- package/esm2015/controls/grid/gridcolumnbase.js +9 -4
- package/esm2015/controls/grid/model.js +5 -2
- package/esm2015/controls/grid/paging.js +6 -7
- package/esm2015/controls/input/input.js +8 -8
- package/esm2015/controls/input/inputarea.js +9 -7
- package/esm2015/controls/input/inputcurrency.js +6 -3
- package/esm2015/controls/input/inputdecimal.js +21 -27
- package/esm2015/controls/input/inputemail.js +5 -5
- package/esm2015/controls/input/inputinteger.js +19 -23
- package/esm2015/controls/input/inputpassword.js +4 -4
- package/esm2015/controls/input/inputsearch.js +9 -6
- package/esm2015/controls/layout/formlayout.js +10 -7
- package/esm2015/controls/list/buildvaluestring.js +6 -6
- package/esm2015/controls/list/dropdown.js +28 -27
- package/esm2015/controls/list/dropdownoptions.js +12 -12
- package/esm2015/controls/list/listbox.js +26 -24
- package/esm2015/controls/multilanguage/multilanguageinput.js +29 -29
- package/esm2015/controls/multilanguage/multilanguageinputarea.js +31 -31
- package/esm2015/controls/static/formcontainer.js +10 -10
- package/esm2015/controls/static/staticlabel.js +7 -7
- package/esm2015/controls/tabs/tab.js +2 -2
- package/esm2015/controls/tabs/tabitem.js +5 -5
- package/esm2015/controls/tinymce/tinymce.js +35 -35
- package/esm2015/controls/tinymce/tinymcedialogsettings.js +4 -4
- package/esm2015/controls/tinymce/tinymcedialogsettingsmeta.js +1 -1
- package/esm2015/controls/tinymce/tinymceinstance.js +1 -1
- package/esm2015/controls/tooltip/tooltip.js +13 -8
- package/esm2015/controls/treeview/treeview.js +52 -7
- package/esm2015/controls/upload/dropzonemultiple.js +18 -18
- package/esm2015/controls/upload/dropzonesingle.js +12 -12
- package/esm2015/controls/upload/uploadmultiple.js +14 -14
- package/esm2015/controls/upload/uploadsingle.js +8 -8
- package/esm2015/controls/validation/validationsummary.js +14 -13
- package/esm2015/controls/wizard/wizard.js +24 -17
- package/esm2015/controls/wizard/wizarditem.js +4 -4
- package/esm2015/enums/ButtonRoleType.js +1 -1
- package/esm2015/enums/ControlHeight.js +2 -2
- package/esm2015/enums/IconType.js +2 -2
- package/esm2015/interfaces/ISacConfigurationService.js +1 -1
- package/esm2015/interfaces/ISacFileBrowserService.js +1 -1
- package/esm2015/interfaces/ISacLabelSizes.js +1 -1
- package/esm2015/interfaces/ISacLanguageService.js +1 -1
- package/esm2015/interfaces/ISacLocalisationService.js +1 -1
- package/esm2015/interfaces/ISacUploadEventCompleteState.js +1 -1
- package/esm2015/interfaces/iabstractcontrollabel.js +1 -1
- package/esm2015/interfaces/iconfirmcomponent.js +1 -1
- package/esm2015/interfaces/idatetimecontrol.js +1 -1
- package/esm2015/interfaces/iuploadcontrol.js +1 -1
- package/esm2015/interfaces/treeviewaction.interface.js +1 -1
- package/esm2015/models/languagemodel.js +5 -3
- package/esm2015/public_api.js +3 -2
- package/esm2015/services/index.js +4 -4
- package/esm2015/services/sac-configuration.service.js +7 -1
- package/esm2015/services/sac-filebrowser.service.js +46 -38
- package/esm2015/services/sac-localisation.service.js +11 -7
- package/esm2015/services/sac-validationkey.service.js +148 -1
- package/esm2015/utilities/convertion.js +7 -5
- package/esm2015/utilities/datatypes.js +6 -4
- package/esm2015/utilities/enums.js +9 -8
- package/esm2015/utilities/guid.js +2 -2
- package/esm2015/utilities/interpolation.js +16 -9
- package/esm2015/utilities/popuphelper.js +62 -25
- package/esm2015/utilities/positioncalculator.js +209 -0
- package/esm2015/utilities/positioncalculator.ngfactory.js +7 -0
- package/esm2015/utilities/positionelements.js +108 -0
- package/esm2015/utilities/positionelements.ngfactory.js +7 -0
- package/esm2015/utilities/testingattribute.pipe.js +17 -2
- package/esm2015/validation/email.validator.js +11 -2
- package/esm2015/validation/equals.validator.js +11 -1
- package/esm2015/validation/index.js +1 -1
- package/esm2015/validation/invaliddate.validator.js +11 -2
- package/esm2015/validation/isDateValid.js +11 -10
- package/esm2015/validation/maxdate.validator.js +14 -4
- package/esm2015/validation/maxtime.validator.js +14 -4
- package/esm2015/validation/maxvalue.validator.js +12 -2
- package/esm2015/validation/mindate.validator.js +14 -4
- package/esm2015/validation/minfiles.validator.js +12 -2
- package/esm2015/validation/mintextlength.validator.js +9 -1
- package/esm2015/validation/mintime.validator.js +14 -4
- package/esm2015/validation/minvalue.validator.js +12 -2
- package/esm2015/validation/multilanguagerequired.validator.js +11 -1
- package/esm2015/validation/multilanguagerequiredany.validator.js +11 -1
- package/esm2015/validation/notequals.validator.js +11 -1
- package/esm2015/validation/pattern.validator.js +12 -2
- package/esm2015/validation/required.validator.js +11 -2
- package/esm2015/validation/validation.class.js +84 -101
- package/esm2015/validation/validationerrorcreator.js +12 -1
- package/esm2015/validation/validationerroritem.js +11 -9
- package/fesm2015/simpleangularcontrols-sac-common.js +1823 -1226
- package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -1
- package/interfaces/ISacConfigurationService.d.ts +9 -1
- package/interfaces/ISacFileBrowserService.d.ts +43 -43
- package/interfaces/ISacLabelSizes.d.ts +15 -12
- package/interfaces/ISacLanguageService.d.ts +3 -3
- package/interfaces/ISacLocalisationService.d.ts +2 -2
- package/interfaces/ISacUploadEventCompleteState.d.ts +6 -0
- package/interfaces/iabstractcontrollabel.d.ts +4 -1
- package/interfaces/iconfirmcomponent.d.ts +6 -6
- package/interfaces/idatetimecontrol.d.ts +10 -1
- package/interfaces/treeviewaction.interface.d.ts +9 -0
- package/models/languagemodel.d.ts +9 -9
- package/package.json +1 -1
- package/public_api.d.ts +2 -1
- package/services/index.d.ts +3 -3
- package/services/sac-configuration.service.d.ts +8 -0
- package/services/sac-filebrowser.service.d.ts +78 -70
- package/services/sac-localisation.service.d.ts +11 -7
- package/services/sac-validationkey.service.d.ts +147 -0
- package/simpleangularcontrols-sac-common-10.0.0-rc.30.tgz +0 -0
- package/simpleangularcontrols-sac-common.metadata.json +1 -1
- package/utilities/convertion.d.ts +4 -4
- package/utilities/datatypes.d.ts +3 -3
- package/utilities/enums.d.ts +8 -1
- package/utilities/guid.d.ts +1 -1
- package/utilities/interpolation.d.ts +9 -8
- package/utilities/popuphelper.d.ts +47 -10
- package/utilities/positioncalculator.d.ts +82 -0
- package/utilities/positionelements.d.ts +30 -0
- package/utilities/positionelements.ngfactory.d.ts +1 -0
- package/utilities/testingattribute.pipe.d.ts +16 -1
- package/validation/email.validator.d.ts +7 -0
- package/validation/equals.validator.d.ts +8 -0
- package/validation/invaliddate.validator.d.ts +7 -0
- package/validation/isDateValid.d.ts +5 -2
- package/validation/maxdate.validator.d.ts +8 -0
- package/validation/maxtime.validator.d.ts +8 -0
- package/validation/maxvalue.validator.d.ts +8 -0
- package/validation/mindate.validator.d.ts +8 -0
- package/validation/minfiles.validator.d.ts +8 -0
- package/validation/mintextlength.validator.d.ts +8 -0
- package/validation/mintime.validator.d.ts +8 -0
- package/validation/minvalue.validator.d.ts +8 -0
- package/validation/multilanguagerequired.validator.d.ts +9 -1
- package/validation/multilanguagerequiredany.validator.d.ts +9 -1
- package/validation/notequals.validator.d.ts +8 -0
- package/validation/pattern.validator.d.ts +8 -0
- package/validation/required.validator.d.ts +7 -0
- package/validation/validation.class.d.ts +83 -100
- package/validation/validationerrorcreator.d.ts +9 -0
- package/validation/validationerroritem.d.ts +16 -16
- package/esm2015/utilities/positioning.js +0 -301
- package/esm2015/utilities/positioning.ngfactory.js +0 -7
- package/simpleangularcontrols-sac-common-10.0.0-rc.29.tgz +0 -0
- package/utilities/positioning.d.ts +0 -82
- /package/utilities/{positioning.ngfactory.d.ts → positioncalculator.ngfactory.d.ts} +0 -0
|
@@ -27,14 +27,15 @@ export class SacDefaultLocalisationService extends SacAbstractLocalisationServic
|
|
|
27
27
|
// #endregion Properties
|
|
28
28
|
// #region Constructors
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
30
|
+
* Constructor
|
|
31
|
+
* @param validationKeyService Service for validation key localization
|
|
32
|
+
*/
|
|
32
33
|
constructor(validationKeyService) {
|
|
33
34
|
super();
|
|
34
35
|
this.validationKeyService = validationKeyService;
|
|
35
36
|
// #region Properties
|
|
36
37
|
/**
|
|
37
|
-
* Language
|
|
38
|
+
* Language resources for the controls library
|
|
38
39
|
*/
|
|
39
40
|
this.data = new Map();
|
|
40
41
|
// Set Languages
|
|
@@ -283,7 +284,10 @@ export class SacDefaultLocalisationService extends SacAbstractLocalisationServic
|
|
|
283
284
|
// #endregion Protected Getters And Setters
|
|
284
285
|
// #region Public Methods
|
|
285
286
|
/**
|
|
286
|
-
*
|
|
287
|
+
* The method returns the selected language (string) based on key and params
|
|
288
|
+
* @param key The resource key to retrieve
|
|
289
|
+
* @param params Optional parameters for string interpolation
|
|
290
|
+
* @returns Observable string with the localized resource
|
|
287
291
|
*/
|
|
288
292
|
GetString(key, params) {
|
|
289
293
|
return new Observable((observer) => {
|
|
@@ -321,13 +325,13 @@ export class SacDefaultLocalisationService extends SacAbstractLocalisationServic
|
|
|
321
325
|
// #endregion Public Methods
|
|
322
326
|
// #region Private Methods
|
|
323
327
|
/**
|
|
324
|
-
*
|
|
328
|
+
* The function sets the default language to DE if language setting is not possible.
|
|
325
329
|
*/
|
|
326
330
|
GetFallbackLanguage() {
|
|
327
331
|
return 'de';
|
|
328
332
|
}
|
|
329
333
|
/**
|
|
330
|
-
*
|
|
334
|
+
* The function returns the selected language.
|
|
331
335
|
*/
|
|
332
336
|
GetLanguage() {
|
|
333
337
|
const language = navigator.language;
|
|
@@ -346,4 +350,4 @@ SacDefaultLocalisationService.decorators = [
|
|
|
346
350
|
SacDefaultLocalisationService.ctorParameters = () => [
|
|
347
351
|
{ type: undefined, decorators: [{ type: Inject, args: [SACVALIDATIONKEY_SERVICE,] }] }
|
|
348
352
|
];
|
|
349
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL3NpbXBsZWFuZ3VsYXJjb250cm9scy9zaW1wbGVhbmd1bGFyY29udHJvbHMvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsic2VydmljZXMvc2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRWxDLG9CQUFvQjtBQUVwQjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFpQyx3QkFBd0IsQ0FBQyxDQUFDO0FBRXBILHVCQUF1QjtBQUV2QiwyQkFBMkI7QUFFM0I7O0tBRUs7QUFFTCxNQUFNLE9BQWdCLDhCQUE4Qjs7OztZQURuRCxVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQThHbEM7O0tBRUs7QUFFTCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsOEJBQThCO0lBUTdFLHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7O1NBRUs7SUFDTCxZQUVZLG9CQUE4QztRQUV0RCxLQUFLLEVBQUUsQ0FBQztRQUZBLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBMEI7UUFoQjFELHFCQUFxQjtRQUVyQjs7V0FFRztRQUNJLFNBQUksR0FBcUMsSUFBSSxHQUFHLEVBQStCLENBQUM7UUFlbkYsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxD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QUMsUUFBUSxDQUFDO1FBRTVDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDSCxPQUFPLFFBQVEsQ0FBQztTQUNuQjtJQUNMLENBQUM7Ozs7WUExWkosVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7OzRDQWlCekIsTUFBTSxTQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElTYWNMb2NhbGlzYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JU2FjTG9jYWxpc2F0aW9uU2VydmljZSc7XG5pbXBvcnQgeyBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNWYWxpZGF0aW9uS2V5U2VydmljZSc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2ludGVycG9sYXRpb24nO1xuaW1wb3J0IHsgU0FDVkFMSURBVElPTktFWV9TRVJWSUNFIH0gZnJvbSAnLi9zYWMtdmFsaWRhdGlvbmtleS5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLy8gI3JlZ2lvbiBWYXJpYWJsZXNcblxuLyoqXG4gKiBpbmplY3Rpb24gdG9rZW4gZm9yIGxvY2FsaXNhdGlvbiBzZXJ2aWNlXG4gKi9cbmV4cG9ydCBjb25zdCBTQUNMT0NBTElTQVRJT05fU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTYWNBYnN0cmFjdExvY2FsaXNhdGlvblNlcnZpY2U+KCdTYWNMb2NhbGlzYXRpb25TZXJ2aWNlJyk7XG5cbi8vICNlbmRyZWdpb24gVmFyaWFibGVzXG5cbi8vICNyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuXG4vKipcbiAqIGFic3RyYWN0IGNsYXNzIGZvciBsb2NhbGlzYXRpb24gaW4gY29tcG9uZW50c1xuICogKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjQWJzdHJhY3RMb2NhbGlzYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgSVNhY0xvY2FsaXNhdGlvblNlcnZpY2Uge1xuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgQ09ORklSTV9CVVRUT05fTk8oKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgQ09ORklSTV9CVVRUT05fWUVTKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX0NPTkZJUk1fREVMRVRFRklMRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZPTERFUigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9ERUxFVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgRklMRUJST1dTRVJfR1JJRF9GSUxFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX0dSSURfU0laRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9ORVdGT0xERVIoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgRklMRUJST1dTRVJfTk9fRklMRVMoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgRklMRUJST1dTRVJfUkVGUkVTSCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9VUExPQUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgUEFHSU5HX1BBR0VFTlRSSUVTVEVYVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBQQUdJTkdfUEFHRU9GVEVYVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBUSU5ZTUNFX0ZJTEVTRUxFQ1RfQ0FOQ0VMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFRJTllNQ0VfRklMRVNFTEVDVF9ESUFMT0dUSVRMRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBUSU5ZTUNFX0ZJTEVTRUxFQ1RfT0soKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVVBMT0FEX0JVVFRPTl9CUk9XU0UoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVVBMT0FEX0JVVFRPTl9VUExPQUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVVBMT0FEX05PX0ZJTEVfU0VMRUNURUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9EQVRFVElNRUZPUk1BVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX0VNQUlMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfRklMRVNNSU4oKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhEQVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUFYVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX01BWFZBTFVFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOREFURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX01JTlRFWFRMRU5HVEgoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5USU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NVUxUSUxBTkdVQUdFUkVRVUlSRUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NVUxUSUxBTkdVQUdFUkVRVUlSRURBTlkoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9QQVRURVJOKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfUkVRVUlSRUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0RBVEVUSU1FRk9STUFUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9FTUFJTCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfRklMRVNNSU4oKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWERBVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWFRJTUUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWFZBTFVFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5EQVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5URVhUTEVOR1RIKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5USU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5WQUxVRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTVVMVElMQU5HVUFHRVJFUVVJUkVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NVUxUSUxBTkdVQUdFUkVRVUlSRURBTlkoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1BBVFRFUk4oKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1JFUVVJUkVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBEaWUgTWV0aG9kZSDDvGJlcnNldHp0IGRlbiBlaW5nZWdlYmVuZW4gV29ydC9CZWdyaWZmLiBWZXJsYW5ndCBrZXkgdW5kIG9wdGlvbmVsbCBwYXJhbXNcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgR2V0U3RyaW5nKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG59XG5cbi8qKlxuICogZGVmYXVsdCBsb2NhbGlzYXRpb24gc2VydmljZVxuICogKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU2FjRGVmYXVsdExvY2FsaXNhdGlvblNlcnZpY2UgZXh0ZW5kcyBTYWNBYnN0cmFjdExvY2FsaXNhdGlvblNlcnZpY2Uge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogTGFuZ3VhZ2UgUmVzb3VyY2VzIGbDvHIgQ29udHJvbHMgTGlicmFyeVxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRhOiBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PiA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBzdHJpbmc+PigpO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogS29uc3RydWt0b3JcbiAgICAgKiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSlcbiAgICAgICAgcHJpdmF0ZSB2YWxpZGF0aW9uS2V5U2VydmljZTogSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgLy8gU2V0IExhbmd1YWdlc1xuICAgICAgICB0aGlzLmRhdGEuc2V0KCdkZScsIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpO1xuXG4gICAgICAgIC8vIFZhbGlkYXRpb25cbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9SRVFVSVJFRC5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGFcbiAgICAgICAgICAgIC5nZXQoJ2RlJylcbiAgICAgICAgICAgIC5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkLCB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9SRVFVSVJFRC5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNaW5WYWx1ZSwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01JTlZBTFVFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluVmFsdWUsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlZBTFVFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclBhdHRlcm4sIHRoaXMuVkFMSURBVElPTl9FUlJPUl9QQVRURVJOLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UGF0dGVybiwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfUEFUVEVSTi5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNYXhWYWx1ZSwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01BWFZBTFVFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4VmFsdWUsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWFZBTFVFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvckVtYWlsLCB0aGlzLlZBTElEQVRJT05fRVJST1JfRU1BSUwuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICAgICAgICAuZ2V0KCdkZScpXG4gICAgICAgICAgICAuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlFbWFpbCwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfRU1BSUwuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICAgICAgICAuZ2V0KCdkZScpXG4gICAgICAgICAgICAuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvck1pblRleHRMZW5ndGgsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NSU5URVhUTEVOR1RILmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluVGV4dExlbmd0aCxcbiAgICAgICAgICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5URVhUTEVOR1RILmdldCgnZGUnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yTWluRGF0ZSwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01JTkRBVEUuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICAgICAgICAuZ2V0KCdkZScpXG4gICAgICAgICAgICAuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlNaW5EYXRlLCB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5EQVRFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvck1heERhdGUsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NQVhEQVRFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4RGF0ZSwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYREFURS5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNaW5UaW1lLCB0aGlzLlZBTElEQVRJT05fRVJST1JfTUlOVElNRS5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGFcbiAgICAgICAgICAgIC5nZXQoJ2RlJylcbiAgICAgICAgICAgIC5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeU1pblRpbWUsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlRJTUUuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yTWF4VGltZSwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01BWFRJTUUuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICAgICAgICAuZ2V0KCdkZScpXG4gICAgICAgICAgICAuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlNYXhUaW1lLCB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhUSU1FLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JEYXRldGltZUZvcm1hdCwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX0RBVEVUSU1FRk9STUFULmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RGF0ZXRpbWVGb3JtYXQsXG4gICAgICAgICAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfREFURVRJTUVGT1JNQVQuZ2V0KCdkZScpXG4gICAgICAgICAgICApO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JGaWxlc01pbiwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX0ZJTEVTTUlOLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RmlsZXNNaW4sIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0ZJTEVTTUlOLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNdWx0aWxhbmd1YWdlUmVxdWlyZWRBbnksXG4gICAgICAgICAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWS5nZXQoJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55LFxuICAgICAgICAgICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWS5nZXQoJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNdWx0aWxhbmd1YWdlUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01VTFRJTEFOR1VBR0VSRVFVSVJFRC5nZXQoJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TXVsdGlsYW5ndWFnZVJlcXVpcmVkLFxuICAgICAgICAgICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFRC5nZXQoJ2RlJylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgLy8gR3JpZCBDb21wb25lbnRcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuUGFnaW5nUGFnZU9mLCB0aGlzLlBBR0lOR19QQUdFT0ZURVhULmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlBhZ2luZ0VudHJpZXMsIHRoaXMuUEFHSU5HX1BBR0VFTlRSSUVTVEVYVC5nZXQoJ2RlJykpO1xuXG4gICAgICAgIC8vIFVwbG9hZCBDb21wb25lbnRcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkTm9GaWxlc1NlbGVjdGVkLCB0aGlzLlVQTE9BRF9OT19GSUxFX1NFTEVDVEVELmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZEJ1dHRvblVwbG9hZCwgdGhpcy5VUExPQURfQlVUVE9OX1VQTE9BRC5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWRCdXR0b25Ccm93c2UsIHRoaXMuVVBMT0FEX0JVVFRPTl9CUk9XU0UuZ2V0KCdkZScpKTtcblxuICAgICAgICAvLyBUaW55TUNFIENvbXBvbmVudFxuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5UaW55TWNlRmlsZXNlbGVjdE9rLCB0aGlzLlRJTllNQ0VfRklMRVNFTEVDVF9PSy5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5UaW55TWNlRmlsZXNlbGVjdENhbmNlbCwgdGhpcy5USU5ZTUNFX0ZJTEVTRUxFQ1RfQ0FOQ0VMLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5UaW55TWNlRmlsZXNlbGVjdERpYWxvZ3RpdGxlLCB0aGlzLlRJTllNQ0VfRklMRVNFTEVDVF9ESUFMT0dUSVRMRS5nZXQoJ2RlJykpO1xuXG4gICAgICAgIC8vIENvbmZpcm0gRGlhbG9nIENvbXBvbmVudFxuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5Db25maXJtRGVmYXVsdEJ1dHRvblllcywgdGhpcy5DT05GSVJNX0JVVFRPTl9ZRVMuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuQ29uZmlybURlZmF1bHRCdXR0b25ObywgdGhpcy5DT05GSVJNX0JVVFRPTl9OTy5nZXQoJ2RlJykpO1xuXG4gICAgICAgIC8vIEJyb3dzZXIgQ29tcG9uZW50XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyR3JpZE5vRmlsZXMsIHRoaXMuRklMRUJST1dTRVJfTk9fRklMRVMuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJHcmlkRmlsZW5hbWUsIHRoaXMuRklMRUJST1dTRVJfR1JJRF9GSUxFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyR3JpZFNpemUsIHRoaXMuRklMRUJST1dTRVJfR1JJRF9TSVpFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQnV0dG9uVXBsb2FkLCB0aGlzLkZJTEVCUk9XU0VSX1VQTE9BRC5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5GaWxlYnJvd3NlckJ1dHRvbk5ld0ZvbGRlciwgdGhpcy5GSUxFQlJPV1NFUl9ORVdGT0xERVIuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25SZWZyZXNoLCB0aGlzLkZJTEVCUk9XU0VSX1JFRlJFU0guZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25EZWxldGUsIHRoaXMuRklMRUJST1dTRVJfREVMRVRFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQ29uZmlybVRleHREZWxldGVGb2xkZXIsXG4gICAgICAgICAgICAgICAgdGhpcy5GSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZPTERFUi5nZXQoJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQ29uZmlybVRleHREZWxldGVGaWxlLFxuICAgICAgICAgICAgICAgIHRoaXMuRklMRUJST1dTRVJfQ09ORklSTV9ERUxFVEVGSUxFLmdldCgnZGUnKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAvLyBFTlxuICAgICAgICAvLyB0aGlzLmRhdGEuc2V0KCdlbicsIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICBwcm90ZWN0ZWQgZ2V0IENPTkZJUk1fQlVUVE9OX05PKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnTmVpbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBDT05GSVJNX0JVVFRPTl9ZRVMoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdKYSddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZJTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdTb2xsIGRpZSBEYXRlaSBnZWzDtnNjaHQgd2VyZGVuPyddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZPTERFUigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ1NvbGwgZGVyIE9yZG5lciBnZWzDtnNjaHQgd2VyZGVuPyddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9ERUxFVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdMw7ZzY2hlbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9HUklEX0ZJTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdEYXRlaW5hbWUnXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfR1JJRF9TSVpFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnR3LDtnNzZSddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9ORVdGT0xERVIoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdOZXVlciBPcmRuZXInXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfTk9fRklMRVMoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdLZWluZSBEYXRlaWVuIHZvcmhhbmRlbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9SRUZSRVNIKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnQWt0dWFsaXNpZXJlbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9VUExPQUQoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdMZWdlbiBTaWUgRGF0ZWllbiBoaWVyIGFiIHVtIFNpZSBob2NoenVsYWRlbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBQQUdJTkdfUEFHRUVOVFJJRVNURVhUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRWludHLDpGdlIHBybyBTZWl0ZSddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBQQUdJTkdfUEFHRU9GVEVYVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ1NlaXRlIHt7Q1VSUkVOVFBBR0V9fSB2b24ge3tUT1RBTFBBR0VTfX0nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVElOWU1DRV9GSUxFU0VMRUNUX0NBTkNFTCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0FiYnJlY2hlbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBUSU5ZTUNFX0ZJTEVTRUxFQ1RfRElBTE9HVElUTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdEYXRlaSBhdXN3w6RobGVuJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFRJTllNQ0VfRklMRVNFTEVDVF9PSygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ09LJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9CVVRUT05fQlJPV1NFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnQnJvd3NlLi4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9CVVRUT05fVVBMT0FEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnVXBsb2FkJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9OT19GSUxFX1NFTEVDVEVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnS2VpbmUgRGF0ZWkgYXVzZ2V3w6RobHQnXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9EQVRFVElNRUZPUk1BVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgaXN0IGtlaW4gZ8O8bHRpZ2VzIERhdHVtLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX0VNQUlMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBpc3Qga2VpbmUgRS1NYWlsIEFkcmVzc2UnXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9GSUxFU01JTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0VzIG3DvHNzZW4gbWluLiB7e01JTkZJTEVTfX0gRGF0ZWllbiBob2NoZ2VsYWRlbiBzZWluLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX01BWERBVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIG11c3Mgw6RsdGVyIG9kZXIgZ2xlaWNoIHt7TUFYREFURX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTUFYVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgbXVzcyDDpGx0ZXIgb2RlciBnbGVpY2gge3tNQVhUSU1FfX0gc2Vpbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhWQUxVRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBkYXJmIG5pY2h0IGdyw7Zzc2VyIGFscyB7e01BWFZBTFVFfX0gc2Vpbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5EQVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOREFURX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOVEVYVExFTkdUSCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgZXJmb3JkZXJ0IG1pbi4ge3tNSU5URVhUTEVOR1RIfX0gWmVpY2hlbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5USU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOVElNRX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdXZXJ0IGRhcmYgbmljaHQga2xlaW5lciBhbHMge3tNSU5WQUxVRX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRXMgbcO8c3NlbiBhbGxlIFNwcmFjaGVuIGVyZmFzc3Qgc2Vpbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NVUxUSUxBTkdVQUdFUkVRVUlSRURBTlkoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdFcyBtdXNzIG1pbi4gMSBTcHJhY2hlIGVyZmFzc3Qgc2Vpbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9QQVRURVJOKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnV2VydCBlbnRzcHJpY2h0IG5pY2h0IGRlciBGb3JtYXQgVm9ybGFnZS4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9SRVFVSVJFRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgaXN0IGVyZm9yZGVybGljaC4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0RBVEVUSU1FRk9STUFUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGlzdCBrZWluIGfDvGx0aWdlcyBEYXR1bS4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0VNQUlMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGlzdCBrZWluZSBFLU1haWwgQWRyZXNzZSddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfRklMRVNNSU4oKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyBtaW4uIHt7TUlORklMRVN9fSBEYXRlaWVuIGhvY2hnZWxhZGVuIGhhYmVuLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYREFURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIMOkbHRlciBvZGVyIGdsZWljaCB7e01BWERBVEV9fSBzZWluLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIMOkbHRlciBvZGVyIGdsZWljaCB7e01BWFRJTUV9fSBzZWluLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdXZXJ0IGRhcmYgbmljaHQgZ3LDtnNzZXIgYWxzIHt7TUFYVkFMVUV9fSBzZWluLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOREFURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOREFURX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5URVhUTEVOR1RIKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGVyZm9yZGVydCBtaW4uIHt7TUlOVEVYVExFTkdUSH19IFplaWNoZW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5USU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIG11c3MgbmV1ZXIgb2RlciBnbGVpY2gge3tNSU5USU1FfX0gc2Vpbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlZBTFVFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGRhcmYgbmljaHQga2xlaW5lciBhbHMge3tNSU5WQUxVRX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NVUxUSUxBTkdVQUdFUkVRVUlSRUQoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyBhbGxlIFNwcmFjaGVuIGVyZmFzc3QgaGFiZW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NVUxUSUxBTkdVQUdFUkVRVUlSRURBTlkoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyBtaW4uIDEgU3ByYWNoZSBlcmZhc3N0IGhhYmVuLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfUEFUVEVSTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBlbnRzcHJpY2h0IG5pY2h0IGRlciBGb3JtYXQgVm9ybGFnZS4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1JFUVVJUkVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGlzdCBlcmZvcmRlcmxpY2guJ11dKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBEaWUgTWV0aG9kZSBlcmdpYnQgZGllIHNlbGVjdGUgU3ByYWNoZSAoc3RyaW5nKSAgYW5oYW5kIHZvbiBLZXkgdW5kIFBhcmFtc1xuICAgICAqL1xuICAgIHB1YmxpYyBHZXRTdHJpbmcoa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgbGV0IGxhbmd1YWdlOiBzdHJpbmcgPSB0aGlzLkdldExhbmd1YWdlKCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhLmhhcyhsYW5ndWFnZSkpIHtcbiAgICAgICAgICAgICAgICBsYW5ndWFnZSA9IHRoaXMuR2V0RmFsbGJhY2tMYW5ndWFnZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gUmV0dXJuIEtleSBpZiBubyBMYW5ndWFnZSBleGlzdHNcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YS5oYXMobGFuZ3VhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5nZXQobGFuZ3VhZ2UpLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGlzLmRhdGEuZ2V0KGxhbmd1YWdlKS5nZXQoa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAocGFyYW1zICE9PSB1bmRlZmluZWQgJiYgcGFyYW1zICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlcjogSW50ZXJwb2xhdGlvbiA9IG5ldyBJbnRlcnBvbGF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZm9ybWF0dGVyLmludGVycG9sYXRlU3RyaW5nKHJlc291cmNlLCBwYXJhbXMpKTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGtleSk7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBEaWUgRnVua3Rpb24gc2V0enQgZGllIGRlZmF1bHQgU3ByYWNoZSBhdWYgREUsIGZhbGxzIGRpZSBTcHJhY2gtU2V0enVuZyBuaWNodCBtw7ZnbGljaCBpc3QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBHZXRGYWxsYmFja0xhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnZGUnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpZSBGdW5rdGlvbiBlcmdpYnQgZGllIGF1c2dld8OkaGx0ZSBTcHJhY2hlLlxuICAgICAqL1xuICAgIHByaXZhdGUgR2V0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbGFuZ3VhZ2U6IHN0cmluZyA9IG5hdmlnYXRvci5sYW5ndWFnZTtcblxuICAgICAgICBpZiAobGFuZ3VhZ2UuaW5kZXhPZignLScpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5zcGxpdCgnLScpWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cblxuLy8gI2VuZHJlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG4iXX0=
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL3NpbXBsZWFuZ3VsYXJjb250cm9scy9zaW1wbGVhbmd1bGFyY29udHJvbHMvY2guam5ldHdvcmsuc2FjLWNvbnRyb2xzL3Byb2plY3RzL3NhYy1jb21tb24vc3JjLyIsInNvdXJjZXMiOlsic2VydmljZXMvc2FjLWxvY2FsaXNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRWxDLG9CQUFvQjtBQUVwQjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUFpQyx3QkFBd0IsQ0FBQyxDQUFDO0FBRXBILHVCQUF1QjtBQUV2QiwyQkFBMkI7QUFFM0I7O0tBRUs7QUFFTCxNQUFNLE9BQWdCLDhCQUE4Qjs7OztZQURuRCxVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQThHbEM7O0tBRUs7QUFFTCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsOEJBQThCO0lBUTdFLHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7OztPQUdHO0lBQ0gsWUFFWSxvQkFBOEM7UUFFdEQsS0FBSyxFQUFFLENBQUM7UUFGQSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQTBCO1FBakIxRCxxQkFBcUI7UUFFckI7O1dBRUc7UUFDSSxTQUFJLEdBQXFDLElBQUksR0FBRyxFQUErQixDQUFDO1FBZ0JuRixnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFrQixDQUFDLENBQUM7UUFFL0MsYUFBYTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLElBQUk7YUFDSixHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ1QsR0FBRyxDQUFDLG9CQUFvQixDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hILElBQUksQ0FBQyxJQUFJO2FBQ0osR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsaUNBQWlDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RyxJQUFJLENBQUMsSUFBSTthQUNKLEdBQUcsQ0FBQyxJQUFJLENBQUM7YUFDVCxHQUFHLENBQUMsb0JBQW9CLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLElBQUk7YUFDSixHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ1QsR0FBRyxDQUFDLG9CQUFvQixDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFHLElBQUksQ0FBQyxJQUFJO2FBQ0osR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLElBQUk7YUFDSixHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ1QsR0FBRyxDQUFDLG9CQUFvQixDQUFDLDRCQUE0QixFQUFFLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsSUFBSTthQUNKLEdBQUcsQ0FBQyxJQUFJLENBQUM7YUFDVCxHQUFHLENBQ0Esb0JBQW9CLENBQUMsbUNBQW1DLEVBQ3hELElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQ3hELENBQUM7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxJQUFJO2FBQ0osR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RyxJQUFJLENBQUMsSUFBSTthQUNKLEdBQUcsQ0FBQyxJQUFJLENBQUM7YUFDVCxHQUFHLENBQUMsb0JBQW9CLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUcsSUFBSSxDQUFDLElBQUk7YUFDSixHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ1QsR0FBRyxDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5RyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxJQUFJO2FBQ0osR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUcsSUFBSSxDQUFDLElBQUk7YUFDSixHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ1QsR0FBRyxDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RyxJQUFJLENBQUMsSUFBSTthQUNKLEdBQUcsQ0FBQyxJQUFJLENBQUM7YUFDVCxHQUFHLENBQ0Esb0JBQW9CLENBQUMsb0NBQW9DLEVBQ3pELElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQ3pELENBQUM7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hILElBQUksQ0FBQyxJQUFJO2FBQ0osR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsaUNBQWlDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLElBQUk7YUFDSixHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ1QsR0FBRyxDQUNBLG9CQUFvQixDQUFDLHVDQUF1QyxFQUM1RCxJQUFJLENBQUMseUNBQXlDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUMzRCxDQUFDO1FBQ04sSUFBSSxDQUFDLElBQUk7YUFDSixHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ1QsR0FBRyxDQUNBLG9CQUFvQixDQUFDLDhDQUE4QyxFQUNuRSxJQUFJLENBQUMsaURBQWlELENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUNuRSxDQUFDO1FBQ04sSUFBSSxDQUFDLElBQUk7YUFDSixHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ1QsR0FBRyxDQUNBLG9CQUFvQixDQUFDLG9DQUFvQyxFQUN6RCxJQUFJLENBQUMsc0NBQXNDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUN4RCxDQUFDO1FBQ04sSUFBSSxDQUFDLElBQUk7YUFDSixHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ1QsR0FBRyxDQUNBLG9CQUFvQixDQUFDLDJDQUEyQyxFQUNoRSxJQUFJLENBQUMsOENBQThDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUNoRSxDQUFDO1FBRU4saUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRW5HLG1CQUFtQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV0RyxvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hILElBQUksQ0FBQyxJQUFJO2FBQ0osR0FBRyxDQUFDLElBQUksQ0FBQzthQUNULEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFM0csMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDekcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV2RyxvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9HLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsSUFBSTthQUNKLEdBQUcsQ0FBQyxJQUFJLENBQUM7YUFDVCxHQUFHLENBQ0EsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtDQUFrQyxFQUM1RCxJQUFJLENBQUMsZ0NBQWdDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUNsRCxDQUFDO1FBQ04sSUFBSSxDQUFDLElBQUk7YUFDSixHQUFHLENBQUMsSUFBSSxDQUFDO2FBQ1QsR0FBRyxDQUNBLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQ0FBZ0MsRUFDMUQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDaEQsQ0FBQztRQUVOLEtBQUs7UUFDTCxrREFBa0Q7SUFDdEQsQ0FBQztJQUVELDBCQUEwQjtJQUUxQix3Q0FBd0M7SUFFeEMsSUFBYyxpQkFBaUI7UUFDM0IsT0FBTyxJQUFJLEdBQUcsQ0FBaUIsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQWMsa0JBQWtCO1FBQzVCLE9BQU8sSUFBSSxHQUFHLENBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFjLDhCQUE4QjtRQUN4QyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxJQUFjLGdDQUFnQztRQUMxQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxJQUFjLGtCQUFrQjtRQUM1QixPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBYyxxQkFBcUI7UUFDL0IsT0FBTyxJQUFJLEdBQUcsQ0FBaUIsQ0FBQyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQWMscUJBQXFCO1FBQy9CLE9BQU8sSUFBSSxHQUFHLENBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFjLHFCQUFxQjtRQUMvQixPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBYyxvQkFBb0I7UUFDOUIsT0FBTyxJQUFJLEdBQUcsQ0FBaUIsQ0FBQyxDQUFDLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBYyxtQkFBbUI7UUFDN0IsT0FBTyxJQUFJLEdBQUcsQ0FBaUIsQ0FBQyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQWMsa0JBQWtCO1FBQzVCLE9BQU8sSUFBSSxHQUFHLENBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsOENBQThDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELElBQWMsc0JBQXNCO1FBQ2hDLE9BQU8sSUFBSSxHQUFHLENBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELElBQWMsaUJBQWlCO1FBQzNCLE9BQU8sSUFBSSxHQUFHLENBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsMENBQTBDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELElBQWMseUJBQXlCO1FBQ25DLE9BQU8sSUFBSSxHQUFHLENBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFjLDhCQUE4QjtRQUN4QyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFjLHFCQUFxQjtRQUMvQixPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBYyxvQkFBb0I7UUFDOUIsT0FBTyxJQUFJLEdBQUcsQ0FBaUIsQ0FBQyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQWMsb0JBQW9CO1FBQzlCLE9BQU8sSUFBSSxHQUFHLENBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFjLHVCQUF1QjtRQUNqQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFjLCtCQUErQjtRQUN6QyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLCtCQUErQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxJQUFjLHNCQUFzQjtRQUNoQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLCtCQUErQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxJQUFjLHlCQUF5QjtRQUNuQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLHVEQUF1RCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRCxJQUFjLHdCQUF3QjtRQUNsQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLCtDQUErQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxJQUFjLHdCQUF3QjtRQUNsQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLCtDQUErQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxJQUFjLHlCQUF5QjtRQUNuQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLDREQUE0RCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxJQUFjLHdCQUF3QjtRQUNsQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLCtDQUErQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxJQUFjLDhCQUE4QjtRQUN4QyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLGdEQUFnRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFjLHdCQUF3QjtRQUNsQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLCtDQUErQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxJQUFjLHlCQUF5QjtRQUNuQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLGdEQUFnRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFjLHNDQUFzQztRQUNoRCxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxJQUFjLHlDQUF5QztRQUNuRCxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLHNDQUFzQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFjLHdCQUF3QjtRQUNsQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLDJDQUEyQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxJQUFjLHlCQUF5QjtRQUNuQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFjLHVDQUF1QztRQUNqRCxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLDJDQUEyQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxJQUFjLDhCQUE4QjtRQUN4QyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLDJDQUEyQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxJQUFjLGlDQUFpQztRQUMzQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLG9FQUFvRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ILENBQUM7SUFFRCxJQUFjLGdDQUFnQztRQUMxQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLDJEQUEyRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxJQUFjLGdDQUFnQztRQUMxQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLDJEQUEyRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxJQUFjLGlDQUFpQztRQUMzQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLGdEQUFnRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFjLGdDQUFnQztRQUMxQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLDJEQUEyRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxJQUFjLHNDQUFzQztRQUNoRCxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLDREQUE0RCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxJQUFjLGdDQUFnQztRQUMxQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLDJEQUEyRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxJQUFjLGlDQUFpQztRQUMzQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLDREQUE0RCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxJQUFjLDhDQUE4QztRQUN4RCxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLG9EQUFvRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFRCxJQUFjLGlEQUFpRDtRQUMzRCxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLHFEQUFxRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFRCxJQUFjLGdDQUFnQztRQUMxQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLHVEQUF1RCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRCxJQUFjLGlDQUFpQztRQUMzQyxPQUFPLElBQUksR0FBRyxDQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLG9DQUFvQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCwyQ0FBMkM7SUFFM0MseUJBQXlCO0lBRXpCOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUFZO1FBQ3RDLE9BQU8sSUFBSSxVQUFVLENBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN2QyxJQUFJLFFBQVEsR0FBVyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMxQixRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBRXRDLG1DQUFtQztnQkFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUMxQixRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNuQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3BCLE9BQU87aUJBQ1Y7YUFDSjtZQUVELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xELElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO29CQUN6QyxNQUFNLFNBQVMsR0FBa0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDckQsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQzdELFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDcEIsT0FBTztpQkFDVjtxQkFBTTtvQkFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN4QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3BCLE9BQU87aUJBQ1Y7YUFDSjtpQkFBTTtnQkFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3BCLE9BQU87YUFDVjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDRCQUE0QjtJQUU1QiwwQkFBMEI7SUFFMUI7O09BRUc7SUFDSyxtQkFBbUI7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVztRQUNmLE1BQU0sUUFBUSxHQUFXLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFFNUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1QixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakM7YUFBTTtZQUNILE9BQU8sUUFBUSxDQUFDO1NBQ25CO0lBQ0wsQ0FBQzs7OztZQTlaSixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7NENBa0J6QixNQUFNLFNBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVNhY0xvY2FsaXNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNMb2NhbGlzYXRpb25TZXJ2aWNlJztcbmltcG9ydCB7IElTYWNWYWxpZGF0aW9uS2V5U2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlJztcbmltcG9ydCB7IEludGVycG9sYXRpb24gfSBmcm9tICcuLi91dGlsaXRpZXMvaW50ZXJwb2xhdGlvbic7XG5pbXBvcnQgeyBTQUNWQUxJREFUSU9OS0VZX1NFUlZJQ0UgfSBmcm9tICcuL3NhYy12YWxpZGF0aW9ua2V5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vLyAjcmVnaW9uIFZhcmlhYmxlc1xuXG4vKipcbiAqIGluamVjdGlvbiB0b2tlbiBmb3IgbG9jYWxpc2F0aW9uIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNvbnN0IFNBQ0xPQ0FMSVNBVElPTl9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPFNhY0Fic3RyYWN0TG9jYWxpc2F0aW9uU2VydmljZT4oJ1NhY0xvY2FsaXNhdGlvblNlcnZpY2UnKTtcblxuLy8gI2VuZHJlZ2lvbiBWYXJpYWJsZXNcblxuLy8gI3JlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG5cbi8qKlxuICogYWJzdHJhY3QgY2xhc3MgZm9yIGxvY2FsaXNhdGlvbiBpbiBjb21wb25lbnRzXG4gKiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNBYnN0cmFjdExvY2FsaXNhdGlvblNlcnZpY2UgaW1wbGVtZW50cyBJU2FjTG9jYWxpc2F0aW9uU2VydmljZSB7XG4gICAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBDT05GSVJNX0JVVFRPTl9OTygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBDT05GSVJNX0JVVFRPTl9ZRVMoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgRklMRUJST1dTRVJfQ09ORklSTV9ERUxFVEVGSUxFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX0NPTkZJUk1fREVMRVRFRk9MREVSKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX0RFTEVURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9HUklEX0ZJTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgRklMRUJST1dTRVJfR1JJRF9TSVpFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX05FV0ZPTERFUigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9OT19GSUxFUygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBGSUxFQlJPV1NFUl9SRUZSRVNIKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IEZJTEVCUk9XU0VSX1VQTE9BRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBQQUdJTkdfUEFHRUVOVFJJRVNURVhUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFBBR0lOR19QQUdFT0ZURVhUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFRJTllNQ0VfRklMRVNFTEVDVF9DQU5DRUwoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVElOWU1DRV9GSUxFU0VMRUNUX0RJQUxPR1RJVExFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFRJTllNQ0VfRklMRVNFTEVDVF9PSygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBVUExPQURfQlVUVE9OX0JST1dTRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBVUExPQURfQlVUVE9OX1VQTE9BRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBVUExPQURfTk9fRklMRV9TRUxFQ1RFRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX0RBVEVUSU1FRk9STUFUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfRU1BSUwoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9GSUxFU01JTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX01BWERBVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhUSU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUFYVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5EQVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOVEVYVExFTkdUSCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX01JTlRJTUUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5WQUxVRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX01VTFRJTEFOR1VBR0VSRVFVSVJFRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1BBVFRFUk4oKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9SRVFVSVJFRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfREFURVRJTUVGT1JNQVQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0VNQUlMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9GSUxFU01JTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYREFURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTkRBVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlRFWFRMRU5HVEgoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlRJTUUoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlZBTFVFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NVUxUSUxBTkdVQUdFUkVRVUlSRUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfUEFUVEVSTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfUkVRVUlSRUQoKTogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIFRoZSBtZXRob2QgdHJhbnNsYXRlcyB0aGUgcHJvdmlkZWQgd29yZC90ZXJtLiBSZXF1aXJlcyBhIGtleSBhbmQgb3B0aW9uYWwgcGFyYW1zXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IEdldFN0cmluZyhrZXk6IHN0cmluZywgcGFyYW1zPzogYW55KTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xufVxuXG4vKipcbiAqIGRlZmF1bHQgbG9jYWxpc2F0aW9uIHNlcnZpY2VcbiAqICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFNhY0RlZmF1bHRMb2NhbGlzYXRpb25TZXJ2aWNlIGV4dGVuZHMgU2FjQWJzdHJhY3RMb2NhbGlzYXRpb25TZXJ2aWNlIHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIExhbmd1YWdlIHJlc291cmNlcyBmb3IgdGhlIGNvbnRyb2xzIGxpYnJhcnlcbiAgICAgKi9cbiAgICBwdWJsaWMgZGF0YTogTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj4gPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgc3RyaW5nPj4oKTtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHZhbGlkYXRpb25LZXlTZXJ2aWNlIFNlcnZpY2UgZm9yIHZhbGlkYXRpb24ga2V5IGxvY2FsaXphdGlvblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSlcbiAgICAgICAgcHJpdmF0ZSB2YWxpZGF0aW9uS2V5U2VydmljZTogSVNhY1ZhbGlkYXRpb25LZXlTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgLy8gU2V0IExhbmd1YWdlc1xuICAgICAgICB0aGlzLmRhdGEuc2V0KCdkZScsIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpO1xuXG4gICAgICAgIC8vIFZhbGlkYXRpb25cbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9SRVFVSVJFRC5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGFcbiAgICAgICAgICAgIC5nZXQoJ2RlJylcbiAgICAgICAgICAgIC5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkLCB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9SRVFVSVJFRC5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNaW5WYWx1ZSwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01JTlZBTFVFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluVmFsdWUsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlZBTFVFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclBhdHRlcm4sIHRoaXMuVkFMSURBVElPTl9FUlJPUl9QQVRURVJOLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UGF0dGVybiwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfUEFUVEVSTi5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNYXhWYWx1ZSwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01BWFZBTFVFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4VmFsdWUsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWFZBTFVFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvckVtYWlsLCB0aGlzLlZBTElEQVRJT05fRVJST1JfRU1BSUwuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICAgICAgICAuZ2V0KCdkZScpXG4gICAgICAgICAgICAuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlFbWFpbCwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfRU1BSUwuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICAgICAgICAuZ2V0KCdkZScpXG4gICAgICAgICAgICAuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvck1pblRleHRMZW5ndGgsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NSU5URVhUTEVOR1RILmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluVGV4dExlbmd0aCxcbiAgICAgICAgICAgICAgICB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5URVhUTEVOR1RILmdldCgnZGUnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yTWluRGF0ZSwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01JTkRBVEUuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICAgICAgICAuZ2V0KCdkZScpXG4gICAgICAgICAgICAuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlNaW5EYXRlLCB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5EQVRFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvck1heERhdGUsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9NQVhEQVRFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4RGF0ZSwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYREFURS5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNaW5UaW1lLCB0aGlzLlZBTElEQVRJT05fRVJST1JfTUlOVElNRS5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGFcbiAgICAgICAgICAgIC5nZXQoJ2RlJylcbiAgICAgICAgICAgIC5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeU1pblRpbWUsIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlRJTUUuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yTWF4VGltZSwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01BWFRJTUUuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICAgICAgICAuZ2V0KCdkZScpXG4gICAgICAgICAgICAuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlNYXhUaW1lLCB0aGlzLlZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhUSU1FLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JEYXRldGltZUZvcm1hdCwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX0RBVEVUSU1FRk9STUFULmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RGF0ZXRpbWVGb3JtYXQsXG4gICAgICAgICAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfREFURVRJTUVGT1JNQVQuZ2V0KCdkZScpXG4gICAgICAgICAgICApO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JGaWxlc01pbiwgdGhpcy5WQUxJREFUSU9OX0VSUk9SX0ZJTEVTTUlOLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RmlsZXNNaW4sIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0ZJTEVTTUlOLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNdWx0aWxhbmd1YWdlUmVxdWlyZWRBbnksXG4gICAgICAgICAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWS5nZXQoJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55LFxuICAgICAgICAgICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWS5nZXQoJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNdWx0aWxhbmd1YWdlUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgdGhpcy5WQUxJREFUSU9OX0VSUk9SX01VTFRJTEFOR1VBR0VSRVFVSVJFRC5nZXQoJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TXVsdGlsYW5ndWFnZVJlcXVpcmVkLFxuICAgICAgICAgICAgICAgIHRoaXMuVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFRC5nZXQoJ2RlJylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgLy8gR3JpZCBDb21wb25lbnRcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuUGFnaW5nUGFnZU9mLCB0aGlzLlBBR0lOR19QQUdFT0ZURVhULmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlBhZ2luZ0VudHJpZXMsIHRoaXMuUEFHSU5HX1BBR0VFTlRSSUVTVEVYVC5nZXQoJ2RlJykpO1xuXG4gICAgICAgIC8vIFVwbG9hZCBDb21wb25lbnRcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuVXBsb2FkTm9GaWxlc1NlbGVjdGVkLCB0aGlzLlVQTE9BRF9OT19GSUxFX1NFTEVDVEVELmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLlVwbG9hZEJ1dHRvblVwbG9hZCwgdGhpcy5VUExPQURfQlVUVE9OX1VQTE9BRC5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5VcGxvYWRCdXR0b25Ccm93c2UsIHRoaXMuVVBMT0FEX0JVVFRPTl9CUk9XU0UuZ2V0KCdkZScpKTtcblxuICAgICAgICAvLyBUaW55TUNFIENvbXBvbmVudFxuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5UaW55TWNlRmlsZXNlbGVjdE9rLCB0aGlzLlRJTllNQ0VfRklMRVNFTEVDVF9PSy5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5UaW55TWNlRmlsZXNlbGVjdENhbmNlbCwgdGhpcy5USU5ZTUNFX0ZJTEVTRUxFQ1RfQ0FOQ0VMLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5UaW55TWNlRmlsZXNlbGVjdERpYWxvZ3RpdGxlLCB0aGlzLlRJTllNQ0VfRklMRVNFTEVDVF9ESUFMT0dUSVRMRS5nZXQoJ2RlJykpO1xuXG4gICAgICAgIC8vIENvbmZpcm0gRGlhbG9nIENvbXBvbmVudFxuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5Db25maXJtRGVmYXVsdEJ1dHRvblllcywgdGhpcy5DT05GSVJNX0JVVFRPTl9ZRVMuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuQ29uZmlybURlZmF1bHRCdXR0b25ObywgdGhpcy5DT05GSVJNX0JVVFRPTl9OTy5nZXQoJ2RlJykpO1xuXG4gICAgICAgIC8vIEJyb3dzZXIgQ29tcG9uZW50XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyR3JpZE5vRmlsZXMsIHRoaXMuRklMRUJST1dTRVJfTk9fRklMRVMuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJHcmlkRmlsZW5hbWUsIHRoaXMuRklMRUJST1dTRVJfR1JJRF9GSUxFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyR3JpZFNpemUsIHRoaXMuRklMRUJST1dTRVJfR1JJRF9TSVpFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YS5nZXQoJ2RlJykuc2V0KHZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQnV0dG9uVXBsb2FkLCB0aGlzLkZJTEVCUk9XU0VSX1VQTE9BRC5nZXQoJ2RlJykpO1xuICAgICAgICB0aGlzLmRhdGEuZ2V0KCdkZScpLnNldCh2YWxpZGF0aW9uS2V5U2VydmljZS5GaWxlYnJvd3NlckJ1dHRvbk5ld0ZvbGRlciwgdGhpcy5GSUxFQlJPV1NFUl9ORVdGT0xERVIuZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25SZWZyZXNoLCB0aGlzLkZJTEVCUk9XU0VSX1JFRlJFU0guZ2V0KCdkZScpKTtcbiAgICAgICAgdGhpcy5kYXRhLmdldCgnZGUnKS5zZXQodmFsaWRhdGlvbktleVNlcnZpY2UuRmlsZWJyb3dzZXJCdXR0b25EZWxldGUsIHRoaXMuRklMRUJST1dTRVJfREVMRVRFLmdldCgnZGUnKSk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQ29uZmlybVRleHREZWxldGVGb2xkZXIsXG4gICAgICAgICAgICAgICAgdGhpcy5GSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZPTERFUi5nZXQoJ2RlJylcbiAgICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVxuICAgICAgICAgICAgLmdldCgnZGUnKVxuICAgICAgICAgICAgLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLkZpbGVicm93c2VyQ29uZmlybVRleHREZWxldGVGaWxlLFxuICAgICAgICAgICAgICAgIHRoaXMuRklMRUJST1dTRVJfQ09ORklSTV9ERUxFVEVGSUxFLmdldCgnZGUnKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAvLyBFTlxuICAgICAgICAvLyB0aGlzLmRhdGEuc2V0KCdlbicsIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICBwcm90ZWN0ZWQgZ2V0IENPTkZJUk1fQlVUVE9OX05PKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnTmVpbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBDT05GSVJNX0JVVFRPTl9ZRVMoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdKYSddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZJTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdTb2xsIGRpZSBEYXRlaSBnZWzDtnNjaHQgd2VyZGVuPyddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZPTERFUigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ1NvbGwgZGVyIE9yZG5lciBnZWzDtnNjaHQgd2VyZGVuPyddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9ERUxFVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdMw7ZzY2hlbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9HUklEX0ZJTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdEYXRlaW5hbWUnXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfR1JJRF9TSVpFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnR3LDtnNzZSddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9ORVdGT0xERVIoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdOZXVlciBPcmRuZXInXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgRklMRUJST1dTRVJfTk9fRklMRVMoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdLZWluZSBEYXRlaWVuIHZvcmhhbmRlbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9SRUZSRVNIKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnQWt0dWFsaXNpZXJlbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBGSUxFQlJPV1NFUl9VUExPQUQoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdMZWdlbiBTaWUgRGF0ZWllbiBoaWVyIGFiIHVtIFNpZSBob2NoenVsYWRlbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBQQUdJTkdfUEFHRUVOVFJJRVNURVhUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRWludHLDpGdlIHBybyBTZWl0ZSddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBQQUdJTkdfUEFHRU9GVEVYVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ1NlaXRlIHt7Q1VSUkVOVFBBR0V9fSB2b24ge3tUT1RBTFBBR0VTfX0nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVElOWU1DRV9GSUxFU0VMRUNUX0NBTkNFTCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0FiYnJlY2hlbiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBUSU5ZTUNFX0ZJTEVTRUxFQ1RfRElBTE9HVElUTEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdEYXRlaSBhdXN3w6RobGVuJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFRJTllNQ0VfRklMRVNFTEVDVF9PSygpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ09LJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9CVVRUT05fQlJPV1NFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnQnJvd3NlLi4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9CVVRUT05fVVBMT0FEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnVXBsb2FkJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFVQTE9BRF9OT19GSUxFX1NFTEVDVEVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnS2VpbmUgRGF0ZWkgYXVzZ2V3w6RobHQnXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9EQVRFVElNRUZPUk1BVCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgaXN0IGtlaW4gZ8O8bHRpZ2VzIERhdHVtLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX0VNQUlMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBpc3Qga2VpbmUgRS1NYWlsIEFkcmVzc2UnXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9GSUxFU01JTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0VzIG3DvHNzZW4gbWluLiB7e01JTkZJTEVTfX0gRGF0ZWllbiBob2NoZ2VsYWRlbiBzZWluLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX01BWERBVEUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIG11c3Mgw6RsdGVyIG9kZXIgZ2xlaWNoIHt7TUFYREFURX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTUFYVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgbXVzcyDDpGx0ZXIgb2RlciBnbGVpY2gge3tNQVhUSU1FfX0gc2Vpbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NQVhWQUxVRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBkYXJmIG5pY2h0IGdyw7Zzc2VyIGFscyB7e01BWFZBTFVFfX0gc2Vpbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5EQVRFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOREFURX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOVEVYVExFTkdUSCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgZXJmb3JkZXJ0IG1pbi4ge3tNSU5URVhUTEVOR1RIfX0gWmVpY2hlbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NSU5USU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOVElNRX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTUlOVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdXZXJ0IGRhcmYgbmljaHQga2xlaW5lciBhbHMge3tNSU5WQUxVRX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRXMgbcO8c3NlbiBhbGxlIFNwcmFjaGVuIGVyZmFzc3Qgc2Vpbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9NVUxUSUxBTkdVQUdFUkVRVUlSRURBTlkoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdFcyBtdXNzIG1pbi4gMSBTcHJhY2hlIGVyZmFzc3Qgc2Vpbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9QQVRURVJOKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnV2VydCBlbnRzcHJpY2h0IG5pY2h0IGRlciBGb3JtYXQgVm9ybGFnZS4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9SRVFVSVJFRCgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgaXN0IGVyZm9yZGVybGljaC4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0RBVEVUSU1FRk9STUFUKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGlzdCBrZWluIGfDvGx0aWdlcyBEYXR1bS4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0VNQUlMKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGlzdCBrZWluZSBFLU1haWwgQWRyZXNzZSddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfRklMRVNNSU4oKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyBtaW4uIHt7TUlORklMRVN9fSBEYXRlaWVuIGhvY2hnZWxhZGVuIGhhYmVuLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYREFURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIMOkbHRlciBvZGVyIGdsZWljaCB7e01BWERBVEV9fSBzZWluLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVElNRSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIMOkbHRlciBvZGVyIGdsZWljaCB7e01BWFRJTUV9fSBzZWluLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVkFMVUUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdXZXJ0IGRhcmYgbmljaHQgZ3LDtnNzZXIgYWxzIHt7TUFYVkFMVUV9fSBzZWluLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOREFURSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBtdXNzIG5ldWVyIG9kZXIgZ2xlaWNoIHt7TUlOREFURX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5URVhUTEVOR1RIKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGVyZm9yZGVydCBtaW4uIHt7TUlOVEVYVExFTkdUSH19IFplaWNoZW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5USU1FKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIG11c3MgbmV1ZXIgb2RlciBnbGVpY2gge3tNSU5USU1FfX0gc2Vpbi4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlZBTFVFKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGRhcmYgbmljaHQga2xlaW5lciBhbHMge3tNSU5WQUxVRX19IHNlaW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NVUxUSUxBTkdVQUdFUkVRVUlSRUQoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyBhbGxlIFNwcmFjaGVuIGVyZmFzc3QgaGFiZW4uJ11dKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NVUxUSUxBTkdVQUdFUkVRVUlSRURBTlkoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbWydkZScsICdGZWxkIFwie3tGSUVMRH19XCIgbXVzcyBtaW4uIDEgU3ByYWNoZSBlcmZhc3N0IGhhYmVuLiddXSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfUEFUVEVSTigpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtbJ2RlJywgJ0ZlbGQgXCJ7e0ZJRUxEfX1cIiBlbnRzcHJpY2h0IG5pY2h0IGRlciBGb3JtYXQgVm9ybGFnZS4nXV0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1JFUVVJUkVEKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW1snZGUnLCAnRmVsZCBcInt7RklFTER9fVwiIGlzdCBlcmZvcmRlcmxpY2guJ11dKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWV0aG9kIHJldHVybnMgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIChzdHJpbmcpIGJhc2VkIG9uIGtleSBhbmQgcGFyYW1zXG4gICAgICogQHBhcmFtIGtleSBUaGUgcmVzb3VyY2Uga2V5IHRvIHJldHJpZXZlXG4gICAgICogQHBhcmFtIHBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBzdHJpbmcgaW50ZXJwb2xhdGlvblxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgc3RyaW5nIHdpdGggdGhlIGxvY2FsaXplZCByZXNvdXJjZVxuICAgICAqL1xuICAgIHB1YmxpYyBHZXRTdHJpbmcoa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChvYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgbGV0IGxhbmd1YWdlOiBzdHJpbmcgPSB0aGlzLkdldExhbmd1YWdlKCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhLmhhcyhsYW5ndWFnZSkpIHtcbiAgICAgICAgICAgICAgICBsYW5ndWFnZSA9IHRoaXMuR2V0RmFsbGJhY2tMYW5ndWFnZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gUmV0dXJuIEtleSBpZiBubyBMYW5ndWFnZSBleGlzdHNcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YS5oYXMobGFuZ3VhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5nZXQobGFuZ3VhZ2UpLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGlzLmRhdGEuZ2V0KGxhbmd1YWdlKS5nZXQoa2V5KTtcbiAgICAgICAgICAgICAgICBpZiAocGFyYW1zICE9PSB1bmRlZmluZWQgJiYgcGFyYW1zICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlcjogSW50ZXJwb2xhdGlvbiA9IG5ldyBJbnRlcnBvbGF0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZm9ybWF0dGVyLmludGVycG9sYXRlU3RyaW5nKHJlc291cmNlLCBwYXJhbXMpKTtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGtleSk7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnVuY3Rpb24gc2V0cyB0aGUgZGVmYXVsdCBsYW5ndWFnZSB0byBERSBpZiBsYW5ndWFnZSBzZXR0aW5nIGlzIG5vdCBwb3NzaWJsZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIEdldEZhbGxiYWNrTGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdkZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNlbGVjdGVkIGxhbmd1YWdlLlxuICAgICAqL1xuICAgIHByaXZhdGUgR2V0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbGFuZ3VhZ2U6IHN0cmluZyA9IG5hdmlnYXRvci5sYW5ndWFnZTtcblxuICAgICAgICBpZiAobGFuZ3VhZ2UuaW5kZXhPZignLScpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZS5zcGxpdCgnLScpWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cblxuLy8gI2VuZHJlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG4iXX0=
|
|
@@ -7,147 +7,294 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
export const SACVALIDATIONKEY_SERVICE = new InjectionToken('SacValidationkeyService');
|
|
8
8
|
// #endregion Variables
|
|
9
9
|
// #region Exported Classes
|
|
10
|
+
/**
|
|
11
|
+
* Default implementation for validation key resolution.
|
|
12
|
+
*
|
|
13
|
+
* Provides predefined resource keys for many standard validation messages and
|
|
14
|
+
* action labels used throughout the control library.
|
|
15
|
+
*/
|
|
10
16
|
export class SacDefaultValidationKeyService {
|
|
11
17
|
// #region Public Getters And Setters
|
|
18
|
+
/**
|
|
19
|
+
* Returns the validation key for the default negative confirm button.
|
|
20
|
+
*/
|
|
12
21
|
get ConfirmDefaultButtonNo() {
|
|
13
22
|
return 'CONFIRM_BUTTON_NO';
|
|
14
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Returns the validation key for the default positive confirm button.
|
|
26
|
+
*/
|
|
15
27
|
get ConfirmDefaultButtonYes() {
|
|
16
28
|
return 'CONFIRM_BUTTON_YES';
|
|
17
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns the validation key for the browser delete button text.
|
|
32
|
+
*/
|
|
18
33
|
get FilebrowserButtonDelete() {
|
|
19
34
|
return 'FILEBROWSER_DELETE';
|
|
20
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns the validation key for the browser new folder button text.
|
|
38
|
+
*/
|
|
21
39
|
get FilebrowserButtonNewFolder() {
|
|
22
40
|
return 'FILEBROWSER_NEWFOLDER';
|
|
23
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Returns the validation key for the browser refresh button text.
|
|
44
|
+
*/
|
|
24
45
|
get FilebrowserButtonRefresh() {
|
|
25
46
|
return 'FILEBROWSER_REFRESH';
|
|
26
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns the validation key for the browser upload button text.
|
|
50
|
+
*/
|
|
27
51
|
get FilebrowserButtonUpload() {
|
|
28
52
|
return 'FILEBROWSER_UPLOAD';
|
|
29
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns the validation key for the delete-file confirmation text.
|
|
56
|
+
*/
|
|
30
57
|
get FilebrowserConfirmTextDeleteFile() {
|
|
31
58
|
return 'FILEBROWSER_CONFIRM_DELETEFILE';
|
|
32
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Returns the validation key for the delete-folder confirmation text.
|
|
62
|
+
*/
|
|
33
63
|
get FilebrowserConfirmTextDeleteFolder() {
|
|
34
64
|
return 'FILEBROWSER_CONFIRM_DELETEFOLDER';
|
|
35
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Returns the validation key for the browser file-name column title.
|
|
68
|
+
*/
|
|
36
69
|
get FilebrowserGridFilename() {
|
|
37
70
|
return 'FILEBROWSER_GRID_FILE';
|
|
38
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Returns the validation key used when no files are available.
|
|
74
|
+
*/
|
|
39
75
|
get FilebrowserGridNoFiles() {
|
|
40
76
|
return 'FILEBROWSER_NO_FILES';
|
|
41
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Returns the validation key for the browser file-size column title.
|
|
80
|
+
*/
|
|
42
81
|
get FilebrowserGridSize() {
|
|
43
82
|
return 'FILEBROWSER_GRID_SIZE';
|
|
44
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Returns the validation key for the paging page-size text.
|
|
86
|
+
*/
|
|
45
87
|
get PagingEntries() {
|
|
46
88
|
return 'PAGING_PAGEENTRIESTEXT';
|
|
47
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Returns the validation key for the paging current-page text.
|
|
92
|
+
*/
|
|
48
93
|
get PagingPageOf() {
|
|
49
94
|
return 'PAGING_PAGEOFTEXT';
|
|
50
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Returns the validation key for the TinyMCE file-select cancel button.
|
|
98
|
+
*/
|
|
51
99
|
get TinyMceFileselectCancel() {
|
|
52
100
|
return 'TINYMCE_FILESELECT_CANCEL';
|
|
53
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Returns the validation key for the TinyMCE file-select dialog title.
|
|
104
|
+
*/
|
|
54
105
|
get TinyMceFileselectDialogtitle() {
|
|
55
106
|
return 'TINYMCE_FILESELECT_DIALOGTITLE';
|
|
56
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Returns the validation key for the TinyMCE file-select confirm button.
|
|
110
|
+
*/
|
|
57
111
|
get TinyMceFileselectOk() {
|
|
58
112
|
return 'TINYMCE_FILESELECT_OK';
|
|
59
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Returns the validation key for the upload browse button text.
|
|
116
|
+
*/
|
|
60
117
|
get UploadButtonBrowse() {
|
|
61
118
|
return 'UPLOAD_BUTTON_BROWSE';
|
|
62
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Returns the validation key for the upload action button text.
|
|
122
|
+
*/
|
|
63
123
|
get UploadButtonUpload() {
|
|
64
124
|
return 'UPLOAD_BUTTON_UPLOAD';
|
|
65
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Returns the validation key used when no file is selected.
|
|
128
|
+
*/
|
|
66
129
|
get UploadNoFilesSelected() {
|
|
67
130
|
return 'UPLOAD_NO_FILE_SELECTED';
|
|
68
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Returns the validation key for date-time format errors.
|
|
134
|
+
*/
|
|
69
135
|
get ValidationErrorDatetimeFormat() {
|
|
70
136
|
return 'VALIDATION_ERROR_DATETIMEFORMAT';
|
|
71
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Returns the validation key for email validation errors.
|
|
140
|
+
*/
|
|
72
141
|
get ValidationErrorEmail() {
|
|
73
142
|
return 'VALIDATION_ERROR_EMAIL';
|
|
74
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Returns the validation key for minimum-file-count errors.
|
|
146
|
+
*/
|
|
75
147
|
get ValidationErrorFilesMin() {
|
|
76
148
|
return 'VALIDATION_ERROR_FILESMIN';
|
|
77
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Returns the validation key for maximum-date errors.
|
|
152
|
+
*/
|
|
78
153
|
get ValidationErrorMaxDate() {
|
|
79
154
|
return 'VALIDATION_ERROR_MAXDATE';
|
|
80
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Returns the validation key for maximum-time errors.
|
|
158
|
+
*/
|
|
81
159
|
get ValidationErrorMaxTime() {
|
|
82
160
|
return 'VALIDATION_ERROR_MAXTIME';
|
|
83
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Returns the validation key for maximum-value errors.
|
|
164
|
+
*/
|
|
84
165
|
get ValidationErrorMaxValue() {
|
|
85
166
|
return 'VALIDATION_ERROR_MAXVALUE';
|
|
86
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Returns the validation key for minimum-date errors.
|
|
170
|
+
*/
|
|
87
171
|
get ValidationErrorMinDate() {
|
|
88
172
|
return 'VALIDATION_ERROR_MINDATE';
|
|
89
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Returns the validation key for minimum-text-length errors.
|
|
176
|
+
*/
|
|
90
177
|
get ValidationErrorMinTextLength() {
|
|
91
178
|
return 'VALIDATION_ERROR_MINTEXTLENGTH';
|
|
92
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Returns the validation key for minimum-time errors.
|
|
182
|
+
*/
|
|
93
183
|
get ValidationErrorMinTime() {
|
|
94
184
|
return 'VALIDATION_ERROR_MINTIME';
|
|
95
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Returns the validation key for minimum-value errors.
|
|
188
|
+
*/
|
|
96
189
|
get ValidationErrorMinValue() {
|
|
97
190
|
return 'VALIDATION_ERROR_MINVALUE';
|
|
98
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Returns the validation key for required multilanguage fields.
|
|
194
|
+
*/
|
|
99
195
|
get ValidationErrorMultilanguageRequired() {
|
|
100
196
|
return 'VALIDATION_ERROR_MULTILANGUAGEREQUIRED';
|
|
101
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Returns the validation key when at least one multilanguage value is required.
|
|
200
|
+
*/
|
|
102
201
|
get ValidationErrorMultilanguageRequiredAny() {
|
|
103
202
|
return 'VALIDATION_ERROR_MULTILANGUAGEREQUIREDANY';
|
|
104
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Returns the validation key for pattern-mismatch errors.
|
|
206
|
+
*/
|
|
105
207
|
get ValidationErrorPattern() {
|
|
106
208
|
return 'VALIDATION_ERROR_PATTERN';
|
|
107
209
|
}
|
|
108
210
|
// Generic Messages
|
|
211
|
+
/**
|
|
212
|
+
* Returns the validation key for required-field errors.
|
|
213
|
+
*/
|
|
109
214
|
get ValidationErrorRequired() {
|
|
110
215
|
return 'VALIDATION_ERROR_REQUIRED';
|
|
111
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Returns the summary validation key for date-time format errors.
|
|
219
|
+
*/
|
|
112
220
|
get ValidationErrorSummaryDatetimeFormat() {
|
|
113
221
|
return 'VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT';
|
|
114
222
|
}
|
|
223
|
+
/**
|
|
224
|
+
* Returns the summary validation key for email errors.
|
|
225
|
+
*/
|
|
115
226
|
get ValidationErrorSummaryEmail() {
|
|
116
227
|
return 'VALIDATION_ERROR_SUMMARY_EMAIL';
|
|
117
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Returns the summary validation key for minimum-file-count errors.
|
|
231
|
+
*/
|
|
118
232
|
get ValidationErrorSummaryFilesMin() {
|
|
119
233
|
return 'VALIDATION_ERROR_SUMMARY_FILESMIN';
|
|
120
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* Returns the summary validation key for maximum-date errors.
|
|
237
|
+
*/
|
|
121
238
|
get ValidationErrorSummaryMaxDate() {
|
|
122
239
|
return 'VALIDATION_ERROR_SUMMARY_MAXDATE';
|
|
123
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Returns the summary validation key for maximum-time errors.
|
|
243
|
+
*/
|
|
124
244
|
get ValidationErrorSummaryMaxTime() {
|
|
125
245
|
return 'VALIDATION_ERROR_SUMMARY_MAXTIME';
|
|
126
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* Returns the summary validation key for maximum-value errors.
|
|
249
|
+
*/
|
|
127
250
|
get ValidationErrorSummaryMaxValue() {
|
|
128
251
|
return 'VALIDATION_ERROR_SUMMARY_MAXVALUE';
|
|
129
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* Returns the summary validation key for minimum-date errors.
|
|
255
|
+
*/
|
|
130
256
|
get ValidationErrorSummaryMinDate() {
|
|
131
257
|
return 'VALIDATION_ERROR_SUMMARY_MINDATE';
|
|
132
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Returns the summary validation key for minimum-text-length errors.
|
|
261
|
+
*/
|
|
133
262
|
get ValidationErrorSummaryMinTextLength() {
|
|
134
263
|
return 'VALIDATION_ERROR_SUMMARY_MINTEXTLENGTH';
|
|
135
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Returns the summary validation key for minimum-time errors.
|
|
267
|
+
*/
|
|
136
268
|
get ValidationErrorSummaryMinTime() {
|
|
137
269
|
return 'VALIDATION_ERROR_SUMMARY_MINTIME';
|
|
138
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Returns the summary validation key for minimum-value errors.
|
|
273
|
+
*/
|
|
139
274
|
get ValidationErrorSummaryMinValue() {
|
|
140
275
|
return 'VALIDATION_ERROR_SUMMARY_MINVALUE';
|
|
141
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* Returns the summary validation key for required multilanguage-field errors.
|
|
279
|
+
*/
|
|
142
280
|
get ValidationErrorSummaryMultilanguageRequired() {
|
|
143
281
|
return 'VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIRED';
|
|
144
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Returns the summary validation key when any multilanguage value is required.
|
|
285
|
+
*/
|
|
145
286
|
get ValidationErrorSummaryMultilanguageRequiredAny() {
|
|
146
287
|
return 'VALIDATION_ERROR_SUMMARY_MULTILANGUAGEREQUIREDANY';
|
|
147
288
|
}
|
|
289
|
+
/**
|
|
290
|
+
* Returns the summary validation key for pattern-mismatch errors.
|
|
291
|
+
*/
|
|
148
292
|
get ValidationErrorSummaryPattern() {
|
|
149
293
|
return 'VALIDATION_ERROR_SUMMARY_PATTERN';
|
|
150
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Returns the summary validation key for required-field errors.
|
|
297
|
+
*/
|
|
151
298
|
get ValidationErrorSummaryRequired() {
|
|
152
299
|
return 'VALIDATION_ERROR_SUMMARY_REQUIRED';
|
|
153
300
|
}
|
|
@@ -156,4 +303,4 @@ SacDefaultValidationKeyService.ɵprov = i0.ɵɵdefineInjectable({ factory: funct
|
|
|
156
303
|
SacDefaultValidationKeyService.decorators = [
|
|
157
304
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
158
305
|
];
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FjLXZhbGlkYXRpb25rZXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9zaW1wbGVhbmd1bGFyY29udHJvbHMvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3NhYy12YWxpZGF0aW9ua2V5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNELG9CQUFvQjtBQUVwQjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUEyQix5QkFBeUIsQ0FBQyxDQUFDO0FBRWhILHVCQUF1QjtBQUV2QiwyQkFBMkI7QUFHM0IsTUFBTSxPQUFPLDhCQUE4QjtJQUN2QyxxQ0FBcUM7SUFFckMsSUFBVyxzQkFBc0I7UUFDN0IsT0FBTyxtQkFBbUIsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyx1QkFBdUI7UUFDOUIsT0FBTyxvQkFBb0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyx1QkFBdUI7UUFDOUIsT0FBTyxvQkFBb0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVywwQkFBMEI7UUFDakMsT0FBTyx1QkFBdUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyx3QkFBd0I7UUFDL0IsT0FBTyxxQkFBcUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyx1QkFBdUI7UUFDOUIsT0FBTyxvQkFBb0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxnQ0FBZ0M7UUFDdkMsT0FBTyxnQ0FBZ0MsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBVyxrQ0FBa0M7UUFDekMsT0FBTyxrQ0FBa0MsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBVyx1QkFBdUI7UUFDOUIsT0FBTyx1QkFBdUIs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QUM1RCxDQUFDO0lBRUQsSUFBVyw4Q0FBOEM7UUFDckQsT0FBTyxtREFBbUQsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBVyw2QkFBNkI7UUFDcEMsT0FBTyxrQ0FBa0MsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBVyw4QkFBOEI7UUFDckMsT0FBTyxtQ0FBbUMsQ0FBQztJQUMvQyxDQUFDOzs7O1lBL0xKLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNWYWxpZGF0aW9uS2V5U2VydmljZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyAjcmVnaW9uIFZhcmlhYmxlc1xuXG4vKipcbiAqIGluamVjdGlvbiB0b2tlbiBmb3IgbG9jYWxpc2F0aW9uIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNvbnN0IFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJU2FjVmFsaWRhdGlvbktleVNlcnZpY2U+KCdTYWNWYWxpZGF0aW9ua2V5U2VydmljZScpO1xuXG4vLyAjZW5kcmVnaW9uIFZhcmlhYmxlc1xuXG4vLyAjcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UgaW1wbGVtZW50cyBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2Uge1xuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIHB1YmxpYyBnZXQgQ29uZmlybURlZmF1bHRCdXR0b25ObygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ0NPTkZJUk1fQlVUVE9OX05PJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IENvbmZpcm1EZWZhdWx0QnV0dG9uWWVzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnQ09ORklSTV9CVVRUT05fWUVTJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IEZpbGVicm93c2VyQnV0dG9uRGVsZXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnRklMRUJST1dTRVJfREVMRVRFJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IEZpbGVicm93c2VyQnV0dG9uTmV3Rm9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnRklMRUJST1dTRVJfTkVXRk9MREVSJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IEZpbGVicm93c2VyQnV0dG9uUmVmcmVzaCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ0ZJTEVCUk9XU0VSX1JFRlJFU0gnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgRmlsZWJyb3dzZXJCdXR0b25VcGxvYWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdGSUxFQlJPV1NFUl9VUExPQUQnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgRmlsZWJyb3dzZXJDb25maXJtVGV4dERlbGV0ZUZpbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdGSUxFQlJPV1NFUl9DT05GSVJNX0RFTEVURUZJTEUnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgRmlsZWJyb3dzZXJDb25maXJtVGV4dERlbGV0ZUZvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ0ZJTEVCUk9XU0VSX0NPTkZJUk1fREVMRVRFRk9MREVSJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IEZpbGVicm93c2VyR3JpZEZpbGVuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnRklMRUJST1dTRVJfR1JJRF9GSUxFJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IEZpbGVicm93c2VyR3JpZE5vRmlsZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdGSUxFQlJPV1NFUl9OT19GSUxFUyc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBGaWxlYnJvd3NlckdyaWRTaXplKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnRklMRUJST1dTRVJfR1JJRF9TSVpFJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFBhZ2luZ0VudHJpZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdQQUdJTkdfUEFHRUVOVFJJRVNURVhUJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFBhZ2luZ1BhZ2VPZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1BBR0lOR19QQUdFT0ZURVhUJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFRpbnlNY2VGaWxlc2VsZWN0Q2FuY2VsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVElOWU1DRV9GSUxFU0VMRUNUX0NBTkNFTCc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBUaW55TWNlRmlsZXNlbGVjdERpYWxvZ3RpdGxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVElOWU1DRV9GSUxFU0VMRUNUX0RJQUxPR1RJVExFJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFRpbnlNY2VGaWxlc2VsZWN0T2soKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdUSU5ZTUNFX0ZJTEVTRUxFQ1RfT0snO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVXBsb2FkQnV0dG9uQnJvd3NlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVVBMT0FEX0JVVFRPTl9CUk9XU0UnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVXBsb2FkQnV0dG9uVXBsb2FkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVVBMT0FEX0JVVFRPTl9VUExPQUQnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVXBsb2FkTm9GaWxlc1NlbGVjdGVkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVVBMT0FEX05PX0ZJTEVfU0VMRUNURUQnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yRGF0ZXRpbWVGb3JtYXQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX0RBVEVUSU1FRk9STUFUJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvckVtYWlsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9FTUFJTCc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JGaWxlc01pbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfRklMRVNNSU4nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yTWF4RGF0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfTUFYREFURSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JNYXhUaW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9NQVhUSU1FJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvck1heFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9NQVhWQUxVRSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JNaW5EYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9NSU5EQVRFJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvck1pblRleHRMZW5ndGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX01JTlRFWFRMRU5HVEgnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yTWluVGltZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfTUlOVElNRSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JNaW5WYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfTUlOVkFMVUUnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yTXVsdGlsYW5ndWFnZVJlcXVpcmVkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9NVUxUSUxBTkdVQUdFUkVRVUlSRUQnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yTXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9NVUxUSUxBTkdVQUdFUkVRVUlSRURBTlknO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yUGF0dGVybigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfUEFUVEVSTic7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJpYyBNZXNzYWdlc1xuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1JFUVVJUkVEJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlEYXRldGltZUZvcm1hdCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9EQVRFVElNRUZPUk1BVCc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RW1haWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfRU1BSUwnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yU3VtbWFyeUZpbGVzTWluKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX0ZJTEVTTUlOJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlNYXhEYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWERBVEUnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yU3VtbWFyeU1heFRpbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVElNRSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUFYVkFMVUUnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yU3VtbWFyeU1pbkRhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOREFURSc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWluVGV4dExlbmd0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NSU5URVhUTEVOR1RIJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlNaW5UaW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlRJTUUnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yU3VtbWFyeU1pblZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlZBTFVFJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlNdWx0aWxhbmd1YWdlUmVxdWlyZWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTVVMVElMQU5HVUFHRVJFUVVJUkVEJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlNdWx0aWxhbmd1YWdlUmVxdWlyZWRBbnkoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTVVMVElMQU5HVUFHRVJFUVVJUkVEQU5ZJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlQYXR0ZXJuKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1BBVFRFUk4nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX1JFUVVJUkVEJztcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG59XG5cbi8vICNlbmRyZWdpb24gRXhwb3J0ZWQgQ2xhc3Nlc1xuIl19
|
|
306
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FjLXZhbGlkYXRpb25rZXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9zaW1wbGVhbmd1bGFyY29udHJvbHMvc2ltcGxlYW5ndWxhcmNvbnRyb2xzL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3NhYy12YWxpZGF0aW9ua2V5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNELG9CQUFvQjtBQUVwQjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUEyQix5QkFBeUIsQ0FBQyxDQUFDO0FBRWhILHVCQUF1QjtBQUV2QiwyQkFBMkI7QUFFM0I7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sOEJBQThCO0lBQ3ZDLHFDQUFxQztJQUVyQzs7T0FFRztJQUNILElBQVcsc0JBQXNCO1FBQzdCLE9BQU8sbUJBQW1CLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyx1QkFBdUI7UUFDOUIsT0FBTyxvQkFBb0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLHVCQUF1QjtRQUM5QixPQUFPLG9CQUFvQixDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsMEJBQTBCO1FBQ2pDLE9BQU8sdUJBQXVCLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyx3QkFBd0I7UUFDL0IsT0FBTyxxQkFBcUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLHVCQUF1QjtRQUM5QixPQUFPLG9CQUFvQixDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsZ0NBQWdDO1FBQ3ZDLE9BQU8sZ0NBQWdDLENBQUM7SUFDNUMs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O0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsNkJBQTZCO1FBQ3BDLE9BQU8sa0NBQWtDLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyw2QkFBNkI7UUFDcEMsT0FBTyxrQ0FBa0MsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLDhCQUE4QjtRQUNyQyxPQUFPLG1DQUFtQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsNkJBQTZCO1FBQ3BDLE9BQU8sa0NBQWtDLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxtQ0FBbUM7UUFDMUMsT0FBTyx3Q0FBd0MsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLDZCQUE2QjtRQUNwQyxPQUFPLGtDQUFrQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsOEJBQThCO1FBQ3JDLE9BQU8sbUNBQW1DLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVywyQ0FBMkM7UUFDbEQsT0FBTyxnREFBZ0QsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLDhDQUE4QztRQUNyRCxPQUFPLG1EQUFtRCxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsNkJBQTZCO1FBQ3BDLE9BQU8sa0NBQWtDLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyw4QkFBOEI7UUFDckMsT0FBTyxtQ0FBbUMsQ0FBQztJQUMvQyxDQUFDOzs7O1lBNVVKLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0lTYWNWYWxpZGF0aW9uS2V5U2VydmljZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyAjcmVnaW9uIFZhcmlhYmxlc1xuXG4vKipcbiAqIGluamVjdGlvbiB0b2tlbiBmb3IgbG9jYWxpc2F0aW9uIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNvbnN0IFNBQ1ZBTElEQVRJT05LRVlfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJU2FjVmFsaWRhdGlvbktleVNlcnZpY2U+KCdTYWNWYWxpZGF0aW9ua2V5U2VydmljZScpO1xuXG4vLyAjZW5kcmVnaW9uIFZhcmlhYmxlc1xuXG4vLyAjcmVnaW9uIEV4cG9ydGVkIENsYXNzZXNcblxuLyoqXG4gKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciB2YWxpZGF0aW9uIGtleSByZXNvbHV0aW9uLlxuICpcbiAqIFByb3ZpZGVzIHByZWRlZmluZWQgcmVzb3VyY2Uga2V5cyBmb3IgbWFueSBzdGFuZGFyZCB2YWxpZGF0aW9uIG1lc3NhZ2VzIGFuZFxuICogYWN0aW9uIGxhYmVscyB1c2VkIHRocm91Z2hvdXQgdGhlIGNvbnRyb2wgbGlicmFyeS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTYWNEZWZhdWx0VmFsaWRhdGlvbktleVNlcnZpY2UgaW1wbGVtZW50cyBJU2FjVmFsaWRhdGlvbktleVNlcnZpY2Uge1xuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbGlkYXRpb24ga2V5IGZvciB0aGUgZGVmYXVsdCBuZWdhdGl2ZSBjb25maXJtIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IENvbmZpcm1EZWZhdWx0QnV0dG9uTm8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdDT05GSVJNX0JVVFRPTl9OTyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgZm9yIHRoZSBkZWZhdWx0IHBvc2l0aXZlIGNvbmZpcm0gYnV0dG9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgQ29uZmlybURlZmF1bHRCdXR0b25ZZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdDT05GSVJNX0JVVFRPTl9ZRVMnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbGlkYXRpb24ga2V5IGZvciB0aGUgYnJvd3NlciBkZWxldGUgYnV0dG9uIHRleHQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBGaWxlYnJvd3NlckJ1dHRvbkRlbGV0ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ0ZJTEVCUk9XU0VSX0RFTEVURSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgZm9yIHRoZSBicm93c2VyIG5ldyBmb2xkZXIgYnV0dG9uIHRleHQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBGaWxlYnJvd3NlckJ1dHRvbk5ld0ZvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ0ZJTEVCUk9XU0VSX05FV0ZPTERFUic7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgZm9yIHRoZSBicm93c2VyIHJlZnJlc2ggYnV0dG9uIHRleHQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBGaWxlYnJvd3NlckJ1dHRvblJlZnJlc2goKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdGSUxFQlJPV1NFUl9SRUZSRVNIJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgdGhlIGJyb3dzZXIgdXBsb2FkIGJ1dHRvbiB0ZXh0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgRmlsZWJyb3dzZXJCdXR0b25VcGxvYWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdGSUxFQlJPV1NFUl9VUExPQUQnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbGlkYXRpb24ga2V5IGZvciB0aGUgZGVsZXRlLWZpbGUgY29uZmlybWF0aW9uIHRleHQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBGaWxlYnJvd3NlckNvbmZpcm1UZXh0RGVsZXRlRmlsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ0ZJTEVCUk9XU0VSX0NPTkZJUk1fREVMRVRFRklMRSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgZm9yIHRoZSBkZWxldGUtZm9sZGVyIGNvbmZpcm1hdGlvbiB0ZXh0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgRmlsZWJyb3dzZXJDb25maXJtVGV4dERlbGV0ZUZvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ0ZJTEVCUk9XU0VSX0NPTkZJUk1fREVMRVRFRk9MREVSJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgdGhlIGJyb3dzZXIgZmlsZS1uYW1lIGNvbHVtbiB0aXRsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEZpbGVicm93c2VyR3JpZEZpbGVuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnRklMRUJST1dTRVJfR1JJRF9GSUxFJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSB1c2VkIHdoZW4gbm8gZmlsZXMgYXJlIGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IEZpbGVicm93c2VyR3JpZE5vRmlsZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdGSUxFQlJPV1NFUl9OT19GSUxFUyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgZm9yIHRoZSBicm93c2VyIGZpbGUtc2l6ZSBjb2x1bW4gdGl0bGUuXG4gICAgICovXG4gICAgcHVibGljIGdldCBGaWxlYnJvd3NlckdyaWRTaXplKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnRklMRUJST1dTRVJfR1JJRF9TSVpFJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgdGhlIHBhZ2luZyBwYWdlLXNpemUgdGV4dC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFBhZ2luZ0VudHJpZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdQQUdJTkdfUEFHRUVOVFJJRVNURVhUJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgdGhlIHBhZ2luZyBjdXJyZW50LXBhZ2UgdGV4dC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFBhZ2luZ1BhZ2VPZigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1BBR0lOR19QQUdFT0ZURVhUJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgdGhlIFRpbnlNQ0UgZmlsZS1zZWxlY3QgY2FuY2VsIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFRpbnlNY2VGaWxlc2VsZWN0Q2FuY2VsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVElOWU1DRV9GSUxFU0VMRUNUX0NBTkNFTCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgZm9yIHRoZSBUaW55TUNFIGZpbGUtc2VsZWN0IGRpYWxvZyB0aXRsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFRpbnlNY2VGaWxlc2VsZWN0RGlhbG9ndGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdUSU5ZTUNFX0ZJTEVTRUxFQ1RfRElBTE9HVElUTEUnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbGlkYXRpb24ga2V5IGZvciB0aGUgVGlueU1DRSBmaWxlLXNlbGVjdCBjb25maXJtIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFRpbnlNY2VGaWxlc2VsZWN0T2soKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdUSU5ZTUNFX0ZJTEVTRUxFQ1RfT0snO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbGlkYXRpb24ga2V5IGZvciB0aGUgdXBsb2FkIGJyb3dzZSBidXR0b24gdGV4dC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFVwbG9hZEJ1dHRvbkJyb3dzZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1VQTE9BRF9CVVRUT05fQlJPV1NFJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgdGhlIHVwbG9hZCBhY3Rpb24gYnV0dG9uIHRleHQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBVcGxvYWRCdXR0b25VcGxvYWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdVUExPQURfQlVUVE9OX1VQTE9BRCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgdXNlZCB3aGVuIG5vIGZpbGUgaXMgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBVcGxvYWROb0ZpbGVzU2VsZWN0ZWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdVUExPQURfTk9fRklMRV9TRUxFQ1RFRCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgZm9yIGRhdGUtdGltZSBmb3JtYXQgZXJyb3JzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yRGF0ZXRpbWVGb3JtYXQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX0RBVEVUSU1FRk9STUFUJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgZW1haWwgdmFsaWRhdGlvbiBlcnJvcnMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JFbWFpbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfRU1BSUwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbGlkYXRpb24ga2V5IGZvciBtaW5pbXVtLWZpbGUtY291bnQgZXJyb3JzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yRmlsZXNNaW4oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX0ZJTEVTTUlOJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgbWF4aW11bS1kYXRlIGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvck1heERhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX01BWERBVEUnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbGlkYXRpb24ga2V5IGZvciBtYXhpbXVtLXRpbWUgZXJyb3JzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yTWF4VGltZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfTUFYVElNRSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgZm9yIG1heGltdW0tdmFsdWUgZXJyb3JzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yTWF4VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX01BWFZBTFVFJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgbWluaW11bS1kYXRlIGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvck1pbkRhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX01JTkRBVEUnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbGlkYXRpb24ga2V5IGZvciBtaW5pbXVtLXRleHQtbGVuZ3RoIGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvck1pblRleHRMZW5ndGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX01JTlRFWFRMRU5HVEgnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZhbGlkYXRpb24ga2V5IGZvciBtaW5pbXVtLXRpbWUgZXJyb3JzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yTWluVGltZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfTUlOVElNRSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgZm9yIG1pbmltdW0tdmFsdWUgZXJyb3JzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yTWluVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX01JTlZBTFVFJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgcmVxdWlyZWQgbXVsdGlsYW5ndWFnZSBmaWVsZHMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JNdWx0aWxhbmd1YWdlUmVxdWlyZWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX01VTFRJTEFOR1VBR0VSRVFVSVJFRCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgd2hlbiBhdCBsZWFzdCBvbmUgbXVsdGlsYW5ndWFnZSB2YWx1ZSBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvck11bHRpbGFuZ3VhZ2VSZXF1aXJlZEFueSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfTVVMVElMQU5HVUFHRVJFUVVJUkVEQU5ZJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0aW9uIGtleSBmb3IgcGF0dGVybi1taXNtYXRjaCBlcnJvcnMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JQYXR0ZXJuKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9QQVRURVJOJztcbiAgICB9XG5cbiAgICAvLyBHZW5lcmljIE1lc3NhZ2VzXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdmFsaWRhdGlvbiBrZXkgZm9yIHJlcXVpcmVkLWZpZWxkIGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclJlcXVpcmVkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9SRVFVSVJFRCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3VtbWFyeSB2YWxpZGF0aW9uIGtleSBmb3IgZGF0ZS10aW1lIGZvcm1hdCBlcnJvcnMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RGF0ZXRpbWVGb3JtYXQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfREFURVRJTUVGT1JNQVQnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN1bW1hcnkgdmFsaWRhdGlvbiBrZXkgZm9yIGVtYWlsIGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlFbWFpbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9FTUFJTCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3VtbWFyeSB2YWxpZGF0aW9uIGtleSBmb3IgbWluaW11bS1maWxlLWNvdW50IGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlGaWxlc01pbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9GSUxFU01JTic7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3VtbWFyeSB2YWxpZGF0aW9uIGtleSBmb3IgbWF4aW11bS1kYXRlIGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlNYXhEYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01BWERBVEUnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN1bW1hcnkgdmFsaWRhdGlvbiBrZXkgZm9yIG1heGltdW0tdGltZSBlcnJvcnMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4VGltZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhUSU1FJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdW1tYXJ5IHZhbGlkYXRpb24ga2V5IGZvciBtYXhpbXVtLXZhbHVlIGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlNYXhWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9NQVhWQUxVRSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3VtbWFyeSB2YWxpZGF0aW9uIGtleSBmb3IgbWluaW11bS1kYXRlIGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlNaW5EYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTkRBVEUnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN1bW1hcnkgdmFsaWRhdGlvbiBrZXkgZm9yIG1pbmltdW0tdGV4dC1sZW5ndGggZXJyb3JzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yU3VtbWFyeU1pblRleHRMZW5ndGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTUlOVEVYVExFTkdUSCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3VtbWFyeSB2YWxpZGF0aW9uIGtleSBmb3IgbWluaW11bS10aW1lIGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlNaW5UaW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlRJTUUnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN1bW1hcnkgdmFsaWRhdGlvbiBrZXkgZm9yIG1pbmltdW0tdmFsdWUgZXJyb3JzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgVmFsaWRhdGlvbkVycm9yU3VtbWFyeU1pblZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01JTlZBTFVFJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdW1tYXJ5IHZhbGlkYXRpb24ga2V5IGZvciByZXF1aXJlZCBtdWx0aWxhbmd1YWdlLWZpZWxkIGVycm9ycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IFZhbGlkYXRpb25FcnJvclN1bW1hcnlNdWx0aWxhbmd1YWdlUmVxdWlyZWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfTVVMVElMQU5HVUFHRVJFUVVJUkVEJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdW1tYXJ5IHZhbGlkYXRpb24ga2V5IHdoZW4gYW55IG11bHRpbGFuZ3VhZ2UgdmFsdWUgaXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TXVsdGlsYW5ndWFnZVJlcXVpcmVkQW55KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnVkFMSURBVElPTl9FUlJPUl9TVU1NQVJZX01VTFRJTEFOR1VBR0VSRVFVSVJFREFOWSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc3VtbWFyeSB2YWxpZGF0aW9uIGtleSBmb3IgcGF0dGVybi1taXNtYXRjaCBlcnJvcnMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UGF0dGVybigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ1ZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9QQVRURVJOJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdW1tYXJ5IHZhbGlkYXRpb24ga2V5IGZvciByZXF1aXJlZC1maWVsZCBlcnJvcnMuXG4gICAgICovXG4gICAgcHVibGljIGdldCBWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfUkVRVUlSRUQnO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcbn1cblxuLy8gI2VuZHJlZ2lvbiBFeHBvcnRlZCBDbGFzc2VzXG4iXX0=
|