ng-inail-common 3.0.0-beta.13 → 3.0.0-beta.14

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.
@@ -148,8 +148,7 @@ export class InailLayoutComponent extends BaseComponent {
148
148
  this.caricamentoRisorseEsterneTerminato = true;
149
149
  }
150
150
  // Inizializzazione script esterni
151
- if (this.config?.caricamentoDinamicoScriptEsterni === true
152
- && this.externalScripts?.length) {
151
+ if (this.config?.caricamentoDinamicoScriptEsterni === true) {
153
152
  let defaultExternalScripts;
154
153
  if (this.externalScripts == undefined) {
155
154
  defaultExternalScripts = getWebkitExternalScripts(this.libConfig.webkitVersion);
@@ -647,4 +646,4 @@ export const setFocusOnFeedback = (id, scrollToFeedback, ms) => {
647
646
  }
648
647
  }, ms || 100);
649
648
  };
650
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5haWwtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9sYXlvdXQvaW5haWwtbGF5b3V0L2luYWlsLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbGF5b3V0L2luYWlsLWxheW91dC9pbmFpbC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQU9MLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLGFBQWEsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxhQUFhLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RJLE9BQU8sRUFBQywwQkFBMEIsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBR3hGLE9BQU8sRUFBYyxhQUFhLEVBQVcsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxF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QUMsQ0FBQzthQUNsRDtTQUNGO0lBQ0gsQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtIZWFkZXJDb25maWd1cmF0aW9uc30gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0Jhc2VDb21wb25lbnQsIENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1l9IGZyb20gJy4uLy4uL2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7aXNBYnNvbHV0ZSwgaXNIaWRkZW4sIGlzTm90QmxhbmtPck51bGwsIHNjcm9sbFRvRWxlbWVudCwgc2Nyb2xsVG9wLCBzdGFydFdpdGhTbGFzaH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvY29tbW9uLm9wZXJhdG9ycyc7XG5pbXBvcnQge2dldFdlYmtpdEV4dGVybmFsUmVzb3VyY2VzLCBnZXRXZWJraXRFeHRlcm5hbFNjcmlwdHN9IGZyb20gJy4vd2Via2l0LXJlc291cmNlcyc7XG5pbXBvcnQge0V4dGVybmFsUmVzb3VyY2UsIEV4dGVybmFsU2NyaXB0fSBmcm9tICcuL3N0YXRpYy1yZXNvdXJjZXMnO1xuaW1wb3J0IHtBcHBQYWdlfSBmcm9tICcuLi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50JztcbmltcG9ydCB7R2V0U3RyaW5nRm4sIE1lbnVDb21wb25lbnQsIE1lbnVJdGVtfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VSUk9SX0JUTl9DTEFTU30gZnJvbSAnLi4vLi4vdXgvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtpc0Z1bmN0aW9ufSBmcm9tICdyeGpzL2ludGVybmFsL3V0aWwvaXNGdW5jdGlvbic7XG5pbXBvcnQge2xhc3RWYWx1ZUZyb20sIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBR1dSZXF1ZXN0LCBBZ3dSZXN0U2VydmljZSwgQ2hlY2tzZXNzaW9uUmVzcG9uc2UsIEdsb2JhbENvbmZpZ1Jlc3BvbnNlLCBIRlJlc3BvbnNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9hZ3ctcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7SGVhZGVyU2Vjb25kYXJpb0RhdGF9IGZyb20gJy4uL2hlYWRlci1zZWNvbmRhcmlvL2hlYWRlci1zZWNvbmRhcmlvLmNvbXBvbmVudCc7XG5pbXBvcnQge05HX0lOQUlMX0NPTU1PTl9DT05GSUcsIE5nSW5haWxDb21tb25Db25maWd9IGZyb20gXCIuLi8uLi8uLi8uLi9uZy1pbmFpbC1jb21tb24uY29uZmlnXCI7XG5cbnR5cGUgUmVzb3VyY2VUeXBlID0gJ3NjcmlwdCcgfCAnbGluayc7XG5cbmludGVyZmFjZSBMb2FkZWRSZXNvdXJjZSB7XG5cbiAgbG9hZGVkOiBib29sZWFuLFxuICByZXNvdXJjZTogRXh0ZXJuYWxSZXNvdXJjZSB8IEV4dGVybmFsU2NyaXB0XG59XG5cbmludGVyZmFjZSBMb2FkZWRSZXNvdXJjZVJlc3BvbnNlIHtcblxuICByZXNvdXJjZTogc3RyaW5nXG4gIGxvYWRlZDogYm9vbGVhbixcbiAgc3RhdHVzOiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gU2V0Rm9jdXNTdHJhdGVneSB7XG5cbiAgLyoqLlxuICAgKiBJbmRpY2EgY2hlIGlsIGZvY3VzIGRvdnJhJyBlc3NlcmUgaW1wb3N0YXRvIHN1bCBmZWVkYmFjayBnbG9iYWxlLlxuICAgKi9cbiAgT25HbG9iYWxGZWVkYmFjayA9IDAsXG5cbiAgLyoqXG4gICAqIEluZGljYSBjaGUgaWwgZm9jdXMgZG92cmEnIGVzc2VyZSBpbXBvc3RhdG8gc3VsIHByaW1vIGVsZW1lbnRvIGluIHBhZ2luYSBhbmRhdG8gaW4gZXJyb3JlLlxuICAgKi9cbiAgT25GaXJzdFBhZ2VFcnJvciA9IDFcbn1cblxuZXhwb3J0IGNsYXNzIEluYWlsTGF5b3V0Q29uZmlndXJhdGlvbnMge1xuXG4gIC8qKlxuICAgKiBJbmRpY2EgaWwgbm9tZSBkZWxsJ2FwcGxpY2F6aW9uZS5cbiAgICovXG4gIGFwcE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpY2F0aXZvIGRlbGwnYXBwbGljYXppb25lIGNvcnJlbnRlIGluIGFjY29yZG9cbiAgICogY29uIGwnQUdXLlxuICAgKi9cbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlIHRydWUgaW1wb3N0YSBhdXRvbWF0aWNhbWVudGUgaWwgZm9jdXMgc3VsIHByaW1vIGVsZW1lbnRvXG4gICAqIGRpIGlucHV0IGFuZGF0byBpbiBlcnJvcmUuXG4gICAqL1xuICBmb2N1c09uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZSB0cnVlIGVmZmV0dHVhIHVubyBzY3JvbGxpbmcgYWxsJ2VsZW1lbnRvXG4gICAqIGFuZGF0byBpbiBlcnJvcmUgcHJpbWEgZGkgaW1wb3N0YXJlIGlsIGZvY3VzLlxuICAgKi9cbiAgc2Nyb2xsVG9FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluYSBzdSBxdWFsZSBlbGVtZW50byBpbXBvc3RhcmUgaWwgZm9jdXMgYWwgdmVyaWZpY2Fyc2lcbiAgICogZGkgdW4gZXJyb3JlLlxuICAgKi9cbiAgc2V0Rm9jdXNTdHJhdGVneT86IFNldEZvY3VzU3RyYXRlZ3kgPSBTZXRGb2N1c1N0cmF0ZWd5Lk9uR2xvYmFsRmVlZGJhY2s7XG5cbiAgLyoqXG4gICAqIFNlIHRydWUgYWxsYSBmaW5lIGRpIHVuIGV2ZW50byBkaSByb3V0aW5nIGVmZmV0dHVhIHVubyBzY3JvbGwgaW4gY2ltYSBhbGxhIHBhZ2luYS5cbiAgICovXG4gIHNjcm9sbFRvcEF0TmF2aWdhdGlvbkVuZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNlIHRydWUgcGVybWV0dGUgYWwgbGF5b3V0IGRpIG9jY3VwYXJlIGwnaW50ZXJhIGxhcmdoZXp6YSBkZWxsbyBzY2hlcm1vXG4gICAqL1xuICBjb250YWluZXJXaWRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2UgdHJ1ZSBhYmlsaXRhIGlsIGNhcmljYW1lbnRvIGF1dG9tYXRpY28gZGVsbGUgcmlzb3JzZSBlc3Rlcm5lIGRhbGxhIGNkbiBJTkFJTC5cbiAgICogVmVuZ29ubyBjcmVhdGkgZSBpbmlldHRhdGkgbmVsIHRhZyA8aGVhZD4gaSB0YWcgPGxpbms+XG4gICAqIGluZXJlbnRpIGxlIHJpc29yc2UgZXN0ZXJuZSBuZWNlc3NhcmllIGFsbGFcbiAgICogY29ycmV0dGEgdmlzdWFsaXp6YXppb25lIGRlbGwnYXBwbGljYXppb25lLlxuICAgKiBTZSBub24gcGFzc2F0ZSBpbiBpbnB1dCBhbCBjb21wb25lbnRlIHRyYW1pdGUgbGEgcHJvcHJpZXRhJyAnZXh0ZXJuYWxSZXNvdXJjZXMnXG4gICAqIHZlbmdvbm8gY2FyaWNhdGUgbGUgcmlzb3JzZSBkaSBkZWZhdWx0LlxuICAgKiBMZSByaXNvcnNlIGRpIGRlZmF1bHQgdmVuZ29ubyByZWN1cGVyYXRlIGRhbCBkb21pbmlvXG4gICAqIHNwZWNpZmljYXRvIHRyYW1pdGUgbGEgcHJvcHJpZXRhJyAnY2RuRW5kcG9pbnQnLlxuICAgKi9cbiAgY2FyaWNhbWVudG9EaW5hbWljb1Jpc29yc2VFc3Rlcm5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2UgdHJ1ZSBhYmlsaXRhIGlsIGNhcmljYW1lbnRvIGF1dG9tYXRpY28gZGVnbGkgc2NyaXB0IGVzdGVybmUgZGFsbGEgY2RuIElOQUlMLlxuICAgKiBWZW5nb25vIGNyZWF0aSBlIGluaWV0dGF0aSBuZWwgdGFnIDxoZWFkPiBpIHRhZyA8c2NyaXB0PlxuICAgKiBpbmVyZW50aSBnbGkgc2NyaXB0IG5lY2Vzc2FyaSBhbGxhXG4gICAqIGNvcnJldHRhIHZpc3VhbGl6emF6aW9uZSBkZWxsJ2FwcGxpY2F6aW9uZS5cbiAgICogU2Ugbm9uIHBhc3NhdGkgaW4gaW5wdXQgYWwgY29tcG9uZW50ZSB0cmFtaXRlIGxhIHByb3ByaWV0YScgJ2V4dGVybmFsU2NyaXB0cydcbiAgICogdmVuZ29ubyBjYXJpY2F0ZSBnbGkgc2NyaXB0IGRpIGRlZmF1bHQuXG4gICAqIEdsaSBzY3JpcHQgZGkgZGVmYXVsdCB2ZW5nb25vIHJlY3VwZXJhdGkgZGFsIGRvbWluaW9cbiAgICogc3BlY2lmaWNhdG8gdHJhbWl0ZSBsYSBwcm9wcmlldGEnICdjZG5FbmRwb2ludCcuXG4gICAqL1xuICBjYXJpY2FtZW50b0RpbmFtaWNvU2NyaXB0RXN0ZXJuaT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuZHBvaW50IGRlbGxhIGNkbi5cbiAgICogKGUuZy4gaHR0cHM6Ly9jZG5jb2xsLmluYWlsY2xvdWQuaXQpXG4gICAqIFNlIG5vbiBzcGVjaWZpY2F0byBlIHNlIGlsIHZhbG9yZSBkZWxsYSBwcm9wcmlldGEnICdyZWN1cGVyb0F1dG9tYXRpY29DZG5FbmRwb2ludCcgZScgdHJ1ZVxuICAgKiB2aWVuZSByZWN1cGVyYXRvIGF1dG9tYXRpY2FtZW50ZSBjb250YXR0YW5kbyBpbCBzZXJ2aXppbyAnL2FwaS9nbG9iYWwtY29uZmlnJyBlc3Bvc3RvIGRhIEFHVyxcbiAgICogYWx0cmltZW50aSB2aWVuZSB1dGlsaXp6YXRvIGkgZG9taW5vIGNvcnJlbnRlLlxuICAgKi9cbiAgY2RuRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlY3VwZXJhIGF1dG9tYXRpY2FtZW50ZSBsJ2VuZHBvaW50IGRlbGxhIGNkbi5cbiAgICogTCdlbmRwb2ludCB2aWVuZSByZWN1cGVyYXRvIGNvbnRhdHRhbmRvIGwnQUdXIGFsbCdpbmRpcml6em9cbiAgICogJy9hcGkvZ2xvYmFsLWNvbmZpZycuXG4gICAqIElsIHJlY3VwZXJvIGRlbGwnZW5kcG9pbnQgbm9uIHZpZW5lIGVmZmV0dHVhdG8gc2UgZScgc3RhdGFcbiAgICogaW1wb3N0YXRhIGxhIHByb3ByaWV0YScgZGkgY29uZmlndXJhemlvbmUgJ2NkbkVuZHBvaW50Jy5cbiAgICogTCdhcGkgZ2F0ZXdheSB2aWVuZSBjb250YXR0YXRvIHByZW5kZW5kbyBpbiBjb25zaWRlcmF6aW9uZVxuICAgKiBxdWFudG8gc3BlY2lmaWNhdG8gdHJhbWl0ZSBsYSBwcm9wcmlldGEnIGRpIGNvbmZpZ3VyYXppb25lXG4gICAqIGFwaUdhdGV3YXlVcmwuXG4gICAqICovXG4gIHJlY3VwZXJvQXV0b21hdGljb0NkbkVuZHBvaW50PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGVtcG8gZGkgYXR0ZXNhIGluIG1pbGxpc2Vjb25kaVxuICAgKiBkZWwgY2FyaWNhbWVudG8gdHJhIGdsaSBzY3JpcHQuXG4gICAqIElsIHZhbG9yZSBkaSBkZWZhdWx0IGUnIDMwMC5cbiAgICovXG4gIHNjcmlwdExvYWRpbmdEZWVsYXk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNlIHRydWUgdmVuZ29ubyByZWN1cGVyYXRpIGF1dG9tYXRpY2FtZW50ZSBpIGZyYW1tZW50aSBodG1sIGRpIGxvZ28sIG5hdmlnYXppb25lIHByaW5jaXBhbGUsIGhlYWRlciBzZWNvbmRhcmlvIGUgZm9vdGVyLlxuICAgKiBJIGZyYW1tZW50aSBodG1sIHZlcnJhbm5vIHJlY3VwZXJhdGkgYWdsaSBpbmRpcml6emkgaW5kaWNhdGkgdHJhbWl0ZSBsZSBwcm9wcmlldGEnIGRpIGNvbmZpZ3VyYXppb25lIGxvZ29IZWFkZXJVcmwsIG5hdmlnYXppb25lUHJpbmNpcGFsZVVybFxuICAgKiBoZWFkZXJTZWNvbmRhcmlvVXJsIGUgZm9vdGVyVXJsLlxuICAgKiBTZSBnbGkgaW5kaXJpenppIG5vbiB2ZW5nb25vIGluZGljYXRpIGkgZnJhbW1lbnRpIGh0bWwgdmVycmFubm8gcmVjdXBlcmF0aSBhdXRvbWF0aWNhbWVudGUgZGFsIGNvbXBvbmVudGUgY29udGF0dGFuZG9cbiAgICogaSBzZXJ2aXppICdIZWFkZXJGb290ZXItTVNQdWJsaWNWZXJzaW9uJyBlICdIZWFkZXJGb290ZXItTVNQcml2YXRlVmVyc2lvbicgZXNwb3N0aSBzdSBBR1cuXG4gICAqIFNlIGZhbHNlIGkgZnJhbW1lbnRpIGh0bWwgZG92cmFubm8gZXNzZXJlIHBhc3NhdGkgaW4gaW5wdXQgYWwgY29tcG9uZW50ZSB0cmFtaXRlIGxlIHByb3ByaWV0YScgZGkgaW5wdXQgbG9nb0hlYWRlckh0bWwsXG4gICAqIG5hdmlnYXppb25lUHJpbmNpcGFsZUh0bWwsIGhlYWRlclNlY29uZGFyaW9IdG1sIGUgZm9vdGVySHRtbCBvIGluc2VyaXRpIG5lbCBjb250ZW50IGRlbCBjb21wb25lbnRlIGF0dHJhdmVyc28gZ2xpIGFwcG9zaXRpIHNlbGV0dG9yaSBkaSBjb250ZW51dG8uXG4gICAqL1xuICByZWN1cGVyb0F1dG9tYXRpY29IdG1sPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXJsIGRhIGN1aSByZWN1cGVyYXJlIGlsIGZyYW1tZW50byBodG1sIGRlbGxhIHByaW1hIGludGVzdGF6aW9uZSBkaSBwYWdpbmEgKHF1ZWxsYSBjb250ZW5lbnRlIGlsIGxvZ28pLlxuICAgKiBTZSBwYXNzYXRvIGluaWJpc2NlIGlsIG1lY2NhbmlzbW8gZGkgcmVjdXBlcm8gYXV0b21hdGljbyBkYSBBR1cuXG4gICAqIFNlIG5vbiBzcGVjaWZpY2F0byBpbCBmcmFtbWVudG8gaHRtbCB2ZXJyYScgcmVjdXBlcmF0byBhdXRvbWF0aWNhbWVudGUgZGFsIGNvbXBvbmVudGUgY29udGF0dGFuZG8gaWwgc2Vydml6aW8gJ0hlYWRlckZvb3Rlci1NU1B1YmxpY1ZlcnNpb24nLlxuICAgKiBOZWwgY2FzbyBpbiBjdWkgbm9uIHNpYSBwb3NzaWJpbGUgcmVjdXBlcmFyZSBpbCBmcmFtbWVudG8gbCdodG1sIHZlcnJhJyB2aXN1YWxpenphdG8gcXVlbGxvIGRpIGRlZmF1bHQuXG4gICAqL1xuICBsb2dvSGVhZGVyVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcmwgZGEgY3VpIHJlY3VwZXJhcmUgaWwgZnJhbW1lbnRvIGh0bWwgZGVsbGEgbmF2aWdhemlvbmUgcHJpbmNpcGFsZS5cbiAgICogU2UgcGFzc2F0byBpbmliaXNjZSBpbCBtZWNjYW5pc21vIGRpIHJlY3VwZXJvIGF1dG9tYXRpY28gZGEgQUdXLlxuICAgKiBTZSBub24gc3BlY2lmaWNhdG8gaWwgZnJhbW1lbnRvIGh0bWwgdmVycmEnIHJlY3VwZXJhdG8gYXV0b21hdGljYW1lbnRlIGRhbCBjb21wb25lbnRlIGNvbnRhdHRhbmRvIGkgc2Vydml6aSAnSGVhZGVyRm9vdGVyLU1TUHVibGljVmVyc2lvbidcbiAgICogZSAnSGVhZGVyRm9vdGVyLU1TUHJpdmF0ZVZlcnNpb24nLlxuICAgKiBOZWwgY2FzbyBpbiBjdWkgbm9uIHNpYSBwb3NzaWJpbGUgcmVjdXBlcmFyZSBpbCBmcmFtbWVudG8gaHRtbCB2ZXJyYScgdmlzdWFsaXp6YXRvIHF1ZWxsbyBkaSBkZWZhdWx0LlxuICAgKi9cbiAgbmF2aWdhemlvbmVQcmluY2lwYWxlVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcmwgZGEgY3VpIHJlY3VwZXJhcmUgaWwgZnJhbW1lbnRvIGh0bWwgZGVsIGhlYWRlciBzZWNvbmRhcmlvXG4gICAqIFNlIHBhc3NhdG8gaW5pYmlzY2UgaWwgbWVjY2FuaXNtbyBkaSByZWN1cGVybyBhdXRvbWF0aWNvIGRhIEFHVy5cbiAgICogU2Ugbm9uIHNwZWNpZmljYXRvIGlsIGZyYW1tZW50byBodG1sIHZlcnJhJyByZWN1cGVyYXRvIGF1dG9tYXRpY2FtZW50ZSBkYWwgY29tcG9uZW50ZSBjb250YXR0YW5kbyBpbCBzZXJ2aXppbyAnSGVhZGVyRm9vdGVyLU1TUHJpdmF0ZVZlcnNpb24nLlxuICAgKiBOZWwgY2FzbyBpbiBjdWkgbm9uIHNpYSBwb3NzaWJpbGUgcmVjdXBlcmFyZSBpbCBmcmFtbWVudG8gaHRtbCB2ZXJyYScgdmlzdWFsaXp6YXRvIHF1ZWxsbyBkaSBkZWZhdWx0LlxuICAgKi9cbiAgaGVhZGVyU2Vjb25kYXJpb1VybD86IHN0cmluZztcblxuICAvKipcbiAgICogVXJsIGRhIGN1aSByZWN1cGVyYXJlIGlsIGZyYW1tZW50byBodG1sIGRlbCBmb290ZXIuXG4gICAqIFNlIHBhc3NhdG8gaW5pYmlzY2UgaWwgbWVjY2FuaXNtbyBkaSByZWN1cGVybyBhdXRvbWF0aWNvIGRhIEFHVy5cbiAgICogU2Ugbm9uIHNwZWNpZmljYXRvIGlsIGZyYW1tZW50byBodG1sIHZlcnJhJyByZWN1cGVyYXRvIGF1dG9tYXRpY2FtZW50ZSBkYWwgY29tcG9uZW50ZSBjb250YXR0YW5kbyBpbCBzZXJ2aXppbyAnSGVhZGVyRm9vdGVyLU1TUHVibGljVmVyc2lvbicuXG4gICAqIE5lbCBjYXNvIGluIGN1aSBub24gc2lhIHBvc3NpYmlsZSByZWN1cGVyYXJlIGlsIGZyYW1tZW50byBsJ2h0bWwgdmVycmEnIHZpc3VhbGl6emF0byBxdWVsbG8gZGkgZGVmYXVsdC5cbiAgICovXG4gIGZvb3RlclVybD86IHN0cmluZztcblxuICAvKipcbiAgICogRm9yemEgaWwgY29tcG9uZW50ZSBhIHV0aWxpenphcmUgaSBmcmFtbWVudGkgaHRtbCBkaSBkZWZhdWx0IHBlciBoZWFkZXIgZSBmb290ZXIgc2UgcmVjdXBlcm9BdXRvbWF0aWNvSHRtbCBlJyBzdGF0YSB2YWxvcml6emF0YSBhIGZhbHNlLlxuICAgKiBJbiBxdWVzdG8gY2FzbywgcGVyIHZpc3VhbGl6emFyZSBpbCBmcmFtbWVudG8gaHRtbCBkaSBkZWZhdWx0IGluZXJlbnRlIGwnaGVhZGVyIHNlY29uZGFyaW8sXG4gICAqIHNhcmEnIG5lY2Vzc2FyaW8gdmFsb3JpenphcmUgbGEgcHJvcHJpZXRhJyBkaSBpbnB1dCAnaGVhZGVyU2Vjb25kYXJpb0RhdGEnLlxuICAgKiBWYWxvcml6emFyZSBvIG1lbm8gbGEgcHJvcHJpZXRhJyAnaGVhZGVyU2Vjb25kYXJpb0RhdGEnIGlub2x0cmUgZGV0ZXJtaW5lcmEnIHNlIHZpc3VhbGl6emFyZSBpbCBmcmFtbWVudG8gaHRtbCBkaSBkZWZhdWx0XG4gICAqIGRlbGxhIG5hdmlnYXppb25lIHByaW5jaXBhbGUgaW5lcmVudGUgbCd1dGVudGUgYXV0ZW50aWNhdG8gbyBxdWVsbG8gaW5lcmVudGUgbCd1dGVudGUgbm9uIGF1dGVudGljYXRvXG4gICAqIChJbiBjYXNvIGRpIHV0ZW50ZSBub24gYXV0ZW50aWNhdG8gaWwgbGF5b3V0IHByZXZpc3RvIHBlciBsZSBhcHBsaWNhemlvbmkgSU5BSUwgbm9uIG1vc3RyYSBsJ2hlYWRlciBzZWNvbmRhcmlvKS5cbiAgICovXG4gIHVzZURlZmF1bHRIdG1sPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXJsIGEgY3VpIGNvbnRhdHRhcmUgbCdBR1cgcGVyIGlsIHJlY3VwZXJvIGF1dG9tYXRpY28gZGVpIGZyYW1tZW50aSBodG1sLlxuICAgKiBQZXIgaWwgcmVjdXBlcm8gdmVycmFubm8gY29udGF0dGF0aSBpIHNlcnZpemkgJ0hlYWRlckZvb3Rlci1NU1B1YmxpY1ZlcnNpb24nIGUgJ0hlYWRlckZvb3Rlci1NU1ByaXZhdGVWZXJzaW9uJy5cbiAgICogU2Ugbm9uIHNwZWNpZmljYXRvIHZlcnJhJyB1dGlsaXp6YXRvIGwnaW5kaXJpenpvIHJlbGF0aXZvIC9hcGkuXG4gICAqL1xuICBhcGlHYXRld2F5VXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIElsIGNvbXBvbmVudGUgcmVuZGVyaXp6YSBsJ2ludGVybyBsYXlvdXQgZGVsbCdhcHBsaWNhemlvbmUuXG4gKlxuICogQ29tcHJlbmRlIGdsaSBlbGVtZW50aSBjb211bmkgYSB0dXR0ZSBsZSBhcHBsaWNhemlvbmkgSU5BSUw6XG4gKiBIZWFkZXIsIGZvb3Rlciwgc3BhemlvIHBlciBicmVhZGNydW1iIGUgbWVudSBsYXRlcmFsZS5cbiAqXG4gKiBJbCBjb21wb25lbnRlIGltcGxlbWVudGEgYXV0b25vbWFtZW50ZSBpbCBtZWNjYW5pc21vIHBlciByZW5kZXJlIHJlc3BvbnNpdmUgbCdhcHBsaWNhemlvbmUsXG4gKiBzZWNvbmRvIHF1YW50byByaWNoaWVzdG8gbmVsbGUgbGluZWUgZ3VpZGEgSU5BSUwuXG4gKlxuICogRScgcG9zc2liaWxlIGluaWV0dGFyZSBuZWwgbGF5b3V0IHJlbmRlcml6emF0byBpbCBjb250ZW51dG8gcHJpbmNpcGFsZSBkZWxsZSBwYWdpbmUsXG4gKiBpbCBicmVhZGNydW1iLCBpbCBtZW51IGFwcGxpY2F0aXZvIGVkIGlsIHNvdHRvbWVudS5cbiAqXG4gKiBJbm9sdHJlIGUnIHBvc3NpYmlsZSBwZXJtZXR0ZXJlIGFsIGNvbXBvbmVudGUgZGkgcmVjdXBlcmFyZSBpbiBhdXRvbWF0aWNvIGxlIGluZm9ybWF6aW9uaSBpbmVyZW50aVxuICogbCd1dGVudGUgbG9nZ2F0byBlIGdsaSBodG1sIHZpc3VhbGl6emF0aSBuZWxsJ2hlYWRlciBlIG5lbCBmb290ZXJcbiAqIG9wcHVyZSBwYXNzYXJlIGVzcGxpY2l0YW1lbnRlIHF1ZXN0ZSBpbmZvcm1hemlvbmkgZGFsbCdlc3Rlcm5vLlxuICpcbiAqIEluZmluZSBlJyBwb3NzaWJpbGUgZmFyIGluaWV0dGFyZSBhbCBjb21wb25lbnRlIGxlIHJpc29yc2Ugc3RhdGljaGUgbmVjZXNzYXJpZSxcbiAqIHBhc3NhbmRvbGUgaW4gaW5wdXQgZSBmYWNlbmRvbGUgcmVjdXBlcmFyZSBpbiBhdXRvbWF0aWNvXG4gKiBzZW56YSBkb3ZlcmxlIHNwZWNpZmljYXJlIG5lbGwnaW5kZXguaHRtbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbmFpbC1sYXlvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5haWwtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5haWwtbGF5b3V0LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEluYWlsTGF5b3V0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIGhlYWRlckNvbmZpZzogSGVhZGVyQ29uZmlndXJhdGlvbnM7XG5cbiAgLyoqXG4gICAqIFNlIHRydWUgdmlzdWFsaXp6YSBpbCBsb2FkZXJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNob3dMb2FkZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9nZ2V0dG8gZGkgY29uZmlndXJhemlvbmUgZGVsIGNvbXBvbmVudGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBjb25maWc6IEluYWlsTGF5b3V0Q29uZmlndXJhdGlvbnM7XG5cbiAgLyoqXG4gICAqIEZyYW1tZW50byBodG1sIGRlbGxhIHByaW1hIGludGVzdGF6aW9uZSBkaSBwYWdpbmEgKHF1ZWxsYSBjb250ZW5lbnRlIGlsIGxvZ28pIGRhIGZhciB2aXN1YWxpenphcmUgYWwgY29tcG9uZW50ZS5cbiAgICogVmVycmEnIHV0aWxpenphdG8gc29sYW1lbnRlIGluIGNhc28gZGkgcmVjdXBlcm8gbm9uIGF1dG9tYXRpY28uXG4gICAqL1xuICBASW5wdXQoKVxuICBsb2dvSGVhZGVySHRtbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGcmFtbWVudG8gaHRtbCBkZWxsYSBuYXZpZ2F6aW9uZSBwcmluY2lwYWxlIGRhIGZhciB2aXN1YWxpenphcmUgYWwgY29tcG9uZW50ZS5cbiAgICogVmVycmEnIHV0aWxpenphdG8gc29sYW1lbnRlIGluIGNhc28gZGkgcmVjdXBlcm8gbm9uIGF1dG9tYXRpY28uXG4gICAqL1xuICBASW5wdXQoKVxuICBuYXZpZ2F6aW9uZVByaW5jaXBhbGVIdG1sOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZyYW1tZW50byBodG1sIGRlbCBoZWFkZXIgc2Vjb25kYXJpbyBkYSBmYXIgdmlzdWFsaXp6YXJlIGFsIGNvbXBvbmVudGUuXG4gICAqIFZlcnJhJyB1dGlsaXp6YXRvIHNvbGFtZW50ZSBpbiBjYXNvIGRpIHJlY3VwZXJvIG5vbiBhdXRvbWF0aWNvLlxuICAgKi9cbiAgQElucHV0KClcbiAgaGVhZGVyU2Vjb25kYXJpb0h0bWw6IHN0cmluZztcblxuICAvKipcbiAgICogRGF0aSBkYSB2aXN1YWxpenphcmUgYWxsJ2ludGVybm8gZGVsIGhlYWRlciBzZWNvbmRhcmlvLlxuICAgKiBWZXJyYW5ubyB1dGlsaXp6YXRpIHNvbGFtZW50ZSBpbiBjYXNvIGRpIHJlY3VwZXJvIG5vbiBhdXRvbWF0aWNvLlxuICAgKiBWZW5nb25vIGlnbm9yYXRpIHNlIGUnIHN0YXRhIHZhbG9yaXp6YXRhIGxhIHByb3ByaWV0YScgZGkgaW5wdXQgJ2hlYWRlclNlY29uZGFyaW9IdG1sJy5cbiAgICogU2UgaW1wb3N0YXRhIGEgJ3RydWUnIGxhIHByb3ByaWV0YScgJ3VzZURlZmF1bHRIdG1sJyBkZWxsJ29nZ2V0dG8gZGkgY29uZmlndXJhemlvbmUgZGVsIGNvbXBvbmVudGUsXG4gICAqIGxhIHZhbG9yaXp6YXppb25lIGRlbGxhIHByb3ByaWV0YScgJ2hlYWRlclNlY29uZGFyaW9EYXRhJyBkZXRlcm1pbmVyYScgc2UgdmlzdWFsaXp6YXJlIGlsIGZyYW1tZW50byBodG1sIGRpIGRlZmF1bHRcbiAgICogZGVsbGEgbmF2aWdhemlvbmUgcHJpbmNpcGFsZSBpbmVyZW50ZSBsJ3V0ZW50ZSBhdXRlbnRpY2F0byBvIHF1ZWxsbyBpbmVyZW50ZSBsJ3V0ZW50ZSBub24gYXV0ZW50aWNhdG9cbiAgICogZSBzZSB2aXN1YWxpenphcmUgbyBtZW5vIGlsIGZyYW1tZW50byBodG1sIGRpIGRlZmF1bHQgaW5lcmVudGUgbCdoZWFkZXIgc2Vjb25kYXJpby5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGhlYWRlclNlY29uZGFyaW9EYXRhOiBIZWFkZXJTZWNvbmRhcmlvRGF0YTtcblxuICAvKipcbiAgICogRnJhbW1lbnRvIGh0bWwgZGVsIGZvb3RlciBkYSBmYXIgdmlzdWFsaXp6YXJlIGFsIGNvbXBvbmVudGUuXG4gICAqIFZlcnJhJyB1dGlsaXp6YXRvIHNvbGFtZW50ZSBpbiBjYXNvIGRpIHJlY3VwZXJvIG5vbiBhdXRvbWF0aWNvLlxuICAgKi9cbiAgQElucHV0KClcbiAgZm9vdGVySHRtbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0YSBkZWxsZSByaXNvcnNlIGVzdGVybmUgZGEgdXRpbGl6emFyZSBwZXIgbGEgY29ycmV0dGEgdmlzdWFsaXp6YXppb25lIGRlbCBsYXlvdXQuXG4gICAqIFZlbmdvbm8gY2FyaWNhdGUgYXV0b21hdGljYW1lbnRlIHNvbG8gc2UgaWwgY29tcG9ydGFtZW50byB2aWVuZSBhYmlsaXRhdG9cbiAgICogdHJhbWl0ZSBsYSBwcm9wcmlldGEnIGRpIGNvbmZpZ3VyYXppb25lICdjYXJpY2FtZW50b0RpbmFtaWNvUmlzb3JzZUVzdGVybmUnLlxuICAgKiBTZSBwZXIgbGUgcmlzb3JzZSBub24gdmVuZ29ubyBzcGVjaWZpY2F0aSBkZWdsaSB1cmwgYXNzb2x1dGlcbiAgICogdmVuZ29ubyByZWN1cGVyYXRlIGluIGJhc2UgYSBxdWFudG8gc3BlY2lmaWNhdG8gbmVsbGEgcHJvcHJpZXRhJyBkaSBjb25maWd1cmF6aW9uZVxuICAgKiAnY2RuRW5kcG9pbnQnLlxuICAgKiBTZSBub24gcGFzc2F0ZSB2ZXJyYW5ubyBjYXJpY2F0ZSBsZSByaXNvcnNlIGRpIGRlZmF1bHQgcHJldmlzdGUgZGFsIGNvbXBvbmVudGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBleHRlcm5hbFJlc291cmNlczogRXh0ZXJuYWxSZXNvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBBbGxhIHJpY2V6aW9uZSBkZWwgdmFsb3JlIGVmZmV0dHVhIGlsIHJpY2FyaWNhbWVudG8gZGVpIGZyYW1tZW50aSBodG1sLlxuICAgKi9cbiAgQElucHV0KClcbiAgcmVsb2FkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBMaXN0YSBkZWdsaSBzY3JpcHRzIGVzdGVybmkgZGEgdXRpbGl6emFyZSBwZXIgaWwgY29ycmV0dG8gZnVuemlvbmFtZW50byBkZWwgbGF5b3V0LlxuICAgKiBWZW5nb25vIGNhcmljYXRpIGF1dG9tYXRpY2FtZW50ZSBzb2xvIHNlIGlsIGNvbXBvcnRhbWVudG8gdmllbmUgYWJpbGl0YXRvXG4gICAqIHRyYW1pdGUgbGEgcHJvcHJpZXRhIGRpIGNvbmZpZ3JhemlvbmUgY2FyaWNhbWVudG9EaW5hbWljb1NjcmlwdEVzdGVybmkuXG4gICAqIFNlIHBlciBnbGkgc2NyaXB0IG5vbiB2ZW5nb25vIHNwZWNpZmljYXRpIGRlZ2xpIHVybCBhc3NvbHV0aVxuICAgKiB2ZWdvbm8gcmVjdXBlcmF0aSBpbiBiYXNlIGEgcXVhbnRvIHNwZWNpZmljYXRvIG5lbGxlIHByb3ByaXRhIGRpIGNvbmZpZ3VyYXppb25lXG4gICAqIGNkbkVuZHBvaW50IGVkIGFzc2V0c1VybC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGV4dGVybmFsU2NyaXB0czogRXh0ZXJuYWxTY3JpcHRbXTtcblxuICBAVmlld0NoaWxkKCdicmVhZGNydW1iQ29udGFpbmVyJylcbiAgYnJlYWRjcnVtYkNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdwbGVhc2VXYWl0Q29udGFpbmVyJylcbiAgcGxlYXNlV2FpdENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBAQ29udGVudENoaWxkcmVuKE1lbnVDb21wb25lbnQpXG4gIG1lbnVMaXN0OiBRdWVyeUxpc3Q8TWVudUNvbXBvbmVudD47XG5cbiAgcGFnaW5hQ29ycmVudGU6IEFwcFBhZ2U7XG5cbiAgYnJlYWRjcnVtYkVzdGVybm86IGJvb2xlYW4gPSB0cnVlO1xuICBwbGVhc2VXYWl0RXN0ZXJubzogYm9vbGVhbiA9IHRydWU7XG5cbiAgLy8gR2VzdGlvbmUgcmlzb3JzZSBlIHNjcmlwdCBlc3Rlcm5pXG4gIHJpc29yc2VFc3Rlcm5lQ291bnRlcjogbnVtYmVyID0gMDtcbiAgcmlzb3JzZUVzdGVybmVUb3Q6IG51bWJlcjtcbiAgc2NyaXB0RXN0ZXJuaUNvdW50ZXI6IG51bWJlciA9IDA7XG4gIHNjcmlwdEVzdGVybmlUb3Q6IG51bWJlcjtcblxuICBjYXJpY2FtZW50b1Jpc29yc2VFc3Rlcm5lVGVybWluYXRvOiBib29sZWFuID0gZmFsc2U7XG4gIGNhcmljYW1lbnRvU2NyaXB0RXN0ZXJuaVRlcm1pbmF0bzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGluaXppYWxpenphemlvbmVUZXJtaW5hdGE6IGJvb2xlYW4gPSBmYWxzZTtcblxuICB0b2dnbGVOYXZTZWNvbmRhcmlhOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgaXRzUmVhZHkgPSAoKTogYm9vbGVhbiA9PiB0aGlzLmluaXppYWxpenphemlvbmVUZXJtaW5hdGEgPT09IHRydWUgJiYgdGhpcy5jYXJpY2FtZW50b1Jpc29yc2VFc3Rlcm5lVGVybWluYXRvID09PSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhZ3c6IEFnd1Jlc3RTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBASW5qZWN0KE5HX0lOQUlMX0NPTU1PTl9DT05GSUcpXG4gICAgICAgICAgICAgIHByaXZhdGUgbGliQ29uZmlnOiBOZ0luYWlsQ29tbW9uQ29uZmlnLFxuICAgICAgICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcblxuICAgIHN1cGVyKGNkciwgbGliQ29uZmlnKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtbGF5b3V0XSc7XG4gICAgdGhpcy5kZXRhY2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXN0aW9uZSBhdXRvbWF0aWNhIHBlciBsJ2ltcG9zdGF6aW9uZSBkZWwgZm9jdXNcbiAgICogc3VnbGkgZXJyb3JpXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBvbkNsaWNrKGVsZW06IEhUTUxFbGVtZW50KSB7XG5cbiAgICAvLyBDb250cm9sbG8gY2hlIGlsIGNsaWNrIHNpYSBzdGF0byBmYXR0b1xuICAgIC8vIHN1IHVuIHB1bHNhbnRlIGNoZSBpbXBsaWNhIGwnaW1wb3N0YXppb25lXG4gICAgLy8gZGVsIGZvY3VzIHN1bGwnZXJyb3JlXG4gICAgaWYgKHRoaXMuY29uZmlnLmZvY3VzT25FcnJvciAmJiBpc1NldEZvY3VzT25FcnJvckJ1dHRvbihlbGVtKSkge1xuXG4gICAgICB0aGlzLmVtaXREZWJ1ZygnRXJyb3IgYnV0dG9uIGNsaWNrZWQnKTtcbiAgICAgIHNldEZvY3VzT25FcnJvcih0aGlzLmNvbmZpZy5zZXRGb2N1c1N0cmF0ZWd5LCB0aGlzLmNvbmZpZy5zY3JvbGxUb0Vycm9yKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgICB0aGlzLmVtaXREZWJ1ZygnY2hhbmdlcycpO1xuICAgIHRoaXMuZW1pdERlYnVnKGNoYW5nZXMpO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuXG4gICAgdGhpcy5lbWl0RGVidWcoJ2luaXQuLi4nKTtcblxuICAgIHRoaXMucmVtb3ZlTmdWZXJzaW9uKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcpIHtcblxuICAgICAgdGhpcy5lbWl0RGVidWcoJ0NvbmZpZ3VyYXppb25pIEluYWlsTGF5b3V0Q29tcG9uZW50Jyk7XG4gICAgICB0aGlzLmVtaXREZWJ1Zyh0aGlzLmNvbmZpZyk7XG5cbiAgICAgIGlmICghdGhpcy5jb25maWcuY2RuRW5kcG9pbnQgJiYgdGhpcy5jb25maWcucmVjdXBlcm9BdXRvbWF0aWNvQ2RuRW5kcG9pbnQgPT09IHRydWUpIHtcblxuICAgICAgICBhd2FpdCB0aGlzLnJlY3VwZXJhQ2RuRW5kcG9pbnQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oZWFkZXJDb25maWcgPSB7XG4gICAgICAgIGNsaWVudElkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCxcbiAgICAgICAgYXBpR2F0ZXdheVVybDogdGhpcy5jb25maWcuYXBpR2F0ZXdheVVybCxcbiAgICAgICAgbG9nb0hlYWRlclVybDogdGhpcy5jb25maWcubG9nb0hlYWRlclVybCxcbiAgICAgICAgbmF2aWdhemlvbmVQcmluY2lwYWxlVXJsOiB0aGlzLmNvbmZpZy5uYXZpZ2F6aW9uZVByaW5jaXBhbGVVcmwsXG4gICAgICAgIGhlYWRlclNlY29uZGFyaW9Vcmw6IHRoaXMuY29uZmlnLmhlYWRlclNlY29uZGFyaW9VcmwsXG4gICAgICAgIHVzZURlZmF1bHRIdG1sOiB0aGlzLmNvbmZpZy51c2VEZWZhdWx0SHRtbCxcbiAgICAgICAgcmVjdXBlcm9BdXRvbWF0aWNvSHRtbDogdGhpcy5jb25maWcucmVjdXBlcm9BdXRvbWF0aWNvSHRtbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcucmVjdXBlcm9BdXRvbWF0aWNvSHRtbCA9PT0gdHJ1ZSkge1xuXG4gICAgICAvLyBUT0RPIGFnZ2l1bmdlcmUgYWxsYSBET0NcbiAgICAgIGF3YWl0IHRoaXMucmVjdXBlcmFIZWFkRGFBR1coKTtcbiAgICB9XG5cbiAgICAvLyBJbml6aWFsaXp6YXppb25lIHJpc29yc2UgZXN0ZXJuZVxuICAgIGlmICh0aGlzLmNvbmZpZz8uY2FyaWNhbWVudG9EaW5hbWljb1Jpc29yc2VFc3Rlcm5lID09PSB0cnVlKSB7XG5cbiAgICAgIGxldCBkZWZhdWx0RXh0ZXJuYWxSZXNvdXJjZXM6IEV4dGVybmFsUmVzb3VyY2VbXTtcblxuICAgICAgLy8gU2Ugbm9uIHZlbmdvbm8gc3BlY2lmaWNhdGUgZGFsbCdlc3Rlcm5vIGxlIHJpc29yc2UgZGEgdXRpbGl6emFyZVxuICAgICAgLy8gY2FyaWNvIHF1ZWxsZSBkaSBkZWZhdWx0XG4gICAgICBpZiAodGhpcy5leHRlcm5hbFJlc291cmNlcyA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAvLyBkZWZhdWx0RXh0ZXJuYWxSZXNvdXJjZXMgPSB0aGlzLmxpYkNvbmZpZz8ud2Via2l0VmVyc2lvbiAhPSB1bmRlZmluZWRcbiAgICAgICAgLy8gICA/IGdldFdlYmtpdEV4dGVybmFsUmVzb3VyY2VzKHRoaXMubGliQ29uZmlnLndlYmtpdFZlcnNpb24pXG4gICAgICAgIC8vICAgOiB3ZWJraXRFeHRlcm5hbFJlc291cmNlcztcblxuICAgICAgICBkZWZhdWx0RXh0ZXJuYWxSZXNvdXJjZXMgPSBnZXRXZWJraXRFeHRlcm5hbFJlc291cmNlcyh0aGlzLmxpYkNvbmZpZy53ZWJraXRWZXJzaW9uKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJpc29yc2VFc3Rlcm5lOiBFeHRlcm5hbFJlc291cmNlW10gPSBkZWZhdWx0RXh0ZXJuYWxSZXNvdXJjZXMgPz8gdGhpcy5leHRlcm5hbFJlc291cmNlcztcblxuICAgICAgdGhpcy5sb2FkUmlzb3JzZUVzdGVybmUocmlzb3JzZUVzdGVybmUsICdsaW5rJyk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXJpY2FtZW50b1Jpc29yc2VFc3Rlcm5lVGVybWluYXRvID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBJbml6aWFsaXp6YXppb25lIHNjcmlwdCBlc3Rlcm5pXG4gICAgaWYgKHRoaXMuY29uZmlnPy5jYXJpY2FtZW50b0RpbmFtaWNvU2NyaXB0RXN0ZXJuaSA9PT0gdHJ1ZVxuICAgICAgJiYgdGhpcy5leHRlcm5hbFNjcmlwdHM/Lmxlbmd0aCkge1xuXG4gICAgICBsZXQgZGVmYXVsdEV4dGVybmFsU2NyaXB0czogRXh0ZXJuYWxTY3JpcHRbXTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxTY3JpcHRzID09IHVuZGVmaW5lZCkge1xuXG5cbiAgICAgICAgZGVmYXVsdEV4dGVybmFsU2NyaXB0cyA9IGdldFdlYmtpdEV4dGVybmFsU2NyaXB0cyh0aGlzLmxpYkNvbmZpZy53ZWJraXRWZXJzaW9uKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHNjcmlwdEVzdGVybmk6IEV4dGVybmFsU2NyaXB0W10gPSBkZWZhdWx0RXh0ZXJuYWxTY3JpcHRzID8/IHRoaXMuZXh0ZXJuYWxTY3JpcHRzO1xuXG4gICAgICBhd2FpdCB0aGlzLmxvYWRSaXNvcnNlRXN0ZXJuZShzY3JpcHRFc3Rlcm5pLCAnc2NyaXB0Jyk7XG5cbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLmNhcmljYW1lbnRvU2NyaXB0RXN0ZXJuaVRlcm1pbmF0byA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnPy5zY3JvbGxUb3BBdE5hdmlnYXRpb25FbmQpIHtcblxuICAgICAgdGhpcy5wdXNoKFxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHNjcm9sbFRvcCgpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXREZWJ1ZygnLi4uaW5pemlhbGl6emF6aW9uZSB0ZXJtaW5hdGEhJyk7XG4gICAgdGhpcy5pbml6aWFsaXp6YXppb25lVGVybWluYXRhID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU5nVmVyc2lvbihuYXRpdmVFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuXG4gICAgaWYgKG5hdGl2ZUVsZW1lbnQpIHtcblxuICAgICAgaWYgKG5hdGl2ZUVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZSgnbmctdmVyc2lvbicpKSB7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUobmF0aXZlRWxlbWVudCwgJ25nLXZlcnNpb24nKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVOZ1ZlcnNpb24obmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cbiAgICB0aGlzLmJyZWFkY3J1bWJFc3Rlcm5vID0gdGhpcy5icmVhZGNydW1iQ29udGFpbmVyID8gdGhpcy5icmVhZGNydW1iQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRFbGVtZW50Q291bnQgPiAwIDogZmFsc2U7XG4gICAgdGhpcy5wbGVhc2VXYWl0RXN0ZXJubyA9IHRoaXMucGxlYXNlV2FpdENvbnRhaW5lciA/IGlzTm90QmxhbmtPck51bGwodGhpcy5wbGVhc2VXYWl0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSA6IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMubWVudUxpc3Q/Lmxlbmd0aCA+IDApIHtcblxuICAgICAgdGhpcy5tZW51TGlzdC5mb3JFYWNoKChtZW51OiBNZW51Q29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgdGhpcy5wdXNoKFxuICAgICAgICAgIG1lbnUuY3VycmVudEl0ZW0uc3Vic2NyaWJlKChjdXJyZW50RWxlbWVudDogTWVudUl0ZW0pID0+IHtcblxuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcoJ1ZvY2UgbWVudSBjb3JyZW50ZScpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcoY3VycmVudEVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQgIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICAgICAgdGhpcy5wYWdpbmFDb3JyZW50ZSA9IHRoaXMudG9QYWdpbmFBcHBsaWNhdGl2YShjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1BhZ2luYUFwcGxpY2F0aXZhKGVsZW1lbnQ6IE1lbnVJdGVtKTogQXBwUGFnZSB7XG5cbiAgICByZXR1cm4gZWxlbWVudCAhPSB1bmRlZmluZWRcbiAgICAgID8ge1xuICAgICAgICB0aXRsZTogdGhpcy5nZXRFbGVtZW50TGFiZWwoZWxlbWVudCksXG4gICAgICAgIHVybDogdGhpcy5nZXRFbGVtZW50TGluayhlbGVtZW50KSxcbiAgICAgICAgcGFyZW50OiB0aGlzLnRvUGFnaW5hQXBwbGljYXRpdmEoZWxlbWVudC5wYXJlbnQpXG4gICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEVsZW1lbnRMaW5rKGVsZW1lbnQ6IE1lbnVJdGVtKTogc3RyaW5nIHtcblxuICAgIHJldHVybiBpc0Z1bmN0aW9uKGVsZW1lbnQubGluaykgPyAoZWxlbWVudC5saW5rIGFzIEdldFN0cmluZ0ZuKSgpIDogZWxlbWVudC5saW5rO1xuICB9XG5cbiAgZ2V0RWxlbWVudExhYmVsKGVsZW1lbnQ6IE1lbnVJdGVtKTogc3RyaW5nIHtcblxuICAgIHJldHVybiBpc0Z1bmN0aW9uKGVsZW1lbnQubGFiZWwpID8gKGVsZW1lbnQubGFiZWwgYXMgR2V0U3RyaW5nRm4pKCkgOiBlbGVtZW50LmxhYmVsO1xuICB9XG5cbiAgLy8gLS0tIExvZ2ljYSBjYXJpY2FtZW50byByaXNvcnNlIGVzdGVybmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFJlY3VwZXJhIGRhIEFwaSBHYXRld2F5IGwnZW5kcG9pbnQgZGVsbGEgY2RuXG4gICAqIGUgbG8gaW1wb3N0YSBuZWxsYSBjb25maWd1cmF6aW9uZSBkZWwgY29tcG9uZW50ZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVjdXBlcmFDZG5FbmRwb2ludCgpIHtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmVtaXREZWJ1ZyhgUmVjdXBlcm8gY2RuIGVuZHBvaW50IGRhIEFHVyBnbG9iYWwgY29uZmlnYCk7XG5cbiAgICAgIGxldCByZXNwb25zZTogR2xvYmFsQ29uZmlnUmVzcG9uc2UgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuYWd3LmdldEdsb2JhbENvbmZpZyh7XG4gICAgICAgIGNsaWVudElkOiB0aGlzLmNvbmZpZz8uY2xpZW50SWQsXG4gICAgICAgIGFnd0VuZFBvaW50OiB0aGlzLmNvbmZpZz8uYXBpR2F0ZXdheVVybFxuICAgICAgfSkpO1xuXG4gICAgICB0aGlzLmNvbmZpZy5jZG5FbmRwb2ludCA9IHJlc3BvbnNlLmNkbl9lbmRwb2ludDtcblxuICAgICAgdGhpcy5lbWl0RGVidWcoYEVuZHBvaW50IGNkbiByZWN1cGVyYXRvOiAke3RoaXMuY29uZmlnLmNkbkVuZHBvaW50fWApO1xuXG4gICAgfSBjYXRjaCAoZSkge1xuXG4gICAgICB0aGlzLmVtaXRFcnJvcignRXJyb3JlIG5lbCByZWN1cGVybyBkZWwgY2RuRW5kcG9pbnQgZGEgYXBpIGdhdGV3YXknKTtcbiAgICAgIHRoaXMuZW1pdEVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gcmlzb3JzZUVzdGVybmVcbiAgICogQHBhcmFtIHR5cGVcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgbG9hZFJpc29yc2VFc3Rlcm5lKHJpc29yc2VFc3Rlcm5lOiAoRXh0ZXJuYWxSZXNvdXJjZSB8IEV4dGVybmFsU2NyaXB0KVtdLCB0eXBlOiBSZXNvdXJjZVR5cGUpIHtcblxuICAgIHRoaXMuZW1pdERlYnVnKCdMb2FkIHJpc29yc2UgZXN0ZXJuZScpO1xuICAgIHRoaXMuZW1pdERlYnVnKHJpc29yc2VFc3Rlcm5lKTtcblxuICAgIHJpc29yc2VFc3Rlcm5lLmZvckVhY2goKHJlc291cmNlOiBFeHRlcm5hbFJlc291cmNlIHwgRXh0ZXJuYWxTY3JpcHQpID0+IHRoaXMuaW1wb3N0YVBhdGhSaXNvcnNhKHJlc291cmNlLCB0eXBlKSk7XG5cbiAgICBsZXQgbG9hZGVkUmVzb3VyY2VzOiBMb2FkZWRSZXNvdXJjZVtdID0gW107XG4gICAgcmlzb3JzZUVzdGVybmVcbiAgICAgIC8vIEZpbHRyYSBlc2NsdWRlbmRvIGxlIHJpc29yc2UgZ2lhIGluY2x1c2VcbiAgICAgIC5maWx0ZXIoKHJpc29yc2E6IEV4dGVybmFsUmVzb3VyY2UgfCBFeHRlcm5hbFNjcmlwdCkgPT4gIXRoaXMuaXNSZXNvdXJjZUxpbmtlZChyaXNvcnNhLCB0eXBlKSlcbiAgICAgIC5mb3JFYWNoKChyaXNvcnNhOiBFeHRlcm5hbFJlc291cmNlIHwgRXh0ZXJuYWxTY3JpcHQpID0+IGxvYWRlZFJlc291cmNlcy5wdXNoKHtsb2FkZWQ6IGZhbHNlLCByZXNvdXJjZTogcmlzb3JzYX0pKTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuXG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgdGhpcy5yaXNvcnNlRXN0ZXJuZUNvdW50ZXIgPSAwO1xuICAgICAgICB0aGlzLnJpc29yc2VFc3Rlcm5lVG90ID0gbG9hZGVkUmVzb3VyY2VzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5jYXJpY2FSaXNvcnNlRXN0ZXJuZShsb2FkZWRSZXNvdXJjZXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzY3JpcHRcIjpcbiAgICAgICAgdGhpcy5zY3JpcHRFc3Rlcm5pQ291bnRlciA9IDA7XG4gICAgICAgIHRoaXMuc2NyaXB0RXN0ZXJuaVRvdCA9IGxvYWRlZFJlc291cmNlcy5sZW5ndGg7XG4gICAgICAgIGF3YWl0IHRoaXMuY2FyaWNhU2NyaXB0RXN0ZXJuaShsb2FkZWRSZXNvdXJjZXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHJpc29yc2FFc3Rlcm5hXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqL1xuICBwcml2YXRlIGltcG9zdGFQYXRoUmlzb3JzYShyaXNvcnNhRXN0ZXJuYTogRXh0ZXJuYWxSZXNvdXJjZSB8IEV4dGVybmFsU2NyaXB0LCB0eXBlOiBSZXNvdXJjZVR5cGUpIHtcblxuICAgIGxldCB1cmxQcm9wZXJ0eTogc3RyaW5nO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG5cbiAgICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgICB1cmxQcm9wZXJ0eSA9ICdocmVmJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NjcmlwdCc6XG4gICAgICAgIHVybFByb3BlcnR5ID0gJ3NyYyc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJpc29yc2FFc3Rlcm5hLmFzc2V0VXJsID0gIWlzQWJzb2x1dGUocmlzb3JzYUVzdGVybmFbdXJsUHJvcGVydHldKSA/IChyaXNvcnNhRXN0ZXJuYS5hc3NldFVybCA/PyAnJykgOiAnJztcblxuICAgIHJpc29yc2FFc3Rlcm5hLmNkbkVuZHBvaW50ID0gIWlzQWJzb2x1dGUocmlzb3JzYUVzdGVybmEuYXNzZXRVcmwpXG4gICAgICA/IHJpc29yc2FFc3Rlcm5hLmNkbkVuZHBvaW50ID8/IHRoaXMuY29uZmlnLmNkbkVuZHBvaW50ID8/ICcnXG4gICAgICA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZXNcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNhcmljYVJpc29yc2VFc3Rlcm5lKHJlc291cmNlczogTG9hZGVkUmVzb3VyY2VbXSwgaW5kZXg6IG51bWJlciA9IDApIHtcblxuICAgIGlmIChyZXNvdXJjZXMgJiYgcmVzb3VyY2VzLmxlbmd0aCA+IDApIHtcblxuICAgICAgcmVzb3VyY2VzLmZvckVhY2gocmVzb3VyY2UgPT4ge1xuXG4gICAgICAgIHRoaXMuZW1pdERlYnVnKCdDYXJpY2FtZW50byByaXNvcnNhIGVzdGVybmE6Jyk7XG4gICAgICAgIHRoaXMuZW1pdERlYnVnKHJlc291cmNlKTtcblxuICAgICAgICB0aGlzLmNyZWFFbGVtZW50b1Jpc29yc2FFc3Rlcm5hKHJlc291cmNlLCAnbGluaycpXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlOiBMb2FkZWRSZXNvdXJjZVJlc3BvbnNlKSA9PiB7XG5cbiAgICAgICAgICAgIHRoaXMuZW1pdERlYnVnKCcuLi5jYXJpY2FtZW50byByaXNvcnNhIGVzdGVybmEgY29tcGxldGF0bycpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcocmVzcG9uc2UpO1xuICAgICAgICAgIH0sIGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0RXJyb3IoJ0Vycm9yZSBjYXJpY2FtZW50byByaXNvcnNhIGVzdGVybmEhJyk7XG4gICAgICAgICAgICB0aGlzLmVtaXRFcnJvcihlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gc2NyaXB0c1xuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY2FyaWNhU2NyaXB0RXN0ZXJuaShzY3JpcHRzOiBMb2FkZWRSZXNvdXJjZVtdLCBpbmRleDogbnVtYmVyID0gMCkge1xuXG4gICAgaWYgKGluZGV4IDwgc2NyaXB0cy5sZW5ndGgpIHtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdERlYnVnKCdDYXJpY2FtZW50byBzY3JpcHQgZXN0ZXJubzonKTtcbiAgICAgICAgdGhpcy5lbWl0RGVidWcoc2NyaXB0c1tpbmRleF0pO1xuXG4gICAgICAgIHRoaXMuY3JlYUVsZW1lbnRvUmlzb3JzYUVzdGVybmEoc2NyaXB0c1tpbmRleF0sICdzY3JpcHQnKVxuICAgICAgICAgIC50aGVuKChyZXNwb25zZTogTG9hZGVkUmVzb3VyY2VSZXNwb25zZSkgPT4ge1xuXG4gICAgICAgICAgICB0aGlzLmVtaXREZWJ1ZygnLi4uY2FyaWNhbWVudG8gc2NyaXB0IGVzdGVybm8gY29tcGxldGF0bycpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcocmVzcG9uc2UpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVtaXRFcnJvcignRXJyb3JlIGNhcmljYW1lbnRvIHNjcmlwdCBlc3Rlcm5vIScpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RXJyb3IoZSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseSgoKSA9PiB0aGlzLmNhcmljYVNjcmlwdEVzdGVybmkoc2NyaXB0cywgaW5kZXggKyAxKSk7XG5cbiAgICAgIH0sIDMwMCk7XG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5lbWl0RGVidWcoJ0luaXppbyBhemlvbmlGaW5lQ2FyaWNhbWVudG9TY3JpcHQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHBhcmFtIHJlc291cmNlXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNyZWFFbGVtZW50b1Jpc29yc2FFc3Rlcm5hKHJlc291cmNlOiBMb2FkZWRSZXNvdXJjZSwgdHlwZTogUmVzb3VyY2VUeXBlKTogUHJvbWlzZTxMb2FkZWRSZXNvdXJjZVJlc3BvbnNlPiB7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBsZXQgcmVzb3VyY2VVcmw6IHN0cmluZyA9IHJlc291cmNlLnJlc291cmNlWydzcmMnXSB8fCByZXNvdXJjZS5yZXNvdXJjZVsnaHJlZiddO1xuXG4gICAgICAvL3Jlc29sdmUgaWYgYWxyZWFkeSBsb2FkZWRcbiAgICAgIGlmIChyZXNvdXJjZS5sb2FkZWQpIHtcblxuICAgICAgICByZXNvbHZlKHtyZXNvdXJjZTogcmVzb3VyY2VVcmwsIGxvYWRlZDogdHJ1ZSwgc3RhdHVzOiAnQWxyZWFkeSBMb2FkZWQnfSk7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIGxldCByZXNvdXJjZUVsZW1lbnQ6IGFueTtcbiAgICAgICAgbGV0IHVybDogc3RyaW5nO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuXG4gICAgICAgICAgY2FzZSAnc2NyaXB0JzpcbiAgICAgICAgICAgIHRoaXMuZW1pdERlYnVnKGBDcmVhemlvbmUgZWxlbWVudG8gc2NyaXB0IHBlciByaXNvcnNhOmApO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcocmVzb3VyY2UucmVzb3VyY2UpO1xuICAgICAgICAgICAgcmVzb3VyY2VFbGVtZW50ID0gY3JlYXRlU2NyaXB0RWxlbWVudCgocmVzb3VyY2UucmVzb3VyY2UgYXMgRXh0ZXJuYWxTY3JpcHQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcoYENyZWF6aW9uZSBlbGVtZW50byBsaW5rIHBlciByaXNvcnNhOmApO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcocmVzb3VyY2UucmVzb3VyY2UpO1xuICAgICAgICAgICAgcmVzb3VyY2VFbGVtZW50ID0gY3JlYXRlTGlua0VsZW1lbnQoKHJlc291cmNlLnJlc291cmNlIGFzIEV4dGVybmFsUmVzb3VyY2UpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc291cmNlRWxlbWVudC5yZWFkeVN0YXRlKSB7ICAvLyBJRVxuXG4gICAgICAgICAgcmVzb3VyY2VFbGVtZW50Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcblxuICAgICAgICAgICAgaWYgKHJlc291cmNlRWxlbWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGVkJyB8fCByZXNvdXJjZUVsZW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuXG4gICAgICAgICAgICAgIHRoaXMucmlzb3JzYU9uTG9hZCh0eXBlKTtcbiAgICAgICAgICAgICAgcmVzb3VyY2VFbGVtZW50Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICAgICAgICAgIHJlc291cmNlLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHJlc29sdmUoe3Jlc291cmNlOiByZXNvdXJjZVVybCwgbG9hZGVkOiB0cnVlLCBzdGF0dXM6ICdMb2FkZWQnfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICB9IGVsc2UgeyAgLy8gT3RoZXJzXG5cbiAgICAgICAgICByZXNvdXJjZUVsZW1lbnQub25sb2FkID0gKCkgPT4ge1xuXG4gICAgICAgICAgICB0aGlzLnJpc29yc2FPbkxvYWQodHlwZSk7XG4gICAgICAgICAgICByZXNvdXJjZS5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVzb2x2ZSh7cmVzb3VyY2U6IHJlc291cmNlVXJsLCBsb2FkZWQ6IHRydWUsIHN0YXR1czogJ0xvYWRlZCd9KTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb3VyY2VFbGVtZW50Lm9uZXJyb3IgPSAoZXJyb3I6IGFueSkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5yaXNvcnNhT25Mb2FkKHR5cGUpO1xuICAgICAgICAgIHJlamVjdCh7cmVzb3VyY2U6IHJlc291cmNlLnJlc291cmNlLCBsb2FkZWQ6IGZhbHNlLCBzdGF0dXM6ICdMb2FkZWQnfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChyZXNvdXJjZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRyb2xsYSBzZSBnaWEgZXNpc3RlIHVuYSBzcGVjaWZpY2Egcmlzb3JzYSBuZWwgdGFnIGhlYWRcbiAgICpcbiAgICogQHBhcmFtIHJpc29yc2FcbiAgICogQHBhcmFtIHR5cGVcbiAgICovXG4gIGlzUmVzb3VyY2VMaW5rZWQocmlzb3JzYTogRXh0ZXJuYWxSZXNvdXJjZSB8IEV4dGVybmFsU2NyaXB0LCB0eXBlOiBSZXNvdXJjZVR5cGUpOiBib29sZWFuIHtcblxuICAgIGxldCB0cm92YXRvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBsZXQgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuXG4gICAgICBjYXNlICdzY3JpcHQnOlxuXG4gICAgICAgIC8vIFRyb3ZhIHR1dHRpIGdsaSBlbGVtZW50aSBzY3JpcHQgbmVsIHRhZyBoZWFkXG4gICAgICAgIGxldCBzY3JpcHQgPSBoZWFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTtcblxuICAgICAgICAvLyBJdGVyYSBzdWdsaSBlbGVtZW50aSBzY3JpcHQgZSBjb250cm9sbGEgc2UgdW5vIGRpIGVzc2kgcHVudGEgYWxsbyBzY3JpcHQgc3BlY2lmaWNhdG9cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY3JpcHQubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgIGxldCB1cmw6IHN0cmluZyA9IChyaXNvcnNhIGFzIEV4dGVybmFsU2NyaXB0KS5zcmM7XG5cbiAgICAgICAgICB0cm92YXRvID0gKHNjcmlwdFtpXS5zcmMgJiYgc2NyaXB0W2ldLnNyYy5pbmRleE9mKHVybCkgIT09IC0xKTtcblxuICAgICAgICAgIGlmICh0cm92YXRvKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xpbmsnOlxuXG4gICAgICAgIC8vIFRyb3ZhIHR1dHRpIGdsaSBlbGVtZW50aSBsaW5rIG5lbCB0YWcgaGVhZFxuICAgICAgICBsZXQgbGlua3MgPSBoZWFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaW5rJyk7XG5cbiAgICAgICAgbGV0IHVybDogc3RyaW5nID0gKHJpc29yc2EgYXMgRXh0ZXJuYWxSZXNvdXJjZSkuaHJlZjtcblxuICAgICAgICAvLyBJdGVyYSBzdWdsaSBlbGVtZW50aSBsaW5rIGUgY29udHJvbGxhIHNlIHVubyBkaSBlc3NpIHB1bnRhIGFsIENTUyBzcGVjaWZpY2F0b1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdHJvdmF0byA9IChsaW5rc1tpXS5ocmVmICYmIGxpbmtzW2ldLmhyZWYuaW5kZXhPZih1cmwpICE9PSAtMSk7XG5cbiAgICAgICAgICBpZiAodHJvdmF0bykge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiB0cm92YXRvO1xuICB9XG5cbiAgcmlzb3JzYU9uTG9hZCh0eXBlOiBSZXNvdXJjZVR5cGUpIHtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuXG4gICAgICBjYXNlICdzY3JpcHQnOlxuICAgICAgICB0aGlzLnNjcmlwdEVzdGVybmlDb3VudGVyKys7XG4gICAgICAgIHRoaXMuY2FyaWNhbWVudG9TY3JpcHRFc3Rlcm5pVGVybWluYXRvID0gdGhpcy5zY3JpcHRFc3Rlcm5pQ291bnRlciA9PT0gdGhpcy5zY3JpcHRFc3Rlcm5pVG90O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgIHRoaXMucmlzb3JzZUVzdGVybmVDb3VudGVyKys7XG4gICAgICAgIHRoaXMuY2FyaWNhbWVudG9SaXNvcnNlRXN0ZXJuZVRlcm1pbmF0byA9IHRoaXMucmlzb3JzZUVzdGVybmVDb3VudGVyID09PSB0aGlzLnJpc29yc2VFc3Rlcm5lVG90O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYXJpY2FtZW50b1Jpc29yc2VFc3Rlcm5lVGVybWluYXRvKSB7XG5cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZWN1cGVyYUhlYWREYUFHVygpIHtcblxuICAgIHRoaXMuZW1pdERlYnVnKGBSZWN1cGVybyByaXNvcnNlIGVzdGVybmUgaGVhZCBkYSBBR1dgKTtcblxuICAgIGxldCByZXF1ZXN0OiBBR1dSZXF1ZXN0ID0ge2NsaWVudElkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCwgYWd3RW5kUG9pbnQ6IHRoaXMuY29uZmlnLmFwaUdhdGV3YXlVcmx9O1xuXG4gICAgdHJ5IHtcblxuICAgICAgbGV0IHJlc3BvbnNlOiBDaGVja3Nlc3Npb25SZXNwb25zZSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5hZ3cuY2hlY2tzZXNzaW9uKHJlcXVlc3QpKTtcblxuICAgICAgbGV0IHJlc3BvbnNlSEYkOiBPYnNlcnZhYmxlPEhGUmVzcG9uc2U+ID0gcmVzcG9uc2U/LnJlc3VsdCA9PT0gdHJ1ZVxuICAgICAgICA/IHRoaXMuYWd3LmdldFByaXZhdGVIZWFkUlcocmVxdWVzdClcbiAgICAgICAgOiB0aGlzLmFndy5nZXRQdWJsaWNIZWFkUlcocmVxdWVzdCk7XG5cbiAgICAgIGxldCByZXNwb25zZUhGOiBIRlJlc3BvbnNlID0gYXdhaXQgbGFzdFZhbHVlRnJvbShyZXNwb25zZUhGJCk7XG5cbiAgICAgIGlmIChyZXNwb25zZUhGPy5odG1sICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIGRvY3VtZW50LmhlYWQuaW5uZXJIVE1MID0gYCR7ZG9jdW1lbnQuaGVhZC5pbm5lckhUTUx9ICR7cmVzcG9uc2VIRi5odG1sfWA7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cblxuICAgIH0gY2F0Y2ggKGVycikge1xuXG4gICAgICB0aGlzLmVtaXRFcnJvcignRXJyb3JlIHJlY3VwZXJvIHJpc29yc2UgZXN0ZXJuZSBoZWFkIGRhIEFHVycpO1xuICAgICAgdGhpcy5lbWl0RXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gLS0tIE9wZXJhdG9yaSBwZXIgbGEgZ2VzdGlvbmUgZGVsbGUgcmlzb3JzZSBlc3Rlcm5lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBjcmVhdGVMaW5rRWxlbWVudCA9IChyZXNvdXJjZTogRXh0ZXJuYWxSZXNvdXJjZSkgPT4ge1xuXG4gIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuXG4gIGxldCB1cmwgPSBgJHtyZXNvdXJjZS5jZG5FbmRwb2ludH0keyhpc05vdEJsYW5rT3JOdWxsKHJlc291cmNlLmNkbkVuZHBvaW50KSAmJiBpc05vdEJsYW5rT3JOdWxsKHJlc291cmNlLmFzc2V0VXJsKSAmJiAhc3RhcnRXaXRoU2xhc2gocmVzb3VyY2UuYXNzZXRVcmwpKSA/ICcvJyA6ICcnfSR7cmVzb3VyY2UuYXNzZXRVcmx9JHtyZXNvdXJjZS5ocmVmfWA7XG5cbiAgYWRkUHJvcGVydHkoZWxlbWVudCwgJ3JlbCcsIHJlc291cmNlLnJlbCk7XG4gIGFkZFByb3BlcnR5KGVsZW1lbnQsICd0eXBlJywgcmVzb3VyY2UudHlwZSk7XG4gIGFkZFByb3BlcnR5KGVsZW1lbnQsICdocmVmJywgdXJsKTtcbiAgYWRkUHJvcGVydHkoZWxlbWVudCwgJ21lZGlhJywgcmVzb3VyY2UubWVkaWEpO1xuICBhZGRQcm9wZXJ0eShlbGVtZW50LCAnaHJlZmxhbmcnLCByZXNvdXJjZS5ocmVmbGFuZyk7XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5jb25zdCBjcmVhdGVTY3JpcHRFbGVtZW50ID0gKHNjcmlwdDogRXh0ZXJuYWxTY3JpcHQpID0+IHtcblxuICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuXG4gIGxldCB1cmwgPSBgJHtzY3JpcHQuY2RuRW5kcG9pbnR9JHsoaXNOb3RCbGFua09yTnVsbChzY3JpcHQuY2RuRW5kcG9pbnQpICYmIGlzTm90QmxhbmtPck51bGwoc2NyaXB0LmFzc2V0VXJsKSAmJiAhc3RhcnRXaXRoU2xhc2goc2NyaXB0LmFzc2V0VXJsKSkgPyAnLycgOiAnJ30ke3NjcmlwdC5hc3NldFVybH0ke3NjcmlwdC5zcmN9YDtcblxuICBhZGRQcm9wZXJ0eShlbGVtZW50LCAnc3JjJywgdXJsKTtcbiAgYWRkUHJvcGVydHkoZWxlbWVudCwgJ3R5cGUnLCBzY3JpcHQudHlwZSk7XG4gIGFkZFByb3BlcnR5KGVsZW1lbnQsICdjaGFyc2V0Jywgc2NyaXB0LmNoYXJzZXQpO1xuXG4gIGlmIChzY3JpcHQuYXN5bmMgPT09IHRydWUpIHtcblxuICAgIGVsZW1lbnQuYXN5bmMgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHNjcmlwdC5kZWZlciA9PT0gdHJ1ZSkge1xuXG4gICAgZWxlbWVudC5kZWZlciA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn07XG5cbmNvbnN0IGFkZFByb3BlcnR5ID0gKGVsZW06IGFueSwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG5cbiAgaWYgKGVsZW0gIT0gdW5kZWZpbmVkICYmIHZhbHVlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgZWxlbVtuYW1lXSA9IHZhbHVlO1xuICB9XG59O1xuXG4vLyAtLS0gT3BlcmF0b3JpIHBlciBsYSBnZXN0aW9uZSBkZWwgZm9jdXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmNvbnN0IGlzU2V0Rm9jdXNPbkVycm9yQnV0dG9uID0gKGVsZW06IEhUTUxFbGVtZW50KTogYm9vbGVhbiA9PiBlbGVtICYmICgoZWxlbS5ub2RlTmFtZSA9PSAnQlVUVE9OJyAmJiBoYXNDbGFzc1ZhbGlkYXRpb25CdG4oZWxlbSkpIHx8IGlzU2V0Rm9jdXNPbkVycm9yQnV0dG9uKGVsZW0ucGFyZW50RWxlbWVudCkpO1xuY29uc3QgaGFzQ2xhc3NWYWxpZGF0aW9uQnRuID0gKGVsZW06IEhUTUxFbGVtZW50KTogYm9vbGVhbiA9PiBlbGVtICYmIGVsZW0uY2xhc3NMaXN0ICYmIGVsZW0uY2xhc3NMaXN0LmNvbnRhaW5zKEVSUk9SX0JUTl9DTEFTUyk7XG5cbmNvbnN0IGZvY3VzYWJsZSA9ICc6bm90KFtkaXNhYmxlZF0pOm5vdChbcmVhZG9ubHldKTpub3QoW3RhYmluZGV4PVxcJy0xXFwnXSknO1xuY29uc3QgZm9jdXNhYmxlRWxlbWVudCA9IGBpbnB1dCR7Zm9jdXNhYmxlfSxzZWxlY3Qke2ZvY3VzYWJsZX0sdGV4dGFyZWEke2ZvY3VzYWJsZX0sLmZlZWRiYWNrLWZvY3VzYWJsZWA7XG5cbi8qKlxuICogVHJvdmEgZSByZXN0aXR1aXNjZSBsJ2VsZW1lbnRvIGZvY3VzYWJsZVxuICogYWxsJ2ludGVybm8gZGVsbCdlbGVtZW50byBkYXRvXG4gKlxuICogQHBhcmFtIG91dGVyXG4gKi9cbmNvbnN0IGZpbmRJbm5lckZvY3VzYWJsZUVsZW1lbnQgPSAob3V0ZXI6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgPT4gb3V0ZXIgPyBvdXRlci5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50Pihmb2N1c2FibGVFbGVtZW50KVswXSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBJbXBvc3RhIGlsIGZvY3VzIHN1bGwnZXJyb3JlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRGb2N1c09uRXJyb3IgPSAoc2V0Rm9jdXNTdHJhdGVneTogU2V0Rm9jdXNTdHJhdGVneSwgc2Nyb2xsVG9FcnJvcjogYm9vbGVhbikgPT4ge1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gbGV0IG1vZGFsZUluUGFnaW5hOiBib29sZWFuID0gJCgnLm1vZGFsLmZhZGUuaW4nKS5ub3QoYC4ke01PREFMX0NPTkZJUk1fQ0xBU1N9YCkubGVuZ3RoID4gMCBUT0RPXG5cbiAgbGV0IG1vZGFsZUluUGFnaW5hOiBib29sZWFuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1vZGFsLmZhZGUuaW4nKS5sZW5ndGg7XG5cbiAgLy8gU2UgZXNpc3RlIHVuYSBtb2RhbGUgaW4gcGFnaW5hIGNoZSBub24gZScgdW5hIG1vZGFsZSBkaSBjb25mZXJtYVxuICBpZiAobW9kYWxlSW5QYWdpbmEpIHtcblxuICAgIHNldEZvY3VzT25GaXJzdE1vZGFsRXJyb3IoKTtcblxuICB9IGVsc2Uge1xuXG4gICAgc3dpdGNoIChzZXRGb2N1c1N0cmF0ZWd5KSB7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlIFNldEZvY3VzU3RyYXRlZ3kuT25HbG9iYWxGZWVkYmFjazpcbiAgICAgICAgc2V0Rm9jdXNPbkdsb2JhbEVycm9yRmVlZGJhY2soc2Nyb2xsVG9FcnJvcik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNldEZvY3VzU3RyYXRlZ3kuT25GaXJzdFBhZ2VFcnJvcjpcbiAgICAgICAgc2V0Rm9jdXNPbkZpcnN0UGFnZUVycm9yKHNjcm9sbFRvRXJyb3IpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogSW1wb3N0YSBpbCBmb2N1cyBzdWwgcHJpbW8gZWxlbWVudG8gbmVsbGEgbW9kYWxlIGFuZGF0byBpbiBlcnJvcmUgc2UgZXNpc3RlLlxuICovXG5leHBvcnQgY29uc3Qgc2V0Rm9jdXNPbkZpcnN0TW9kYWxFcnJvciA9ICgpID0+IHtcblxuICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgIGxldCBmaXJzdE1vZGFsRXJyb3JFbGVtZW50OiBIVE1MRWxlbWVudCA9IGZpbmRJbm5lckZvY3VzYWJsZUVsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5tb2RhbC1ib2R5IC5oYXMtZXJyb3InKVswXSk7XG4gICAgbGV0IGZpcnN0TW9kYWxFcnJvckZlZWRiYWNrOiBIVE1MRWxlbWVudCA9IGZpbmRJbm5lckZvY3VzYWJsZUVsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5tb2RhbC1ib2R5IC5mZWVkYmFjay1ib3gtZXJyb3InKVswXSk7XG5cbiAgICBpZiAoZmlyc3RNb2RhbEVycm9yRWxlbWVudCkge1xuXG4gICAgICBmaXJzdE1vZGFsRXJyb3JFbGVtZW50LmZvY3VzKCk7XG5cbiAgICB9IGVsc2UgaWYgKGZpcnN0TW9kYWxFcnJvckZlZWRiYWNrKSB7XG5cbiAgICAgIGZpcnN0TW9kYWxFcnJvckZlZWRiYWNrLmZvY3VzKCk7XG4gICAgfVxuXG4gIH0sIDEwMCk7XG59O1xuXG4vKipcbiAqIEltcG9zdGEgaWwgZm9jdXMgc3VsIHByaW1vIGVsZW1lbnRvIGluIHBhZ2luYSBhbmRhdG8gaW4gZXJyb3JlIHNlIGVzaXN0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldEZvY3VzT25GaXJzdFBhZ2VFcnJvciA9IChzY3JvbGxUb0Vycm9yPzogYm9vbGVhbikgPT4ge1xuXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuXG4gICAgbGV0IG91dGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5oYXMtZXJyb3IsLmZlZWRiYWNrLWJveC1lcnJvcjpub3QoLmdsb2JhbC1mZWVkYmFjayknKVswXTtcblxuICAgIGxldCBmaXJzdEVycm9yRWxlbWVudDogSFRNTEVsZW1lbnQgPSBmaW5kSW5uZXJGb2N1c2FibGVFbGVtZW50KG91dGVyKTtcblxuICAgIGlmIChmaXJzdEVycm9yRWxlbWVudCAmJiAhaXNIaWRkZW4oZmlyc3RFcnJvckVsZW1lbnQpKSB7XG5cbiAgICAgIGlmIChzY3JvbGxUb0Vycm9yID09PSB0cnVlKSB7XG5cbiAgICAgICAgc2Nyb2xsVG9FbGVtZW50KGZpcnN0RXJyb3JFbGVtZW50LmlkKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWwgZGVsYXkgc2VydmUgYWQgYXNwZXR0YXJlIGNoZSB0ZXJtaW5pIGxvIHNjcm9sbFxuICAgICAgc2V0VGltZW91dCgoKSA9PiBmaXJzdEVycm9yRWxlbWVudC5mb2N1cygpLCA1MDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRGb2N1c09uR2xvYmFsRXJyb3JGZWVkYmFjayhzY3JvbGxUb0Vycm9yKTtcbiAgICB9XG4gIH0sIDEwMCk7XG59O1xuXG4vKipcbiAqIEltcG9zdGEgaWwgZm9jdXMgc3VsIGZlZWRiYWNrIGdsb2JhbGVcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEZvY3VzT25HbG9iYWxGZWVkYmFjayA9IChzY3JvbGxUb0ZlZWRiYWNrPzogYm9vbGVhbikgPT4gc2V0Rm9jdXNPbkZpcnN0RmVlZGJhY2soJy5nbG9iYWwtZmVlZGJhY2snLCBzY3JvbGxUb0ZlZWRiYWNrKTtcblxuLyoqXG4gKiBJbXBvc3RhIGlsIGZvY3VzIHN1bCBmZWVkYmFjayBnbG9iYWxlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRGb2N1c09uR2xvYmFsRXJyb3JGZWVkYmFjayA9IChzY3JvbGxUb0ZlZWRiYWNrPzogYm9vbGVhbikgPT4gc2V0Rm9jdXNPbkZpcnN0RmVlZGJhY2soJy5nbG9iYWwtZmVlZGJhY2suZmVlZGJhY2stYm94LWVycm9yJywgc2Nyb2xsVG9GZWVkYmFjayk7XG5cbi8qKlxuICogSW1wb3N0YSBpbCBmb2N1cyBzdWwgcHJpbW8gZmVlZGJhY2sgZGkgZXJyb3JlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRGb2N1c09uRmlyc3RFcnJvckZlZWRiYWNrID0gKHNjcm9sbFRvRmVlZGJhY2s/OiBib29sZWFuKSA9PiBzZXRGb2N1c09uRmlyc3RGZWVkYmFjaygnLmZlZWRiYWNrLWJveC1lcnJvcicsIHNjcm9sbFRvRmVlZGJhY2spO1xuXG4vKipcbiAqIEltcG9zdGEgaWwgZm9jdXMgc3VsIHByaW1vIGZlZWRiYWNrIGluIHBhZ2luYVxuICpcbiAqIEBwYXJhbSBzZWxlY3RvclxuICogQHBhcmFtIHNjcm9sbFRvRmVlZGJhY2tcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEZvY3VzT25GaXJzdEZlZWRiYWNrID0gKHNlbGVjdG9yPzogc3RyaW5nLCBzY3JvbGxUb0ZlZWRiYWNrPzogYm9vbGVhbikgPT4ge1xuXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuXG4gICAgbGV0IGZlZWRiYWNrOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KHNlbGVjdG9yIHx8ICcuZmVlZGJhY2stYm94JylbMF07XG5cbiAgICBpZiAoZmVlZGJhY2spIHtcblxuICAgICAgaWYgKHNjcm9sbFRvRmVlZGJhY2spIHtcblxuICAgICAgICBzY3JvbGxUb0VsZW1lbnQoZmVlZGJhY2suZ2V0QXR0cmlidXRlKCdpZCcpKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGZlZWRiYWNrRm9jdXNhYmxlOiBIVE1MRWxlbWVudCA9IGZlZWRiYWNrLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjay1mb2N1c2FibGUnKTtcblxuICAgICAgaWYgKGZlZWRiYWNrRm9jdXNhYmxlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIC8vIElsIGRlbGF5IHNlcnZhIGFkIGFzcGV0dGFyZSBjaGUgdGVybWluaSBsbyBzY3JvbGxcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBmZWVkYmFja0ZvY3VzYWJsZS5mb2N1cygpLCA1MDApO1xuICAgICAgfVxuICAgIH1cbiAgfSwgMTAwKTtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBpZFxuICogQHBhcmFtIHNjcm9sbFRvRmVlZGJhY2tcbiAqIEBwYXJhbSBtc1xuICovXG5leHBvcnQgY29uc3Qgc2V0Rm9jdXNPbkZlZWRiYWNrID0gKGlkPzogc3RyaW5nLCBzY3JvbGxUb0ZlZWRiYWNrPzogYm9vbGVhbiwgbXM/OiBudW1iZXIpID0+IHtcblxuICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgIGxldCBmZWVkYmFjazogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihgIyR7aWR9YClbMF07XG5cbiAgICBpZiAoZmVlZGJhY2spIHtcblxuICAgICAgaWYgKHNjcm9sbFRvRmVlZGJhY2spIHtcblxuICAgICAgICBzY3JvbGxUb0VsZW1lbnQoZmVlZGJhY2suZ2V0QXR0cmlidXRlKCdpZCcpKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGZlZWRiYWNrRm9jdXNhYmxlOiBIVE1MRWxlbWVudCA9IGZlZWRiYWNrLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjay1mb2N1c2FibGUnKTtcblxuICAgICAgaWYgKGZlZWRiYWNrRm9jdXNhYmxlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIC8vIElsIGRlbGF5IHNlcnZhIGFkIGFzcGV0dGFyZSBjaGUgdGVybWluaSBsbyBzY3JvbGxcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBmZWVkYmFja0ZvY3VzYWJsZS5mb2N1cygpLCA1MDApO1xuICAgICAgfVxuICAgIH1cbiAgfSwgbXMgfHwgMTAwKTtcbn07XG4iLCI8aW5haWwtbG9hZGVyIFtzaG93XT1cInNob3dMb2FkZXJcIj48L2luYWlsLWxvYWRlcj5cbjxkZWJ1Zy1wcmUgKm5nSWY9XCJzaG93U3RhdGVcIj5baW5haWwtbGF5b3V0XTxicj5cbiAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2NvbmZpZydcIiBbcHJvcGVydGllXT1cImNvbmZpZ1wiPjwvc3RhdGUtcHJvcGVydGllPlxuICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCInaW5pemlhbGl6emF6aW9uZVRlcm1pbmF0YSdcIiBbcHJvcGVydGllXT1cImluaXppYWxpenphemlvbmVUZXJtaW5hdGFcIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2NhcmljYW1lbnRvUmlzb3JzZUVzdGVybmVUZXJtaW5hdG8nXCIgW3Byb3BlcnRpZV09XCJjYXJpY2FtZW50b1Jpc29yc2VFc3Rlcm5lVGVybWluYXRvXCI+PC9zdGF0ZS1wcm9wZXJ0aWU+XG4gIDxzdGF0ZS1wcm9wZXJ0aWUgW2xhYmVsXT1cIidjYXJpY2FtZW50b1NjcmlwdEVzdGVybmlUZXJtaW5hdG8nXCIgW3Byb3BlcnRpZV09XCJjYXJpY2FtZW50b1NjcmlwdEVzdGVybmlUZXJtaW5hdG9cIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2l0c1JlYWR5J1wiIFtwcm9wZXJ0aWVdPVwiaXRzUmVhZHkoKVwiPjwvc3RhdGUtcHJvcGVydGllPlxuICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCInYnJlYWRjcnVtYkVzdGVybm8nXCIgW3Byb3BlcnRpZV09XCJicmVhZGNydW1iRXN0ZXJub1wiPjwvc3RhdGUtcHJvcGVydGllPlxuICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCIncGFnaW5hQ29ycmVudGUnXCIgW3Byb3BlcnRpZV09XCJwYWdpbmFDb3JyZW50ZVwiPjwvc3RhdGUtcHJvcGVydGllPlxuPC9kZWJ1Zy1wcmU+XG48ZGl2IGNsYXNzPVwiaW5haWwtbGF5b3V0XCI+XG4gIDxkaXYgKm5nSWY9XCIhaXRzUmVhZHkoKVwiICNwbGVhc2VXYWl0Q29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwbGVhc2VXYWl0RXN0ZXJubzsgZWxzZSBkZWZhdWx0UGxlYXNlV2FpdFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BsZWFzZS13YWl0XVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRQbGVhc2VXYWl0PlxuICAgICAgPGRpdiBjbGFzcz1cInBsZWFzZS13YWl0XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWc/LmFwcE5hbWVcIiBjbGFzcz1cImFwcC1uYW1lXCIgW2lubmVySFRNTF09XCJjb25maWcuYXBwTmFtZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2PkNhcmljYW1lbnRvLi4uPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiXG4gICAgICAgW2hpZGRlbl09XCIhaXRzUmVhZHkoKVwiXG4gICAgICAgW25nQ2xhc3NdPVwieyd3aWRlJyA6IGNvbmZpZyAmJiBjb25maWcuY29udGFpbmVyV2lkZX1cIj5cblxuICAgIDxoZWFkZXIgaWQ9XCJpbmFpbC1oZWFkZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJpbml6aWFsaXp6YXppb25lVGVybWluYXRhXCJcbiAgICAgICAgICAgIFtjb25maWddPVwiaGVhZGVyQ29uZmlnXCJcbiAgICAgICAgICAgIFtsb2dvSGVhZGVySHRtbF09XCJsb2dvSGVhZGVySHRtbFwiXG4gICAgICAgICAgICBbbmF2aWdhemlvbmVQcmluY2lwYWxlSHRtbF09XCJuYXZpZ2F6aW9uZVByaW5jaXBhbGVIdG1sXCJcbiAgICAgICAgICAgIFtoZWFkZXJTZWNvbmRhcmlvSHRtbF09XCJoZWFkZXJTZWNvbmRhcmlvSHRtbFwiXG4gICAgICAgICAgICBbaGVhZGVyU2Vjb25kYXJpb0RhdGFdPVwiaGVhZGVyU2Vjb25kYXJpb0RhdGFcIlxuICAgICAgICAgICAgW3JlbG9hZF09XCJyZWxvYWRcIlxuICAgICAgICAgICAgW3Nob3dTdGF0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbZGV0ZWN0Q2hhbmdlXT1cInRoaXMuZGV0ZWN0Q2hhbmdlXCJcbiAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwibG9nT25Db25zb2xlXCJcbiAgICAgICAgICAgIChsb2cpPVwiZW1pdCgkZXZlbnQpXCI+XG4gICAgICA8bmctY29udGFpbmVyIGxvZ28taGVhZGVyPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbG9nby1oZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyIG5hdmlnYXppb25lLXByaW5jaXBhbGU+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuYXZpZ2F6aW9uZS1wcmluY2lwYWxlXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciBoZWFkZXItc2Vjb25kYXJpbz5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hlYWRlci1zZWNvbmRhcmlvXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvaGVhZGVyPlxuXG4gICAgPCEtLSBCcmVhZGNydW1iIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgYnJlYWRjcnVtYnMgaW50ZXJuZXQtYnJlYWRjcnVtYlwiXG4gICAgICAgICBhcmlhLWxhYmVsPVwiQnJlYWRjcnVtYlwiXG4gICAgICAgICAjYnJlYWRjcnVtYkNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZGNydW1iRXN0ZXJub1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYnJlYWRjcnVtYl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxpbmFpbC1icmVhZGNydW1iICpuZ0lmPVwiIWJyZWFkY3J1bWJFc3Rlcm5vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwidGhpcy5sb2dPbkNvbnNvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cInBhZ2luYUNvcnJlbnRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsb2cpPVwiZW1pdCgkZXZlbnQpXCI+XG4gICAgICA8L2luYWlsLWJyZWFkY3J1bWI+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5haWwtdHJpZ2dlci1zbGlkZXItbWVudS1idXR0b24gKGNsaWNrKT1cInRvZ2dsZU5hdlNlY29uZGFyaWEuZW1pdCgpXCI+PC9pbmFpbC10cmlnZ2VyLXNsaWRlci1tZW51LWJ1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cblxuICAgICAgPGluYWlsLW5hdmlnYXppb25lLXNlY29uZGFyaWEgW3RvZ2dsZV09XCJ0b2dnbGVOYXZTZWNvbmRhcmlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwibG9nT25Db25zb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2cpPVwiZW1pdCgkZXZlbnQpXCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBzaWRlYmFyLXN1cGVyaW9yZT5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2lkZWJhci1zdXBlcmlvcmVdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIHNpZGViYXItaW5mZXJpb3JlPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzaWRlYmFyLWluZmVyaW9yZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L2luYWlsLW5hdmlnYXppb25lLXNlY29uZGFyaWE+XG5cbiAgICAgIDxtYWluICpuZ0lmPVwiaW5pemlhbGl6emF6aW9uZVRlcm1pbmF0YVwiXG4gICAgICAgICAgICBpZD1cImNvbnRlbnV0b3ByaW5jaXBhbGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTggY29sLWxnLTlcIj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYWluLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9tYWluPlxuXG4gICAgPC9kaXY+XG4gICAgPGluYWlsLWZvb3RlciAqbmdJZj1cImluaXppYWxpenphemlvbmVUZXJtaW5hdGFcIlxuICAgICAgICAgICAgICAgICAgW2NsaWVudElkXT1cImNvbmZpZz8uY2xpZW50SWRcIlxuICAgICAgICAgICAgICAgICAgW2FwaUdhdGV3YXlVcmxdPVwiY29uZmlnPy5hcGlHYXRld2F5VXJsXCJcbiAgICAgICAgICAgICAgICAgIFt1c2VEZWZhdWx0XT1cImNvbmZpZz8udXNlRGVmYXVsdEh0bWxcIlxuICAgICAgICAgICAgICAgICAgW3JlY3VwZXJvQXV0b21hdGljb0h0bWxdPVwiY29uZmlnPy5yZWN1cGVyb0F1dG9tYXRpY29IdG1sXCJcbiAgICAgICAgICAgICAgICAgIFtodG1sXT1cImZvb3Rlckh0bWxcIlxuICAgICAgICAgICAgICAgICAgW3VybF09XCJjb25maWc/LmZvb3RlclVybFwiXG4gICAgICAgICAgICAgICAgICBbcmVsb2FkXT1cInJlbG9hZFwiXG4gICAgICAgICAgICAgICAgICBbZGV0ZWN0Q2hhbmdlXT1cInRoaXMuZGV0ZWN0Q2hhbmdlXCJcbiAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwidGhpcy5sb2dPbkNvbnNvbGVcIlxuICAgICAgICAgICAgICAgICAgW3Nob3dTdGF0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAobG9nKT1cImVtaXQoJGV2ZW50KVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9pbmFpbC1mb290ZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
649
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5haWwtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9sYXlvdXQvaW5haWwtbGF5b3V0L2luYWlsLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvbGF5b3V0L2luYWlsLWxheW91dC9pbmFpbC1sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQU9MLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLGFBQWEsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxhQUFhLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RJLE9BQU8sRUFBQywwQkFBMEIsRUFBRSx3QkFBd0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBR3hGLE9BQU8sRUFBYyxhQUFhLEVBQVcsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxF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QUUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0hlYWRlckNvbmZpZ3VyYXRpb25zfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge05hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QmFzZUNvbXBvbmVudCwgQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWX0gZnJvbSAnLi4vLi4vYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtpc0Fic29sdXRlLCBpc0hpZGRlbiwgaXNOb3RCbGFua09yTnVsbCwgc2Nyb2xsVG9FbGVtZW50LCBzY3JvbGxUb3AsIHN0YXJ0V2l0aFNsYXNofSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9jb21tb24ub3BlcmF0b3JzJztcbmltcG9ydCB7Z2V0V2Via2l0RXh0ZXJuYWxSZXNvdXJjZXMsIGdldFdlYmtpdEV4dGVybmFsU2NyaXB0c30gZnJvbSAnLi93ZWJraXQtcmVzb3VyY2VzJztcbmltcG9ydCB7RXh0ZXJuYWxSZXNvdXJjZSwgRXh0ZXJuYWxTY3JpcHR9IGZyb20gJy4vc3RhdGljLXJlc291cmNlcyc7XG5pbXBvcnQge0FwcFBhZ2V9IGZyb20gJy4uL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQnO1xuaW1wb3J0IHtHZXRTdHJpbmdGbiwgTWVudUNvbXBvbmVudCwgTWVudUl0ZW19IGZyb20gJy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RVJST1JfQlROX0NMQVNTfSBmcm9tICcuLi8uLi91eC9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQge2lzRnVuY3Rpb259IGZyb20gJ3J4anMvaW50ZXJuYWwvdXRpbC9pc0Z1bmN0aW9uJztcbmltcG9ydCB7bGFzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FHV1JlcXVlc3QsIEFnd1Jlc3RTZXJ2aWNlLCBDaGVja3Nlc3Npb25SZXNwb25zZSwgR2xvYmFsQ29uZmlnUmVzcG9uc2UsIEhGUmVzcG9uc2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2Fndy1yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtIZWFkZXJTZWNvbmRhcmlvRGF0YX0gZnJvbSAnLi4vaGVhZGVyLXNlY29uZGFyaW8vaGVhZGVyLXNlY29uZGFyaW8uY29tcG9uZW50JztcbmltcG9ydCB7TkdfSU5BSUxfQ09NTU9OX0NPTkZJRywgTmdJbmFpbENvbW1vbkNvbmZpZ30gZnJvbSBcIi4uLy4uLy4uLy4uL25nLWluYWlsLWNvbW1vbi5jb25maWdcIjtcblxudHlwZSBSZXNvdXJjZVR5cGUgPSAnc2NyaXB0JyB8ICdsaW5rJztcblxuaW50ZXJmYWNlIExvYWRlZFJlc291cmNlIHtcblxuICBsb2FkZWQ6IGJvb2xlYW4sXG4gIHJlc291cmNlOiBFeHRlcm5hbFJlc291cmNlIHwgRXh0ZXJuYWxTY3JpcHRcbn1cblxuaW50ZXJmYWNlIExvYWRlZFJlc291cmNlUmVzcG9uc2Uge1xuXG4gIHJlc291cmNlOiBzdHJpbmdcbiAgbG9hZGVkOiBib29sZWFuLFxuICBzdGF0dXM6IHN0cmluZ1xufVxuXG5leHBvcnQgZW51bSBTZXRGb2N1c1N0cmF0ZWd5IHtcblxuICAvKiouXG4gICAqIEluZGljYSBjaGUgaWwgZm9jdXMgZG92cmEnIGVzc2VyZSBpbXBvc3RhdG8gc3VsIGZlZWRiYWNrIGdsb2JhbGUuXG4gICAqL1xuICBPbkdsb2JhbEZlZWRiYWNrID0gMCxcblxuICAvKipcbiAgICogSW5kaWNhIGNoZSBpbCBmb2N1cyBkb3ZyYScgZXNzZXJlIGltcG9zdGF0byBzdWwgcHJpbW8gZWxlbWVudG8gaW4gcGFnaW5hIGFuZGF0byBpbiBlcnJvcmUuXG4gICAqL1xuICBPbkZpcnN0UGFnZUVycm9yID0gMVxufVxuXG5leHBvcnQgY2xhc3MgSW5haWxMYXlvdXRDb25maWd1cmF0aW9ucyB7XG5cbiAgLyoqXG4gICAqIEluZGljYSBpbCBub21lIGRlbGwnYXBwbGljYXppb25lLlxuICAgKi9cbiAgYXBwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSWRlbnRpZmljYXRpdm8gZGVsbCdhcHBsaWNhemlvbmUgY29ycmVudGUgaW4gYWNjb3Jkb1xuICAgKiBjb24gbCdBR1cuXG4gICAqL1xuICBjbGllbnRJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU2UgdHJ1ZSBpbXBvc3RhIGF1dG9tYXRpY2FtZW50ZSBpbCBmb2N1cyBzdWwgcHJpbW8gZWxlbWVudG9cbiAgICogZGkgaW5wdXQgYW5kYXRvIGluIGVycm9yZS5cbiAgICovXG4gIGZvY3VzT25FcnJvcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNlIHRydWUgZWZmZXR0dWEgdW5vIHNjcm9sbGluZyBhbGwnZWxlbWVudG9cbiAgICogYW5kYXRvIGluIGVycm9yZSBwcmltYSBkaSBpbXBvc3RhcmUgaWwgZm9jdXMuXG4gICAqL1xuICBzY3JvbGxUb0Vycm9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGV0ZXJtaW5hIHN1IHF1YWxlIGVsZW1lbnRvIGltcG9zdGFyZSBpbCBmb2N1cyBhbCB2ZXJpZmljYXJzaVxuICAgKiBkaSB1biBlcnJvcmUuXG4gICAqL1xuICBzZXRGb2N1c1N0cmF0ZWd5PzogU2V0Rm9jdXNTdHJhdGVneSA9IFNldEZvY3VzU3RyYXRlZ3kuT25HbG9iYWxGZWVkYmFjaztcblxuICAvKipcbiAgICogU2UgdHJ1ZSBhbGxhIGZpbmUgZGkgdW4gZXZlbnRvIGRpIHJvdXRpbmcgZWZmZXR0dWEgdW5vIHNjcm9sbCBpbiBjaW1hIGFsbGEgcGFnaW5hLlxuICAgKi9cbiAgc2Nyb2xsVG9wQXROYXZpZ2F0aW9uRW5kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2UgdHJ1ZSBwZXJtZXR0ZSBhbCBsYXlvdXQgZGkgb2NjdXBhcmUgbCdpbnRlcmEgbGFyZ2hlenphIGRlbGxvIHNjaGVybW9cbiAgICovXG4gIGNvbnRhaW5lcldpZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZSB0cnVlIGFiaWxpdGEgaWwgY2FyaWNhbWVudG8gYXV0b21hdGljbyBkZWxsZSByaXNvcnNlIGVzdGVybmUgZGFsbGEgY2RuIElOQUlMLlxuICAgKiBWZW5nb25vIGNyZWF0aSBlIGluaWV0dGF0aSBuZWwgdGFnIDxoZWFkPiBpIHRhZyA8bGluaz5cbiAgICogaW5lcmVudGkgbGUgcmlzb3JzZSBlc3Rlcm5lIG5lY2Vzc2FyaWUgYWxsYVxuICAgKiBjb3JyZXR0YSB2aXN1YWxpenphemlvbmUgZGVsbCdhcHBsaWNhemlvbmUuXG4gICAqIFNlIG5vbiBwYXNzYXRlIGluIGlucHV0IGFsIGNvbXBvbmVudGUgdHJhbWl0ZSBsYSBwcm9wcmlldGEnICdleHRlcm5hbFJlc291cmNlcydcbiAgICogdmVuZ29ubyBjYXJpY2F0ZSBsZSByaXNvcnNlIGRpIGRlZmF1bHQuXG4gICAqIExlIHJpc29yc2UgZGkgZGVmYXVsdCB2ZW5nb25vIHJlY3VwZXJhdGUgZGFsIGRvbWluaW9cbiAgICogc3BlY2lmaWNhdG8gdHJhbWl0ZSBsYSBwcm9wcmlldGEnICdjZG5FbmRwb2ludCcuXG4gICAqL1xuICBjYXJpY2FtZW50b0RpbmFtaWNvUmlzb3JzZUVzdGVybmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZSB0cnVlIGFiaWxpdGEgaWwgY2FyaWNhbWVudG8gYXV0b21hdGljbyBkZWdsaSBzY3JpcHQgZXN0ZXJuZSBkYWxsYSBjZG4gSU5BSUwuXG4gICAqIFZlbmdvbm8gY3JlYXRpIGUgaW5pZXR0YXRpIG5lbCB0YWcgPGhlYWQ+IGkgdGFnIDxzY3JpcHQ+XG4gICAqIGluZXJlbnRpIGdsaSBzY3JpcHQgbmVjZXNzYXJpIGFsbGFcbiAgICogY29ycmV0dGEgdmlzdWFsaXp6YXppb25lIGRlbGwnYXBwbGljYXppb25lLlxuICAgKiBTZSBub24gcGFzc2F0aSBpbiBpbnB1dCBhbCBjb21wb25lbnRlIHRyYW1pdGUgbGEgcHJvcHJpZXRhJyAnZXh0ZXJuYWxTY3JpcHRzJ1xuICAgKiB2ZW5nb25vIGNhcmljYXRlIGdsaSBzY3JpcHQgZGkgZGVmYXVsdC5cbiAgICogR2xpIHNjcmlwdCBkaSBkZWZhdWx0IHZlbmdvbm8gcmVjdXBlcmF0aSBkYWwgZG9taW5pb1xuICAgKiBzcGVjaWZpY2F0byB0cmFtaXRlIGxhIHByb3ByaWV0YScgJ2NkbkVuZHBvaW50Jy5cbiAgICovXG4gIGNhcmljYW1lbnRvRGluYW1pY29TY3JpcHRFc3Rlcm5pPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5kcG9pbnQgZGVsbGEgY2RuLlxuICAgKiAoZS5nLiBodHRwczovL2NkbmNvbGwuaW5haWxjbG91ZC5pdClcbiAgICogU2Ugbm9uIHNwZWNpZmljYXRvIGUgc2UgaWwgdmFsb3JlIGRlbGxhIHByb3ByaWV0YScgJ3JlY3VwZXJvQXV0b21hdGljb0NkbkVuZHBvaW50JyBlJyB0cnVlXG4gICAqIHZpZW5lIHJlY3VwZXJhdG8gYXV0b21hdGljYW1lbnRlIGNvbnRhdHRhbmRvIGlsIHNlcnZpemlvICcvYXBpL2dsb2JhbC1jb25maWcnIGVzcG9zdG8gZGEgQUdXLFxuICAgKiBhbHRyaW1lbnRpIHZpZW5lIHV0aWxpenphdG8gaSBkb21pbm8gY29ycmVudGUuXG4gICAqL1xuICBjZG5FbmRwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogUmVjdXBlcmEgYXV0b21hdGljYW1lbnRlIGwnZW5kcG9pbnQgZGVsbGEgY2RuLlxuICAgKiBMJ2VuZHBvaW50IHZpZW5lIHJlY3VwZXJhdG8gY29udGF0dGFuZG8gbCdBR1cgYWxsJ2luZGlyaXp6b1xuICAgKiAnL2FwaS9nbG9iYWwtY29uZmlnJy5cbiAgICogSWwgcmVjdXBlcm8gZGVsbCdlbmRwb2ludCBub24gdmllbmUgZWZmZXR0dWF0byBzZSBlJyBzdGF0YVxuICAgKiBpbXBvc3RhdGEgbGEgcHJvcHJpZXRhJyBkaSBjb25maWd1cmF6aW9uZSAnY2RuRW5kcG9pbnQnLlxuICAgKiBMJ2FwaSBnYXRld2F5IHZpZW5lIGNvbnRhdHRhdG8gcHJlbmRlbmRvIGluIGNvbnNpZGVyYXppb25lXG4gICAqIHF1YW50byBzcGVjaWZpY2F0byB0cmFtaXRlIGxhIHByb3ByaWV0YScgZGkgY29uZmlndXJhemlvbmVcbiAgICogYXBpR2F0ZXdheVVybC5cbiAgICogKi9cbiAgcmVjdXBlcm9BdXRvbWF0aWNvQ2RuRW5kcG9pbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUZW1wbyBkaSBhdHRlc2EgaW4gbWlsbGlzZWNvbmRpXG4gICAqIGRlbCBjYXJpY2FtZW50byB0cmEgZ2xpIHNjcmlwdC5cbiAgICogSWwgdmFsb3JlIGRpIGRlZmF1bHQgZScgMzAwLlxuICAgKi9cbiAgc2NyaXB0TG9hZGluZ0RlZWxheT86IG51bWJlcjtcblxuICAvKipcbiAgICogU2UgdHJ1ZSB2ZW5nb25vIHJlY3VwZXJhdGkgYXV0b21hdGljYW1lbnRlIGkgZnJhbW1lbnRpIGh0bWwgZGkgbG9nbywgbmF2aWdhemlvbmUgcHJpbmNpcGFsZSwgaGVhZGVyIHNlY29uZGFyaW8gZSBmb290ZXIuXG4gICAqIEkgZnJhbW1lbnRpIGh0bWwgdmVycmFubm8gcmVjdXBlcmF0aSBhZ2xpIGluZGlyaXp6aSBpbmRpY2F0aSB0cmFtaXRlIGxlIHByb3ByaWV0YScgZGkgY29uZmlndXJhemlvbmUgbG9nb0hlYWRlclVybCwgbmF2aWdhemlvbmVQcmluY2lwYWxlVXJsXG4gICAqIGhlYWRlclNlY29uZGFyaW9VcmwgZSBmb290ZXJVcmwuXG4gICAqIFNlIGdsaSBpbmRpcml6emkgbm9uIHZlbmdvbm8gaW5kaWNhdGkgaSBmcmFtbWVudGkgaHRtbCB2ZXJyYW5ubyByZWN1cGVyYXRpIGF1dG9tYXRpY2FtZW50ZSBkYWwgY29tcG9uZW50ZSBjb250YXR0YW5kb1xuICAgKiBpIHNlcnZpemkgJ0hlYWRlckZvb3Rlci1NU1B1YmxpY1ZlcnNpb24nIGUgJ0hlYWRlckZvb3Rlci1NU1ByaXZhdGVWZXJzaW9uJyBlc3Bvc3RpIHN1IEFHVy5cbiAgICogU2UgZmFsc2UgaSBmcmFtbWVudGkgaHRtbCBkb3ZyYW5ubyBlc3NlcmUgcGFzc2F0aSBpbiBpbnB1dCBhbCBjb21wb25lbnRlIHRyYW1pdGUgbGUgcHJvcHJpZXRhJyBkaSBpbnB1dCBsb2dvSGVhZGVySHRtbCxcbiAgICogbmF2aWdhemlvbmVQcmluY2lwYWxlSHRtbCwgaGVhZGVyU2Vjb25kYXJpb0h0bWwgZSBmb290ZXJIdG1sIG8gaW5zZXJpdGkgbmVsIGNvbnRlbnQgZGVsIGNvbXBvbmVudGUgYXR0cmF2ZXJzbyBnbGkgYXBwb3NpdGkgc2VsZXR0b3JpIGRpIGNvbnRlbnV0by5cbiAgICovXG4gIHJlY3VwZXJvQXV0b21hdGljb0h0bWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVcmwgZGEgY3VpIHJlY3VwZXJhcmUgaWwgZnJhbW1lbnRvIGh0bWwgZGVsbGEgcHJpbWEgaW50ZXN0YXppb25lIGRpIHBhZ2luYSAocXVlbGxhIGNvbnRlbmVudGUgaWwgbG9nbykuXG4gICAqIFNlIHBhc3NhdG8gaW5pYmlzY2UgaWwgbWVjY2FuaXNtbyBkaSByZWN1cGVybyBhdXRvbWF0aWNvIGRhIEFHVy5cbiAgICogU2Ugbm9uIHNwZWNpZmljYXRvIGlsIGZyYW1tZW50byBodG1sIHZlcnJhJyByZWN1cGVyYXRvIGF1dG9tYXRpY2FtZW50ZSBkYWwgY29tcG9uZW50ZSBjb250YXR0YW5kbyBpbCBzZXJ2aXppbyAnSGVhZGVyRm9vdGVyLU1TUHVibGljVmVyc2lvbicuXG4gICAqIE5lbCBjYXNvIGluIGN1aSBub24gc2lhIHBvc3NpYmlsZSByZWN1cGVyYXJlIGlsIGZyYW1tZW50byBsJ2h0bWwgdmVycmEnIHZpc3VhbGl6emF0byBxdWVsbG8gZGkgZGVmYXVsdC5cbiAgICovXG4gIGxvZ29IZWFkZXJVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVybCBkYSBjdWkgcmVjdXBlcmFyZSBpbCBmcmFtbWVudG8gaHRtbCBkZWxsYSBuYXZpZ2F6aW9uZSBwcmluY2lwYWxlLlxuICAgKiBTZSBwYXNzYXRvIGluaWJpc2NlIGlsIG1lY2NhbmlzbW8gZGkgcmVjdXBlcm8gYXV0b21hdGljbyBkYSBBR1cuXG4gICAqIFNlIG5vbiBzcGVjaWZpY2F0byBpbCBmcmFtbWVudG8gaHRtbCB2ZXJyYScgcmVjdXBlcmF0byBhdXRvbWF0aWNhbWVudGUgZGFsIGNvbXBvbmVudGUgY29udGF0dGFuZG8gaSBzZXJ2aXppICdIZWFkZXJGb290ZXItTVNQdWJsaWNWZXJzaW9uJ1xuICAgKiBlICdIZWFkZXJGb290ZXItTVNQcml2YXRlVmVyc2lvbicuXG4gICAqIE5lbCBjYXNvIGluIGN1aSBub24gc2lhIHBvc3NpYmlsZSByZWN1cGVyYXJlIGlsIGZyYW1tZW50byBodG1sIHZlcnJhJyB2aXN1YWxpenphdG8gcXVlbGxvIGRpIGRlZmF1bHQuXG4gICAqL1xuICBuYXZpZ2F6aW9uZVByaW5jaXBhbGVVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVybCBkYSBjdWkgcmVjdXBlcmFyZSBpbCBmcmFtbWVudG8gaHRtbCBkZWwgaGVhZGVyIHNlY29uZGFyaW9cbiAgICogU2UgcGFzc2F0byBpbmliaXNjZSBpbCBtZWNjYW5pc21vIGRpIHJlY3VwZXJvIGF1dG9tYXRpY28gZGEgQUdXLlxuICAgKiBTZSBub24gc3BlY2lmaWNhdG8gaWwgZnJhbW1lbnRvIGh0bWwgdmVycmEnIHJlY3VwZXJhdG8gYXV0b21hdGljYW1lbnRlIGRhbCBjb21wb25lbnRlIGNvbnRhdHRhbmRvIGlsIHNlcnZpemlvICdIZWFkZXJGb290ZXItTVNQcml2YXRlVmVyc2lvbicuXG4gICAqIE5lbCBjYXNvIGluIGN1aSBub24gc2lhIHBvc3NpYmlsZSByZWN1cGVyYXJlIGlsIGZyYW1tZW50byBodG1sIHZlcnJhJyB2aXN1YWxpenphdG8gcXVlbGxvIGRpIGRlZmF1bHQuXG4gICAqL1xuICBoZWFkZXJTZWNvbmRhcmlvVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcmwgZGEgY3VpIHJlY3VwZXJhcmUgaWwgZnJhbW1lbnRvIGh0bWwgZGVsIGZvb3Rlci5cbiAgICogU2UgcGFzc2F0byBpbmliaXNjZSBpbCBtZWNjYW5pc21vIGRpIHJlY3VwZXJvIGF1dG9tYXRpY28gZGEgQUdXLlxuICAgKiBTZSBub24gc3BlY2lmaWNhdG8gaWwgZnJhbW1lbnRvIGh0bWwgdmVycmEnIHJlY3VwZXJhdG8gYXV0b21hdGljYW1lbnRlIGRhbCBjb21wb25lbnRlIGNvbnRhdHRhbmRvIGlsIHNlcnZpemlvICdIZWFkZXJGb290ZXItTVNQdWJsaWNWZXJzaW9uJy5cbiAgICogTmVsIGNhc28gaW4gY3VpIG5vbiBzaWEgcG9zc2liaWxlIHJlY3VwZXJhcmUgaWwgZnJhbW1lbnRvIGwnaHRtbCB2ZXJyYScgdmlzdWFsaXp6YXRvIHF1ZWxsbyBkaSBkZWZhdWx0LlxuICAgKi9cbiAgZm9vdGVyVXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGb3J6YSBpbCBjb21wb25lbnRlIGEgdXRpbGl6emFyZSBpIGZyYW1tZW50aSBodG1sIGRpIGRlZmF1bHQgcGVyIGhlYWRlciBlIGZvb3RlciBzZSByZWN1cGVyb0F1dG9tYXRpY29IdG1sIGUnIHN0YXRhIHZhbG9yaXp6YXRhIGEgZmFsc2UuXG4gICAqIEluIHF1ZXN0byBjYXNvLCBwZXIgdmlzdWFsaXp6YXJlIGlsIGZyYW1tZW50byBodG1sIGRpIGRlZmF1bHQgaW5lcmVudGUgbCdoZWFkZXIgc2Vjb25kYXJpbyxcbiAgICogc2FyYScgbmVjZXNzYXJpbyB2YWxvcml6emFyZSBsYSBwcm9wcmlldGEnIGRpIGlucHV0ICdoZWFkZXJTZWNvbmRhcmlvRGF0YScuXG4gICAqIFZhbG9yaXp6YXJlIG8gbWVubyBsYSBwcm9wcmlldGEnICdoZWFkZXJTZWNvbmRhcmlvRGF0YScgaW5vbHRyZSBkZXRlcm1pbmVyYScgc2UgdmlzdWFsaXp6YXJlIGlsIGZyYW1tZW50byBodG1sIGRpIGRlZmF1bHRcbiAgICogZGVsbGEgbmF2aWdhemlvbmUgcHJpbmNpcGFsZSBpbmVyZW50ZSBsJ3V0ZW50ZSBhdXRlbnRpY2F0byBvIHF1ZWxsbyBpbmVyZW50ZSBsJ3V0ZW50ZSBub24gYXV0ZW50aWNhdG9cbiAgICogKEluIGNhc28gZGkgdXRlbnRlIG5vbiBhdXRlbnRpY2F0byBpbCBsYXlvdXQgcHJldmlzdG8gcGVyIGxlIGFwcGxpY2F6aW9uaSBJTkFJTCBub24gbW9zdHJhIGwnaGVhZGVyIHNlY29uZGFyaW8pLlxuICAgKi9cbiAgdXNlRGVmYXVsdEh0bWw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBVcmwgYSBjdWkgY29udGF0dGFyZSBsJ0FHVyBwZXIgaWwgcmVjdXBlcm8gYXV0b21hdGljbyBkZWkgZnJhbW1lbnRpIGh0bWwuXG4gICAqIFBlciBpbCByZWN1cGVybyB2ZXJyYW5ubyBjb250YXR0YXRpIGkgc2Vydml6aSAnSGVhZGVyRm9vdGVyLU1TUHVibGljVmVyc2lvbicgZSAnSGVhZGVyRm9vdGVyLU1TUHJpdmF0ZVZlcnNpb24nLlxuICAgKiBTZSBub24gc3BlY2lmaWNhdG8gdmVycmEnIHV0aWxpenphdG8gbCdpbmRpcml6em8gcmVsYXRpdm8gL2FwaS5cbiAgICovXG4gIGFwaUdhdGV3YXlVcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSWwgY29tcG9uZW50ZSByZW5kZXJpenphIGwnaW50ZXJvIGxheW91dCBkZWxsJ2FwcGxpY2F6aW9uZS5cbiAqXG4gKiBDb21wcmVuZGUgZ2xpIGVsZW1lbnRpIGNvbXVuaSBhIHR1dHRlIGxlIGFwcGxpY2F6aW9uaSBJTkFJTDpcbiAqIEhlYWRlciwgZm9vdGVyLCBzcGF6aW8gcGVyIGJyZWFkY3J1bWIgZSBtZW51IGxhdGVyYWxlLlxuICpcbiAqIElsIGNvbXBvbmVudGUgaW1wbGVtZW50YSBhdXRvbm9tYW1lbnRlIGlsIG1lY2NhbmlzbW8gcGVyIHJlbmRlcmUgcmVzcG9uc2l2ZSBsJ2FwcGxpY2F6aW9uZSxcbiAqIHNlY29uZG8gcXVhbnRvIHJpY2hpZXN0byBuZWxsZSBsaW5lZSBndWlkYSBJTkFJTC5cbiAqXG4gKiBFJyBwb3NzaWJpbGUgaW5pZXR0YXJlIG5lbCBsYXlvdXQgcmVuZGVyaXp6YXRvIGlsIGNvbnRlbnV0byBwcmluY2lwYWxlIGRlbGxlIHBhZ2luZSxcbiAqIGlsIGJyZWFkY3J1bWIsIGlsIG1lbnUgYXBwbGljYXRpdm8gZWQgaWwgc290dG9tZW51LlxuICpcbiAqIElub2x0cmUgZScgcG9zc2liaWxlIHBlcm1ldHRlcmUgYWwgY29tcG9uZW50ZSBkaSByZWN1cGVyYXJlIGluIGF1dG9tYXRpY28gbGUgaW5mb3JtYXppb25pIGluZXJlbnRpXG4gKiBsJ3V0ZW50ZSBsb2dnYXRvIGUgZ2xpIGh0bWwgdmlzdWFsaXp6YXRpIG5lbGwnaGVhZGVyIGUgbmVsIGZvb3RlclxuICogb3BwdXJlIHBhc3NhcmUgZXNwbGljaXRhbWVudGUgcXVlc3RlIGluZm9ybWF6aW9uaSBkYWxsJ2VzdGVybm8uXG4gKlxuICogSW5maW5lIGUnIHBvc3NpYmlsZSBmYXIgaW5pZXR0YXJlIGFsIGNvbXBvbmVudGUgbGUgcmlzb3JzZSBzdGF0aWNoZSBuZWNlc3NhcmllLFxuICogcGFzc2FuZG9sZSBpbiBpbnB1dCBlIGZhY2VuZG9sZSByZWN1cGVyYXJlIGluIGF1dG9tYXRpY29cbiAqIHNlbnphIGRvdmVybGUgc3BlY2lmaWNhcmUgbmVsbCdpbmRleC5odG1sXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2luYWlsLWxheW91dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmFpbC1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmFpbC1sYXlvdXQuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1ksXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgSW5haWxMYXlvdXRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgaGVhZGVyQ29uZmlnOiBIZWFkZXJDb25maWd1cmF0aW9ucztcblxuICAvKipcbiAgICogU2UgdHJ1ZSB2aXN1YWxpenphIGlsIGxvYWRlclxuICAgKi9cbiAgQElucHV0KClcbiAgc2hvd0xvYWRlcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogT2dnZXR0byBkaSBjb25maWd1cmF6aW9uZSBkZWwgY29tcG9uZW50ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogSW5haWxMYXlvdXRDb25maWd1cmF0aW9ucztcblxuICAvKipcbiAgICogRnJhbW1lbnRvIGh0bWwgZGVsbGEgcHJpbWEgaW50ZXN0YXppb25lIGRpIHBhZ2luYSAocXVlbGxhIGNvbnRlbmVudGUgaWwgbG9nbykgZGEgZmFyIHZpc3VhbGl6emFyZSBhbCBjb21wb25lbnRlLlxuICAgKiBWZXJyYScgdXRpbGl6emF0byBzb2xhbWVudGUgaW4gY2FzbyBkaSByZWN1cGVybyBub24gYXV0b21hdGljby5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGxvZ29IZWFkZXJIdG1sOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZyYW1tZW50byBodG1sIGRlbGxhIG5hdmlnYXppb25lIHByaW5jaXBhbGUgZGEgZmFyIHZpc3VhbGl6emFyZSBhbCBjb21wb25lbnRlLlxuICAgKiBWZXJyYScgdXRpbGl6emF0byBzb2xhbWVudGUgaW4gY2FzbyBkaSByZWN1cGVybyBub24gYXV0b21hdGljby5cbiAgICovXG4gIEBJbnB1dCgpXG4gIG5hdmlnYXppb25lUHJpbmNpcGFsZUh0bWw6IHN0cmluZztcblxuICAvKipcbiAgICogRnJhbW1lbnRvIGh0bWwgZGVsIGhlYWRlciBzZWNvbmRhcmlvIGRhIGZhciB2aXN1YWxpenphcmUgYWwgY29tcG9uZW50ZS5cbiAgICogVmVycmEnIHV0aWxpenphdG8gc29sYW1lbnRlIGluIGNhc28gZGkgcmVjdXBlcm8gbm9uIGF1dG9tYXRpY28uXG4gICAqL1xuICBASW5wdXQoKVxuICBoZWFkZXJTZWNvbmRhcmlvSHRtbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEYXRpIGRhIHZpc3VhbGl6emFyZSBhbGwnaW50ZXJubyBkZWwgaGVhZGVyIHNlY29uZGFyaW8uXG4gICAqIFZlcnJhbm5vIHV0aWxpenphdGkgc29sYW1lbnRlIGluIGNhc28gZGkgcmVjdXBlcm8gbm9uIGF1dG9tYXRpY28uXG4gICAqIFZlbmdvbm8gaWdub3JhdGkgc2UgZScgc3RhdGEgdmFsb3JpenphdGEgbGEgcHJvcHJpZXRhJyBkaSBpbnB1dCAnaGVhZGVyU2Vjb25kYXJpb0h0bWwnLlxuICAgKiBTZSBpbXBvc3RhdGEgYSAndHJ1ZScgbGEgcHJvcHJpZXRhJyAndXNlRGVmYXVsdEh0bWwnIGRlbGwnb2dnZXR0byBkaSBjb25maWd1cmF6aW9uZSBkZWwgY29tcG9uZW50ZSxcbiAgICogbGEgdmFsb3JpenphemlvbmUgZGVsbGEgcHJvcHJpZXRhJyAnaGVhZGVyU2Vjb25kYXJpb0RhdGEnIGRldGVybWluZXJhJyBzZSB2aXN1YWxpenphcmUgaWwgZnJhbW1lbnRvIGh0bWwgZGkgZGVmYXVsdFxuICAgKiBkZWxsYSBuYXZpZ2F6aW9uZSBwcmluY2lwYWxlIGluZXJlbnRlIGwndXRlbnRlIGF1dGVudGljYXRvIG8gcXVlbGxvIGluZXJlbnRlIGwndXRlbnRlIG5vbiBhdXRlbnRpY2F0b1xuICAgKiBlIHNlIHZpc3VhbGl6emFyZSBvIG1lbm8gaWwgZnJhbW1lbnRvIGh0bWwgZGkgZGVmYXVsdCBpbmVyZW50ZSBsJ2hlYWRlciBzZWNvbmRhcmlvLlxuICAgKi9cbiAgQElucHV0KClcbiAgaGVhZGVyU2Vjb25kYXJpb0RhdGE6IEhlYWRlclNlY29uZGFyaW9EYXRhO1xuXG4gIC8qKlxuICAgKiBGcmFtbWVudG8gaHRtbCBkZWwgZm9vdGVyIGRhIGZhciB2aXN1YWxpenphcmUgYWwgY29tcG9uZW50ZS5cbiAgICogVmVycmEnIHV0aWxpenphdG8gc29sYW1lbnRlIGluIGNhc28gZGkgcmVjdXBlcm8gbm9uIGF1dG9tYXRpY28uXG4gICAqL1xuICBASW5wdXQoKVxuICBmb290ZXJIdG1sOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3RhIGRlbGxlIHJpc29yc2UgZXN0ZXJuZSBkYSB1dGlsaXp6YXJlIHBlciBsYSBjb3JyZXR0YSB2aXN1YWxpenphemlvbmUgZGVsIGxheW91dC5cbiAgICogVmVuZ29ubyBjYXJpY2F0ZSBhdXRvbWF0aWNhbWVudGUgc29sbyBzZSBpbCBjb21wb3J0YW1lbnRvIHZpZW5lIGFiaWxpdGF0b1xuICAgKiB0cmFtaXRlIGxhIHByb3ByaWV0YScgZGkgY29uZmlndXJhemlvbmUgJ2NhcmljYW1lbnRvRGluYW1pY29SaXNvcnNlRXN0ZXJuZScuXG4gICAqIFNlIHBlciBsZSByaXNvcnNlIG5vbiB2ZW5nb25vIHNwZWNpZmljYXRpIGRlZ2xpIHVybCBhc3NvbHV0aVxuICAgKiB2ZW5nb25vIHJlY3VwZXJhdGUgaW4gYmFzZSBhIHF1YW50byBzcGVjaWZpY2F0byBuZWxsYSBwcm9wcmlldGEnIGRpIGNvbmZpZ3VyYXppb25lXG4gICAqICdjZG5FbmRwb2ludCcuXG4gICAqIFNlIG5vbiBwYXNzYXRlIHZlcnJhbm5vIGNhcmljYXRlIGxlIHJpc29yc2UgZGkgZGVmYXVsdCBwcmV2aXN0ZSBkYWwgY29tcG9uZW50ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGV4dGVybmFsUmVzb3VyY2VzOiBFeHRlcm5hbFJlc291cmNlW107XG5cbiAgLyoqXG4gICAqIEFsbGEgcmljZXppb25lIGRlbCB2YWxvcmUgZWZmZXR0dWEgaWwgcmljYXJpY2FtZW50byBkZWkgZnJhbW1lbnRpIGh0bWwuXG4gICAqL1xuICBASW5wdXQoKVxuICByZWxvYWQ6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIExpc3RhIGRlZ2xpIHNjcmlwdHMgZXN0ZXJuaSBkYSB1dGlsaXp6YXJlIHBlciBpbCBjb3JyZXR0byBmdW56aW9uYW1lbnRvIGRlbCBsYXlvdXQuXG4gICAqIFZlbmdvbm8gY2FyaWNhdGkgYXV0b21hdGljYW1lbnRlIHNvbG8gc2UgaWwgY29tcG9ydGFtZW50byB2aWVuZSBhYmlsaXRhdG9cbiAgICogdHJhbWl0ZSBsYSBwcm9wcmlldGEgZGkgY29uZmlncmF6aW9uZSBjYXJpY2FtZW50b0RpbmFtaWNvU2NyaXB0RXN0ZXJuaS5cbiAgICogU2UgcGVyIGdsaSBzY3JpcHQgbm9uIHZlbmdvbm8gc3BlY2lmaWNhdGkgZGVnbGkgdXJsIGFzc29sdXRpXG4gICAqIHZlZ29ubyByZWN1cGVyYXRpIGluIGJhc2UgYSBxdWFudG8gc3BlY2lmaWNhdG8gbmVsbGUgcHJvcHJpdGEgZGkgY29uZmlndXJhemlvbmVcbiAgICogY2RuRW5kcG9pbnQgZWQgYXNzZXRzVXJsLlxuICAgKi9cbiAgQElucHV0KClcbiAgZXh0ZXJuYWxTY3JpcHRzOiBFeHRlcm5hbFNjcmlwdFtdO1xuXG4gIEBWaWV3Q2hpbGQoJ2JyZWFkY3J1bWJDb250YWluZXInKVxuICBicmVhZGNydW1iQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3BsZWFzZVdhaXRDb250YWluZXInKVxuICBwbGVhc2VXYWl0Q29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWVudUNvbXBvbmVudClcbiAgbWVudUxpc3Q6IFF1ZXJ5TGlzdDxNZW51Q29tcG9uZW50PjtcblxuICBwYWdpbmFDb3JyZW50ZTogQXBwUGFnZTtcblxuICBicmVhZGNydW1iRXN0ZXJubzogYm9vbGVhbiA9IHRydWU7XG4gIHBsZWFzZVdhaXRFc3Rlcm5vOiBib29sZWFuID0gdHJ1ZTtcblxuICAvLyBHZXN0aW9uZSByaXNvcnNlIGUgc2NyaXB0IGVzdGVybmlcbiAgcmlzb3JzZUVzdGVybmVDb3VudGVyOiBudW1iZXIgPSAwO1xuICByaXNvcnNlRXN0ZXJuZVRvdDogbnVtYmVyO1xuICBzY3JpcHRFc3Rlcm5pQ291bnRlcjogbnVtYmVyID0gMDtcbiAgc2NyaXB0RXN0ZXJuaVRvdDogbnVtYmVyO1xuXG4gIGNhcmljYW1lbnRvUmlzb3JzZUVzdGVybmVUZXJtaW5hdG86IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2FyaWNhbWVudG9TY3JpcHRFc3Rlcm5pVGVybWluYXRvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgaW5pemlhbGl6emF6aW9uZVRlcm1pbmF0YTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHRvZ2dsZU5hdlNlY29uZGFyaWE6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBpdHNSZWFkeSA9ICgpOiBib29sZWFuID0+IHRoaXMuaW5pemlhbGl6emF6aW9uZVRlcm1pbmF0YSA9PT0gdHJ1ZSAmJiB0aGlzLmNhcmljYW1lbnRvUmlzb3JzZUVzdGVybmVUZXJtaW5hdG8gPT09IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICBwcml2YXRlIGFndzogQWd3UmVzdFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIEBJbmplY3QoTkdfSU5BSUxfQ09NTU9OX0NPTkZJRylcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsaWJDb25maWc6IE5nSW5haWxDb21tb25Db25maWcsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuXG4gICAgc3VwZXIoY2RyLCBsaWJDb25maWcpO1xuICAgIHRoaXMubG9nUHJlZml4ID0gJ1tpbmFpbC1sYXlvdXRdJztcbiAgICB0aGlzLmRldGFjaCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlc3Rpb25lIGF1dG9tYXRpY2EgcGVyIGwnaW1wb3N0YXppb25lIGRlbCBmb2N1c1xuICAgKiBzdWdsaSBlcnJvcmlcbiAgICpcbiAgICogQHBhcmFtIGVsZW1cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIG9uQ2xpY2soZWxlbTogSFRNTEVsZW1lbnQpIHtcblxuICAgIC8vIENvbnRyb2xsbyBjaGUgaWwgY2xpY2sgc2lhIHN0YXRvIGZhdHRvXG4gICAgLy8gc3UgdW4gcHVsc2FudGUgY2hlIGltcGxpY2EgbCdpbXBvc3RhemlvbmVcbiAgICAvLyBkZWwgZm9jdXMgc3VsbCdlcnJvcmVcbiAgICBpZiAodGhpcy5jb25maWcuZm9jdXNPbkVycm9yICYmIGlzU2V0Rm9jdXNPbkVycm9yQnV0dG9uKGVsZW0pKSB7XG5cbiAgICAgIHRoaXMuZW1pdERlYnVnKCdFcnJvciBidXR0b24gY2xpY2tlZCcpO1xuICAgICAgc2V0Rm9jdXNPbkVycm9yKHRoaXMuY29uZmlnLnNldEZvY3VzU3RyYXRlZ3ksIHRoaXMuY29uZmlnLnNjcm9sbFRvRXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcblxuICAgIHRoaXMuZW1pdERlYnVnKCdjaGFuZ2VzJyk7XG4gICAgdGhpcy5lbWl0RGVidWcoY2hhbmdlcyk7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXQoKSB7XG5cbiAgICB0aGlzLmVtaXREZWJ1ZygnaW5pdC4uLicpO1xuXG4gICAgdGhpcy5yZW1vdmVOZ1ZlcnNpb24odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZykge1xuXG4gICAgICB0aGlzLmVtaXREZWJ1ZygnQ29uZmlndXJhemlvbmkgSW5haWxMYXlvdXRDb21wb25lbnQnKTtcbiAgICAgIHRoaXMuZW1pdERlYnVnKHRoaXMuY29uZmlnKTtcblxuICAgICAgaWYgKCF0aGlzLmNvbmZpZy5jZG5FbmRwb2ludCAmJiB0aGlzLmNvbmZpZy5yZWN1cGVyb0F1dG9tYXRpY29DZG5FbmRwb2ludCA9PT0gdHJ1ZSkge1xuXG4gICAgICAgIGF3YWl0IHRoaXMucmVjdXBlcmFDZG5FbmRwb2ludCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhlYWRlckNvbmZpZyA9IHtcbiAgICAgICAgY2xpZW50SWQ6IHRoaXMuY29uZmlnLmNsaWVudElkLFxuICAgICAgICBhcGlHYXRld2F5VXJsOiB0aGlzLmNvbmZpZy5hcGlHYXRld2F5VXJsLFxuICAgICAgICBsb2dvSGVhZGVyVXJsOiB0aGlzLmNvbmZpZy5sb2dvSGVhZGVyVXJsLFxuICAgICAgICBuYXZpZ2F6aW9uZVByaW5jaXBhbGVVcmw6IHRoaXMuY29uZmlnLm5hdmlnYXppb25lUHJpbmNpcGFsZVVybCxcbiAgICAgICAgaGVhZGVyU2Vjb25kYXJpb1VybDogdGhpcy5jb25maWcuaGVhZGVyU2Vjb25kYXJpb1VybCxcbiAgICAgICAgdXNlRGVmYXVsdEh0bWw6IHRoaXMuY29uZmlnLnVzZURlZmF1bHRIdG1sLFxuICAgICAgICByZWN1cGVyb0F1dG9tYXRpY29IdG1sOiB0aGlzLmNvbmZpZy5yZWN1cGVyb0F1dG9tYXRpY29IdG1sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5yZWN1cGVyb0F1dG9tYXRpY29IdG1sID09PSB0cnVlKSB7XG5cbiAgICAgIC8vIFRPRE8gYWdnaXVuZ2VyZSBhbGxhIERPQ1xuICAgICAgYXdhaXQgdGhpcy5yZWN1cGVyYUhlYWREYUFHVygpO1xuICAgIH1cblxuICAgIC8vIEluaXppYWxpenphemlvbmUgcmlzb3JzZSBlc3Rlcm5lXG4gICAgaWYgKHRoaXMuY29uZmlnPy5jYXJpY2FtZW50b0RpbmFtaWNvUmlzb3JzZUVzdGVybmUgPT09IHRydWUpIHtcblxuICAgICAgbGV0IGRlZmF1bHRFeHRlcm5hbFJlc291cmNlczogRXh0ZXJuYWxSZXNvdXJjZVtdO1xuXG4gICAgICAvLyBTZSBub24gdmVuZ29ubyBzcGVjaWZpY2F0ZSBkYWxsJ2VzdGVybm8gbGUgcmlzb3JzZSBkYSB1dGlsaXp6YXJlXG4gICAgICAvLyBjYXJpY28gcXVlbGxlIGRpIGRlZmF1bHRcbiAgICAgIGlmICh0aGlzLmV4dGVybmFsUmVzb3VyY2VzID09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIC8vIGRlZmF1bHRFeHRlcm5hbFJlc291cmNlcyA9IHRoaXMubGliQ29uZmlnPy53ZWJraXRWZXJzaW9uICE9IHVuZGVmaW5lZFxuICAgICAgICAvLyAgID8gZ2V0V2Via2l0RXh0ZXJuYWxSZXNvdXJjZXModGhpcy5saWJDb25maWcud2Via2l0VmVyc2lvbilcbiAgICAgICAgLy8gICA6IHdlYmtpdEV4dGVybmFsUmVzb3VyY2VzO1xuXG4gICAgICAgIGRlZmF1bHRFeHRlcm5hbFJlc291cmNlcyA9IGdldFdlYmtpdEV4dGVybmFsUmVzb3VyY2VzKHRoaXMubGliQ29uZmlnLndlYmtpdFZlcnNpb24pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmlzb3JzZUVzdGVybmU6IEV4dGVybmFsUmVzb3VyY2VbXSA9IGRlZmF1bHRFeHRlcm5hbFJlc291cmNlcyA/PyB0aGlzLmV4dGVybmFsUmVzb3VyY2VzO1xuXG4gICAgICB0aGlzLmxvYWRSaXNvcnNlRXN0ZXJuZShyaXNvcnNlRXN0ZXJuZSwgJ2xpbmsnKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhcmljYW1lbnRvUmlzb3JzZUVzdGVybmVUZXJtaW5hdG8gPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIEluaXppYWxpenphemlvbmUgc2NyaXB0IGVzdGVybmlcbiAgICBpZiAodGhpcy5jb25maWc/LmNhcmljYW1lbnRvRGluYW1pY29TY3JpcHRFc3Rlcm5pID09PSB0cnVlKSB7XG5cbiAgICAgIGxldCBkZWZhdWx0RXh0ZXJuYWxTY3JpcHRzOiBFeHRlcm5hbFNjcmlwdFtdO1xuXG4gICAgICBpZiAodGhpcy5leHRlcm5hbFNjcmlwdHMgPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgZGVmYXVsdEV4dGVybmFsU2NyaXB0cyA9IGdldFdlYmtpdEV4dGVybmFsU2NyaXB0cyh0aGlzLmxpYkNvbmZpZy53ZWJraXRWZXJzaW9uKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHNjcmlwdEVzdGVybmk6IEV4dGVybmFsU2NyaXB0W10gPSBkZWZhdWx0RXh0ZXJuYWxTY3JpcHRzID8/IHRoaXMuZXh0ZXJuYWxTY3JpcHRzO1xuXG4gICAgICBhd2FpdCB0aGlzLmxvYWRSaXNvcnNlRXN0ZXJuZShzY3JpcHRFc3Rlcm5pLCAnc2NyaXB0Jyk7XG5cbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLmNhcmljYW1lbnRvU2NyaXB0RXN0ZXJuaVRlcm1pbmF0byA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnPy5zY3JvbGxUb3BBdE5hdmlnYXRpb25FbmQpIHtcblxuICAgICAgdGhpcy5wdXNoKFxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHNjcm9sbFRvcCgpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXREZWJ1ZygnLi4uaW5pemlhbGl6emF6aW9uZSB0ZXJtaW5hdGEhJyk7XG4gICAgdGhpcy5pbml6aWFsaXp6YXppb25lVGVybWluYXRhID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU5nVmVyc2lvbihuYXRpdmVFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuXG4gICAgaWYgKG5hdGl2ZUVsZW1lbnQpIHtcblxuICAgICAgaWYgKG5hdGl2ZUVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZSgnbmctdmVyc2lvbicpKSB7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUobmF0aXZlRWxlbWVudCwgJ25nLXZlcnNpb24nKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVOZ1ZlcnNpb24obmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cbiAgICB0aGlzLmJyZWFkY3J1bWJFc3Rlcm5vID0gdGhpcy5icmVhZGNydW1iQ29udGFpbmVyID8gdGhpcy5icmVhZGNydW1iQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRFbGVtZW50Q291bnQgPiAwIDogZmFsc2U7XG4gICAgdGhpcy5wbGVhc2VXYWl0RXN0ZXJubyA9IHRoaXMucGxlYXNlV2FpdENvbnRhaW5lciA/IGlzTm90QmxhbmtPck51bGwodGhpcy5wbGVhc2VXYWl0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSA6IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMubWVudUxpc3Q/Lmxlbmd0aCA+IDApIHtcblxuICAgICAgdGhpcy5tZW51TGlzdC5mb3JFYWNoKChtZW51OiBNZW51Q29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgdGhpcy5wdXNoKFxuICAgICAgICAgIG1lbnUuY3VycmVudEl0ZW0uc3Vic2NyaWJlKChjdXJyZW50RWxlbWVudDogTWVudUl0ZW0pID0+IHtcblxuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcoJ1ZvY2UgbWVudSBjb3JyZW50ZScpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcoY3VycmVudEVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQgIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICAgICAgdGhpcy5wYWdpbmFDb3JyZW50ZSA9IHRoaXMudG9QYWdpbmFBcHBsaWNhdGl2YShjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1BhZ2luYUFwcGxpY2F0aXZhKGVsZW1lbnQ6IE1lbnVJdGVtKTogQXBwUGFnZSB7XG5cbiAgICByZXR1cm4gZWxlbWVudCAhPSB1bmRlZmluZWRcbiAgICAgID8ge1xuICAgICAgICB0aXRsZTogdGhpcy5nZXRFbGVtZW50TGFiZWwoZWxlbWVudCksXG4gICAgICAgIHVybDogdGhpcy5nZXRFbGVtZW50TGluayhlbGVtZW50KSxcbiAgICAgICAgcGFyZW50OiB0aGlzLnRvUGFnaW5hQXBwbGljYXRpdmEoZWxlbWVudC5wYXJlbnQpXG4gICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEVsZW1lbnRMaW5rKGVsZW1lbnQ6IE1lbnVJdGVtKTogc3RyaW5nIHtcblxuICAgIHJldHVybiBpc0Z1bmN0aW9uKGVsZW1lbnQubGluaykgPyAoZWxlbWVudC5saW5rIGFzIEdldFN0cmluZ0ZuKSgpIDogZWxlbWVudC5saW5rO1xuICB9XG5cbiAgZ2V0RWxlbWVudExhYmVsKGVsZW1lbnQ6IE1lbnVJdGVtKTogc3RyaW5nIHtcblxuICAgIHJldHVybiBpc0Z1bmN0aW9uKGVsZW1lbnQubGFiZWwpID8gKGVsZW1lbnQubGFiZWwgYXMgR2V0U3RyaW5nRm4pKCkgOiBlbGVtZW50LmxhYmVsO1xuICB9XG5cbiAgLy8gLS0tIExvZ2ljYSBjYXJpY2FtZW50byByaXNvcnNlIGVzdGVybmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFJlY3VwZXJhIGRhIEFwaSBHYXRld2F5IGwnZW5kcG9pbnQgZGVsbGEgY2RuXG4gICAqIGUgbG8gaW1wb3N0YSBuZWxsYSBjb25maWd1cmF6aW9uZSBkZWwgY29tcG9uZW50ZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVjdXBlcmFDZG5FbmRwb2ludCgpIHtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmVtaXREZWJ1ZyhgUmVjdXBlcm8gY2RuIGVuZHBvaW50IGRhIEFHVyBnbG9iYWwgY29uZmlnYCk7XG5cbiAgICAgIGxldCByZXNwb25zZTogR2xvYmFsQ29uZmlnUmVzcG9uc2UgPSBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuYWd3LmdldEdsb2JhbENvbmZpZyh7XG4gICAgICAgIGNsaWVudElkOiB0aGlzLmNvbmZpZz8uY2xpZW50SWQsXG4gICAgICAgIGFnd0VuZFBvaW50OiB0aGlzLmNvbmZpZz8uYXBpR2F0ZXdheVVybFxuICAgICAgfSkpO1xuXG4gICAgICB0aGlzLmNvbmZpZy5jZG5FbmRwb2ludCA9IHJlc3BvbnNlLmNkbl9lbmRwb2ludDtcblxuICAgICAgdGhpcy5lbWl0RGVidWcoYEVuZHBvaW50IGNkbiByZWN1cGVyYXRvOiAke3RoaXMuY29uZmlnLmNkbkVuZHBvaW50fWApO1xuXG4gICAgfSBjYXRjaCAoZSkge1xuXG4gICAgICB0aGlzLmVtaXRFcnJvcignRXJyb3JlIG5lbCByZWN1cGVybyBkZWwgY2RuRW5kcG9pbnQgZGEgYXBpIGdhdGV3YXknKTtcbiAgICAgIHRoaXMuZW1pdEVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gcmlzb3JzZUVzdGVybmVcbiAgICogQHBhcmFtIHR5cGVcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgbG9hZFJpc29yc2VFc3Rlcm5lKHJpc29yc2VFc3Rlcm5lOiAoRXh0ZXJuYWxSZXNvdXJjZSB8IEV4dGVybmFsU2NyaXB0KVtdLCB0eXBlOiBSZXNvdXJjZVR5cGUpIHtcblxuICAgIHRoaXMuZW1pdERlYnVnKCdMb2FkIHJpc29yc2UgZXN0ZXJuZScpO1xuICAgIHRoaXMuZW1pdERlYnVnKHJpc29yc2VFc3Rlcm5lKTtcblxuICAgIHJpc29yc2VFc3Rlcm5lLmZvckVhY2goKHJlc291cmNlOiBFeHRlcm5hbFJlc291cmNlIHwgRXh0ZXJuYWxTY3JpcHQpID0+IHRoaXMuaW1wb3N0YVBhdGhSaXNvcnNhKHJlc291cmNlLCB0eXBlKSk7XG5cbiAgICBsZXQgbG9hZGVkUmVzb3VyY2VzOiBMb2FkZWRSZXNvdXJjZVtdID0gW107XG4gICAgcmlzb3JzZUVzdGVybmVcbiAgICAgIC8vIEZpbHRyYSBlc2NsdWRlbmRvIGxlIHJpc29yc2UgZ2lhIGluY2x1c2VcbiAgICAgIC5maWx0ZXIoKHJpc29yc2E6IEV4dGVybmFsUmVzb3VyY2UgfCBFeHRlcm5hbFNjcmlwdCkgPT4gIXRoaXMuaXNSZXNvdXJjZUxpbmtlZChyaXNvcnNhLCB0eXBlKSlcbiAgICAgIC5mb3JFYWNoKChyaXNvcnNhOiBFeHRlcm5hbFJlc291cmNlIHwgRXh0ZXJuYWxTY3JpcHQpID0+IGxvYWRlZFJlc291cmNlcy5wdXNoKHtsb2FkZWQ6IGZhbHNlLCByZXNvdXJjZTogcmlzb3JzYX0pKTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuXG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgdGhpcy5yaXNvcnNlRXN0ZXJuZUNvdW50ZXIgPSAwO1xuICAgICAgICB0aGlzLnJpc29yc2VFc3Rlcm5lVG90ID0gbG9hZGVkUmVzb3VyY2VzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5jYXJpY2FSaXNvcnNlRXN0ZXJuZShsb2FkZWRSZXNvdXJjZXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzY3JpcHRcIjpcbiAgICAgICAgdGhpcy5zY3JpcHRFc3Rlcm5pQ291bnRlciA9IDA7XG4gICAgICAgIHRoaXMuc2NyaXB0RXN0ZXJuaVRvdCA9IGxvYWRlZFJlc291cmNlcy5sZW5ndGg7XG4gICAgICAgIGF3YWl0IHRoaXMuY2FyaWNhU2NyaXB0RXN0ZXJuaShsb2FkZWRSZXNvdXJjZXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHJpc29yc2FFc3Rlcm5hXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqL1xuICBwcml2YXRlIGltcG9zdGFQYXRoUmlzb3JzYShyaXNvcnNhRXN0ZXJuYTogRXh0ZXJuYWxSZXNvdXJjZSB8IEV4dGVybmFsU2NyaXB0LCB0eXBlOiBSZXNvdXJjZVR5cGUpIHtcblxuICAgIGxldCB1cmxQcm9wZXJ0eTogc3RyaW5nO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG5cbiAgICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgICB1cmxQcm9wZXJ0eSA9ICdocmVmJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3NjcmlwdCc6XG4gICAgICAgIHVybFByb3BlcnR5ID0gJ3NyYyc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJpc29yc2FFc3Rlcm5hLmFzc2V0VXJsID0gIWlzQWJzb2x1dGUocmlzb3JzYUVzdGVybmFbdXJsUHJvcGVydHldKSA/IChyaXNvcnNhRXN0ZXJuYS5hc3NldFVybCA/PyAnJykgOiAnJztcblxuICAgIHJpc29yc2FFc3Rlcm5hLmNkbkVuZHBvaW50ID0gIWlzQWJzb2x1dGUocmlzb3JzYUVzdGVybmEuYXNzZXRVcmwpXG4gICAgICA/IHJpc29yc2FFc3Rlcm5hLmNkbkVuZHBvaW50ID8/IHRoaXMuY29uZmlnLmNkbkVuZHBvaW50ID8/ICcnXG4gICAgICA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZXNcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNhcmljYVJpc29yc2VFc3Rlcm5lKHJlc291cmNlczogTG9hZGVkUmVzb3VyY2VbXSwgaW5kZXg6IG51bWJlciA9IDApIHtcblxuICAgIGlmIChyZXNvdXJjZXMgJiYgcmVzb3VyY2VzLmxlbmd0aCA+IDApIHtcblxuICAgICAgcmVzb3VyY2VzLmZvckVhY2gocmVzb3VyY2UgPT4ge1xuXG4gICAgICAgIHRoaXMuZW1pdERlYnVnKCdDYXJpY2FtZW50byByaXNvcnNhIGVzdGVybmE6Jyk7XG4gICAgICAgIHRoaXMuZW1pdERlYnVnKHJlc291cmNlKTtcblxuICAgICAgICB0aGlzLmNyZWFFbGVtZW50b1Jpc29yc2FFc3Rlcm5hKHJlc291cmNlLCAnbGluaycpXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlOiBMb2FkZWRSZXNvdXJjZVJlc3BvbnNlKSA9PiB7XG5cbiAgICAgICAgICAgIHRoaXMuZW1pdERlYnVnKCcuLi5jYXJpY2FtZW50byByaXNvcnNhIGVzdGVybmEgY29tcGxldGF0bycpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcocmVzcG9uc2UpO1xuICAgICAgICAgIH0sIGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbWl0RXJyb3IoJ0Vycm9yZSBjYXJpY2FtZW50byByaXNvcnNhIGVzdGVybmEhJyk7XG4gICAgICAgICAgICB0aGlzLmVtaXRFcnJvcihlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gc2NyaXB0c1xuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY2FyaWNhU2NyaXB0RXN0ZXJuaShzY3JpcHRzOiBMb2FkZWRSZXNvdXJjZVtdLCBpbmRleDogbnVtYmVyID0gMCkge1xuXG4gICAgaWYgKGluZGV4IDwgc2NyaXB0cy5sZW5ndGgpIHtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdERlYnVnKCdDYXJpY2FtZW50byBzY3JpcHQgZXN0ZXJubzonKTtcbiAgICAgICAgdGhpcy5lbWl0RGVidWcoc2NyaXB0c1tpbmRleF0pO1xuXG4gICAgICAgIHRoaXMuY3JlYUVsZW1lbnRvUmlzb3JzYUVzdGVybmEoc2NyaXB0c1tpbmRleF0sICdzY3JpcHQnKVxuICAgICAgICAgIC50aGVuKChyZXNwb25zZTogTG9hZGVkUmVzb3VyY2VSZXNwb25zZSkgPT4ge1xuXG4gICAgICAgICAgICB0aGlzLmVtaXREZWJ1ZygnLi4uY2FyaWNhbWVudG8gc2NyaXB0IGVzdGVybm8gY29tcGxldGF0bycpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcocmVzcG9uc2UpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVtaXRFcnJvcignRXJyb3JlIGNhcmljYW1lbnRvIHNjcmlwdCBlc3Rlcm5vIScpO1xuICAgICAgICAgICAgdGhpcy5lbWl0RXJyb3IoZSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseSgoKSA9PiB0aGlzLmNhcmljYVNjcmlwdEVzdGVybmkoc2NyaXB0cywgaW5kZXggKyAxKSk7XG5cbiAgICAgIH0sIDMwMCk7XG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5lbWl0RGVidWcoJ0luaXppbyBhemlvbmlGaW5lQ2FyaWNhbWVudG9TY3JpcHQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHBhcmFtIHJlc291cmNlXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNyZWFFbGVtZW50b1Jpc29yc2FFc3Rlcm5hKHJlc291cmNlOiBMb2FkZWRSZXNvdXJjZSwgdHlwZTogUmVzb3VyY2VUeXBlKTogUHJvbWlzZTxMb2FkZWRSZXNvdXJjZVJlc3BvbnNlPiB7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBsZXQgcmVzb3VyY2VVcmw6IHN0cmluZyA9IHJlc291cmNlLnJlc291cmNlWydzcmMnXSB8fCByZXNvdXJjZS5yZXNvdXJjZVsnaHJlZiddO1xuXG4gICAgICAvL3Jlc29sdmUgaWYgYWxyZWFkeSBsb2FkZWRcbiAgICAgIGlmIChyZXNvdXJjZS5sb2FkZWQpIHtcblxuICAgICAgICByZXNvbHZlKHtyZXNvdXJjZTogcmVzb3VyY2VVcmwsIGxvYWRlZDogdHJ1ZSwgc3RhdHVzOiAnQWxyZWFkeSBMb2FkZWQnfSk7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIGxldCByZXNvdXJjZUVsZW1lbnQ6IGFueTtcbiAgICAgICAgbGV0IHVybDogc3RyaW5nO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuXG4gICAgICAgICAgY2FzZSAnc2NyaXB0JzpcbiAgICAgICAgICAgIHRoaXMuZW1pdERlYnVnKGBDcmVhemlvbmUgZWxlbWVudG8gc2NyaXB0IHBlciByaXNvcnNhOmApO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcocmVzb3VyY2UucmVzb3VyY2UpO1xuICAgICAgICAgICAgcmVzb3VyY2VFbGVtZW50ID0gY3JlYXRlU2NyaXB0RWxlbWVudCgocmVzb3VyY2UucmVzb3VyY2UgYXMgRXh0ZXJuYWxTY3JpcHQpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcoYENyZWF6aW9uZSBlbGVtZW50byBsaW5rIHBlciByaXNvcnNhOmApO1xuICAgICAgICAgICAgdGhpcy5lbWl0RGVidWcocmVzb3VyY2UucmVzb3VyY2UpO1xuICAgICAgICAgICAgcmVzb3VyY2VFbGVtZW50ID0gY3JlYXRlTGlua0VsZW1lbnQoKHJlc291cmNlLnJlc291cmNlIGFzIEV4dGVybmFsUmVzb3VyY2UpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc291cmNlRWxlbWVudC5yZWFkeVN0YXRlKSB7ICAvLyBJRVxuXG4gICAgICAgICAgcmVzb3VyY2VFbGVtZW50Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcblxuICAgICAgICAgICAgaWYgKHJlc291cmNlRWxlbWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGVkJyB8fCByZXNvdXJjZUVsZW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuXG4gICAgICAgICAgICAgIHRoaXMucmlzb3JzYU9uTG9hZCh0eXBlKTtcbiAgICAgICAgICAgICAgcmVzb3VyY2VFbGVtZW50Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICAgICAgICAgIHJlc291cmNlLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIHJlc29sdmUoe3Jlc291cmNlOiByZXNvdXJjZVVybCwgbG9hZGVkOiB0cnVlLCBzdGF0dXM6ICdMb2FkZWQnfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICB9IGVsc2UgeyAgLy8gT3RoZXJzXG5cbiAgICAgICAgICByZXNvdXJjZUVsZW1lbnQub25sb2FkID0gKCkgPT4ge1xuXG4gICAgICAgICAgICB0aGlzLnJpc29yc2FPbkxvYWQodHlwZSk7XG4gICAgICAgICAgICByZXNvdXJjZS5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmVzb2x2ZSh7cmVzb3VyY2U6IHJlc291cmNlVXJsLCBsb2FkZWQ6IHRydWUsIHN0YXR1czogJ0xvYWRlZCd9KTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb3VyY2VFbGVtZW50Lm9uZXJyb3IgPSAoZXJyb3I6IGFueSkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5yaXNvcnNhT25Mb2FkKHR5cGUpO1xuICAgICAgICAgIHJlamVjdCh7cmVzb3VyY2U6IHJlc291cmNlLnJlc291cmNlLCBsb2FkZWQ6IGZhbHNlLCBzdGF0dXM6ICdMb2FkZWQnfSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChyZXNvdXJjZUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRyb2xsYSBzZSBnaWEgZXNpc3RlIHVuYSBzcGVjaWZpY2Egcmlzb3JzYSBuZWwgdGFnIGhlYWRcbiAgICpcbiAgICogQHBhcmFtIHJpc29yc2FcbiAgICogQHBhcmFtIHR5cGVcbiAgICovXG4gIGlzUmVzb3VyY2VMaW5rZWQocmlzb3JzYTogRXh0ZXJuYWxSZXNvdXJjZSB8IEV4dGVybmFsU2NyaXB0LCB0eXBlOiBSZXNvdXJjZVR5cGUpOiBib29sZWFuIHtcblxuICAgIGxldCB0cm92YXRvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBsZXQgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuXG4gICAgICBjYXNlICdzY3JpcHQnOlxuXG4gICAgICAgIC8vIFRyb3ZhIHR1dHRpIGdsaSBlbGVtZW50aSBzY3JpcHQgbmVsIHRhZyBoZWFkXG4gICAgICAgIGxldCBzY3JpcHQgPSBoZWFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTtcblxuICAgICAgICAvLyBJdGVyYSBzdWdsaSBlbGVtZW50aSBzY3JpcHQgZSBjb250cm9sbGEgc2UgdW5vIGRpIGVzc2kgcHVudGEgYWxsbyBzY3JpcHQgc3BlY2lmaWNhdG9cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY3JpcHQubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgIGxldCB1cmw6IHN0cmluZyA9IChyaXNvcnNhIGFzIEV4dGVybmFsU2NyaXB0KS5zcmM7XG5cbiAgICAgICAgICB0cm92YXRvID0gKHNjcmlwdFtpXS5zcmMgJiYgc2NyaXB0W2ldLnNyYy5pbmRleE9mKHVybCkgIT09IC0xKTtcblxuICAgICAgICAgIGlmICh0cm92YXRvKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xpbmsnOlxuXG4gICAgICAgIC8vIFRyb3ZhIHR1dHRpIGdsaSBlbGVtZW50aSBsaW5rIG5lbCB0YWcgaGVhZFxuICAgICAgICBsZXQgbGlua3MgPSBoZWFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaW5rJyk7XG5cbiAgICAgICAgbGV0IHVybDogc3RyaW5nID0gKHJpc29yc2EgYXMgRXh0ZXJuYWxSZXNvdXJjZSkuaHJlZjtcblxuICAgICAgICAvLyBJdGVyYSBzdWdsaSBlbGVtZW50aSBsaW5rIGUgY29udHJvbGxhIHNlIHVubyBkaSBlc3NpIHB1bnRhIGFsIENTUyBzcGVjaWZpY2F0b1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdHJvdmF0byA9IChsaW5rc1tpXS5ocmVmICYmIGxpbmtzW2ldLmhyZWYuaW5kZXhPZih1cmwpICE9PSAtMSk7XG5cbiAgICAgICAgICBpZiAodHJvdmF0bykge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiB0cm92YXRvO1xuICB9XG5cbiAgcmlzb3JzYU9uTG9hZCh0eXBlOiBSZXNvdXJjZVR5cGUpIHtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuXG4gICAgICBjYXNlICdzY3JpcHQnOlxuICAgICAgICB0aGlzLnNjcmlwdEVzdGVybmlDb3VudGVyKys7XG4gICAgICAgIHRoaXMuY2FyaWNhbWVudG9TY3JpcHRFc3Rlcm5pVGVybWluYXRvID0gdGhpcy5zY3JpcHRFc3Rlcm5pQ291bnRlciA9PT0gdGhpcy5zY3JpcHRFc3Rlcm5pVG90O1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgIHRoaXMucmlzb3JzZUVzdGVybmVDb3VudGVyKys7XG4gICAgICAgIHRoaXMuY2FyaWNhbWVudG9SaXNvcnNlRXN0ZXJuZVRlcm1pbmF0byA9IHRoaXMucmlzb3JzZUVzdGVybmVDb3VudGVyID09PSB0aGlzLnJpc29yc2VFc3Rlcm5lVG90O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYXJpY2FtZW50b1Jpc29yc2VFc3Rlcm5lVGVybWluYXRvKSB7XG5cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyByZWN1cGVyYUhlYWREYUFHVygpIHtcblxuICAgIHRoaXMuZW1pdERlYnVnKGBSZWN1cGVybyByaXNvcnNlIGVzdGVybmUgaGVhZCBkYSBBR1dgKTtcblxuICAgIGxldCByZXF1ZXN0OiBBR1dSZXF1ZXN0ID0ge2NsaWVudElkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCwgYWd3RW5kUG9pbnQ6IHRoaXMuY29uZmlnLmFwaUdhdGV3YXlVcmx9O1xuXG4gICAgdHJ5IHtcblxuICAgICAgbGV0IHJlc3BvbnNlOiBDaGVja3Nlc3Npb25SZXNwb25zZSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5hZ3cuY2hlY2tzZXNzaW9uKHJlcXVlc3QpKTtcblxuICAgICAgbGV0IHJlc3BvbnNlSEYkOiBPYnNlcnZhYmxlPEhGUmVzcG9uc2U+ID0gcmVzcG9uc2U/LnJlc3VsdCA9PT0gdHJ1ZVxuICAgICAgICA/IHRoaXMuYWd3LmdldFByaXZhdGVIZWFkUlcocmVxdWVzdClcbiAgICAgICAgOiB0aGlzLmFndy5nZXRQdWJsaWNIZWFkUlcocmVxdWVzdCk7XG5cbiAgICAgIGxldCByZXNwb25zZUhGOiBIRlJlc3BvbnNlID0gYXdhaXQgbGFzdFZhbHVlRnJvbShyZXNwb25zZUhGJCk7XG5cbiAgICAgIGlmIChyZXNwb25zZUhGPy5odG1sICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIGRvY3VtZW50LmhlYWQuaW5uZXJIVE1MID0gYCR7ZG9jdW1lbnQuaGVhZC5pbm5lckhUTUx9ICR7cmVzcG9uc2VIRi5odG1sfWA7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cblxuICAgIH0gY2F0Y2ggKGVycikge1xuXG4gICAgICB0aGlzLmVtaXRFcnJvcignRXJyb3JlIHJlY3VwZXJvIHJpc29yc2UgZXN0ZXJuZSBoZWFkIGRhIEFHVycpO1xuICAgICAgdGhpcy5lbWl0RXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gLS0tIE9wZXJhdG9yaSBwZXIgbGEgZ2VzdGlvbmUgZGVsbGUgcmlzb3JzZSBlc3Rlcm5lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBjcmVhdGVMaW5rRWxlbWVudCA9IChyZXNvdXJjZTogRXh0ZXJuYWxSZXNvdXJjZSkgPT4ge1xuXG4gIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuXG4gIGxldCB1cmwgPSBgJHtyZXNvdXJjZS5jZG5FbmRwb2ludH0keyhpc05vdEJsYW5rT3JOdWxsKHJlc291cmNlLmNkbkVuZHBvaW50KSAmJiBpc05vdEJsYW5rT3JOdWxsKHJlc291cmNlLmFzc2V0VXJsKSAmJiAhc3RhcnRXaXRoU2xhc2gocmVzb3VyY2UuYXNzZXRVcmwpKSA/ICcvJyA6ICcnfSR7cmVzb3VyY2UuYXNzZXRVcmx9JHtyZXNvdXJjZS5ocmVmfWA7XG5cbiAgYWRkUHJvcGVydHkoZWxlbWVudCwgJ3JlbCcsIHJlc291cmNlLnJlbCk7XG4gIGFkZFByb3BlcnR5KGVsZW1lbnQsICd0eXBlJywgcmVzb3VyY2UudHlwZSk7XG4gIGFkZFByb3BlcnR5KGVsZW1lbnQsICdocmVmJywgdXJsKTtcbiAgYWRkUHJvcGVydHkoZWxlbWVudCwgJ21lZGlhJywgcmVzb3VyY2UubWVkaWEpO1xuICBhZGRQcm9wZXJ0eShlbGVtZW50LCAnaHJlZmxhbmcnLCByZXNvdXJjZS5ocmVmbGFuZyk7XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5jb25zdCBjcmVhdGVTY3JpcHRFbGVtZW50ID0gKHNjcmlwdDogRXh0ZXJuYWxTY3JpcHQpID0+IHtcblxuICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuXG4gIGxldCB1cmwgPSBgJHtzY3JpcHQuY2RuRW5kcG9pbnR9JHsoaXNOb3RCbGFua09yTnVsbChzY3JpcHQuY2RuRW5kcG9pbnQpICYmIGlzTm90QmxhbmtPck51bGwoc2NyaXB0LmFzc2V0VXJsKSAmJiAhc3RhcnRXaXRoU2xhc2goc2NyaXB0LmFzc2V0VXJsKSkgPyAnLycgOiAnJ30ke3NjcmlwdC5hc3NldFVybH0ke3NjcmlwdC5zcmN9YDtcblxuICBhZGRQcm9wZXJ0eShlbGVtZW50LCAnc3JjJywgdXJsKTtcbiAgYWRkUHJvcGVydHkoZWxlbWVudCwgJ3R5cGUnLCBzY3JpcHQudHlwZSk7XG4gIGFkZFByb3BlcnR5KGVsZW1lbnQsICdjaGFyc2V0Jywgc2NyaXB0LmNoYXJzZXQpO1xuXG4gIGlmIChzY3JpcHQuYXN5bmMgPT09IHRydWUpIHtcblxuICAgIGVsZW1lbnQuYXN5bmMgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHNjcmlwdC5kZWZlciA9PT0gdHJ1ZSkge1xuXG4gICAgZWxlbWVudC5kZWZlciA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn07XG5cbmNvbnN0IGFkZFByb3BlcnR5ID0gKGVsZW06IGFueSwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG5cbiAgaWYgKGVsZW0gIT0gdW5kZWZpbmVkICYmIHZhbHVlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgZWxlbVtuYW1lXSA9IHZhbHVlO1xuICB9XG59O1xuXG4vLyAtLS0gT3BlcmF0b3JpIHBlciBsYSBnZXN0aW9uZSBkZWwgZm9jdXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmNvbnN0IGlzU2V0Rm9jdXNPbkVycm9yQnV0dG9uID0gKGVsZW06IEhUTUxFbGVtZW50KTogYm9vbGVhbiA9PiBlbGVtICYmICgoZWxlbS5ub2RlTmFtZSA9PSAnQlVUVE9OJyAmJiBoYXNDbGFzc1ZhbGlkYXRpb25CdG4oZWxlbSkpIHx8IGlzU2V0Rm9jdXNPbkVycm9yQnV0dG9uKGVsZW0ucGFyZW50RWxlbWVudCkpO1xuY29uc3QgaGFzQ2xhc3NWYWxpZGF0aW9uQnRuID0gKGVsZW06IEhUTUxFbGVtZW50KTogYm9vbGVhbiA9PiBlbGVtICYmIGVsZW0uY2xhc3NMaXN0ICYmIGVsZW0uY2xhc3NMaXN0LmNvbnRhaW5zKEVSUk9SX0JUTl9DTEFTUyk7XG5cbmNvbnN0IGZvY3VzYWJsZSA9ICc6bm90KFtkaXNhYmxlZF0pOm5vdChbcmVhZG9ubHldKTpub3QoW3RhYmluZGV4PVxcJy0xXFwnXSknO1xuY29uc3QgZm9jdXNhYmxlRWxlbWVudCA9IGBpbnB1dCR7Zm9jdXNhYmxlfSxzZWxlY3Qke2ZvY3VzYWJsZX0sdGV4dGFyZWEke2ZvY3VzYWJsZX0sLmZlZWRiYWNrLWZvY3VzYWJsZWA7XG5cbi8qKlxuICogVHJvdmEgZSByZXN0aXR1aXNjZSBsJ2VsZW1lbnRvIGZvY3VzYWJsZVxuICogYWxsJ2ludGVybm8gZGVsbCdlbGVtZW50byBkYXRvXG4gKlxuICogQHBhcmFtIG91dGVyXG4gKi9cbmNvbnN0IGZpbmRJbm5lckZvY3VzYWJsZUVsZW1lbnQgPSAob3V0ZXI6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgPT4gb3V0ZXIgPyBvdXRlci5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50Pihmb2N1c2FibGVFbGVtZW50KVswXSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBJbXBvc3RhIGlsIGZvY3VzIHN1bGwnZXJyb3JlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRGb2N1c09uRXJyb3IgPSAoc2V0Rm9jdXNTdHJhdGVneTogU2V0Rm9jdXNTdHJhdGVneSwgc2Nyb2xsVG9FcnJvcjogYm9vbGVhbikgPT4ge1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gbGV0IG1vZGFsZUluUGFnaW5hOiBib29sZWFuID0gJCgnLm1vZGFsLmZhZGUuaW4nKS5ub3QoYC4ke01PREFMX0NPTkZJUk1fQ0xBU1N9YCkubGVuZ3RoID4gMCBUT0RPXG5cbiAgbGV0IG1vZGFsZUluUGFnaW5hOiBib29sZWFuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1vZGFsLmZhZGUuaW4nKS5sZW5ndGg7XG5cbiAgLy8gU2UgZXNpc3RlIHVuYSBtb2RhbGUgaW4gcGFnaW5hIGNoZSBub24gZScgdW5hIG1vZGFsZSBkaSBjb25mZXJtYVxuICBpZiAobW9kYWxlSW5QYWdpbmEpIHtcblxuICAgIHNldEZvY3VzT25GaXJzdE1vZGFsRXJyb3IoKTtcblxuICB9IGVsc2Uge1xuXG4gICAgc3dpdGNoIChzZXRGb2N1c1N0cmF0ZWd5KSB7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlIFNldEZvY3VzU3RyYXRlZ3kuT25HbG9iYWxGZWVkYmFjazpcbiAgICAgICAgc2V0Rm9jdXNPbkdsb2JhbEVycm9yRmVlZGJhY2soc2Nyb2xsVG9FcnJvcik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNldEZvY3VzU3RyYXRlZ3kuT25GaXJzdFBhZ2VFcnJvcjpcbiAgICAgICAgc2V0Rm9jdXNPbkZpcnN0UGFnZUVycm9yKHNjcm9sbFRvRXJyb3IpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogSW1wb3N0YSBpbCBmb2N1cyBzdWwgcHJpbW8gZWxlbWVudG8gbmVsbGEgbW9kYWxlIGFuZGF0byBpbiBlcnJvcmUgc2UgZXNpc3RlLlxuICovXG5leHBvcnQgY29uc3Qgc2V0Rm9jdXNPbkZpcnN0TW9kYWxFcnJvciA9ICgpID0+IHtcblxuICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgIGxldCBmaXJzdE1vZGFsRXJyb3JFbGVtZW50OiBIVE1MRWxlbWVudCA9IGZpbmRJbm5lckZvY3VzYWJsZUVsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5tb2RhbC1ib2R5IC5oYXMtZXJyb3InKVswXSk7XG4gICAgbGV0IGZpcnN0TW9kYWxFcnJvckZlZWRiYWNrOiBIVE1MRWxlbWVudCA9IGZpbmRJbm5lckZvY3VzYWJsZUVsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5tb2RhbC1ib2R5IC5mZWVkYmFjay1ib3gtZXJyb3InKVswXSk7XG5cbiAgICBpZiAoZmlyc3RNb2RhbEVycm9yRWxlbWVudCkge1xuXG4gICAgICBmaXJzdE1vZGFsRXJyb3JFbGVtZW50LmZvY3VzKCk7XG5cbiAgICB9IGVsc2UgaWYgKGZpcnN0TW9kYWxFcnJvckZlZWRiYWNrKSB7XG5cbiAgICAgIGZpcnN0TW9kYWxFcnJvckZlZWRiYWNrLmZvY3VzKCk7XG4gICAgfVxuXG4gIH0sIDEwMCk7XG59O1xuXG4vKipcbiAqIEltcG9zdGEgaWwgZm9jdXMgc3VsIHByaW1vIGVsZW1lbnRvIGluIHBhZ2luYSBhbmRhdG8gaW4gZXJyb3JlIHNlIGVzaXN0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldEZvY3VzT25GaXJzdFBhZ2VFcnJvciA9IChzY3JvbGxUb0Vycm9yPzogYm9vbGVhbikgPT4ge1xuXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuXG4gICAgbGV0IG91dGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJy5oYXMtZXJyb3IsLmZlZWRiYWNrLWJveC1lcnJvcjpub3QoLmdsb2JhbC1mZWVkYmFjayknKVswXTtcblxuICAgIGxldCBmaXJzdEVycm9yRWxlbWVudDogSFRNTEVsZW1lbnQgPSBmaW5kSW5uZXJGb2N1c2FibGVFbGVtZW50KG91dGVyKTtcblxuICAgIGlmIChmaXJzdEVycm9yRWxlbWVudCAmJiAhaXNIaWRkZW4oZmlyc3RFcnJvckVsZW1lbnQpKSB7XG5cbiAgICAgIGlmIChzY3JvbGxUb0Vycm9yID09PSB0cnVlKSB7XG5cbiAgICAgICAgc2Nyb2xsVG9FbGVtZW50KGZpcnN0RXJyb3JFbGVtZW50LmlkKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWwgZGVsYXkgc2VydmUgYWQgYXNwZXR0YXJlIGNoZSB0ZXJtaW5pIGxvIHNjcm9sbFxuICAgICAgc2V0VGltZW91dCgoKSA9PiBmaXJzdEVycm9yRWxlbWVudC5mb2N1cygpLCA1MDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRGb2N1c09uR2xvYmFsRXJyb3JGZWVkYmFjayhzY3JvbGxUb0Vycm9yKTtcbiAgICB9XG4gIH0sIDEwMCk7XG59O1xuXG4vKipcbiAqIEltcG9zdGEgaWwgZm9jdXMgc3VsIGZlZWRiYWNrIGdsb2JhbGVcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEZvY3VzT25HbG9iYWxGZWVkYmFjayA9IChzY3JvbGxUb0ZlZWRiYWNrPzogYm9vbGVhbikgPT4gc2V0Rm9jdXNPbkZpcnN0RmVlZGJhY2soJy5nbG9iYWwtZmVlZGJhY2snLCBzY3JvbGxUb0ZlZWRiYWNrKTtcblxuLyoqXG4gKiBJbXBvc3RhIGlsIGZvY3VzIHN1bCBmZWVkYmFjayBnbG9iYWxlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRGb2N1c09uR2xvYmFsRXJyb3JGZWVkYmFjayA9IChzY3JvbGxUb0ZlZWRiYWNrPzogYm9vbGVhbikgPT4gc2V0Rm9jdXNPbkZpcnN0RmVlZGJhY2soJy5nbG9iYWwtZmVlZGJhY2suZmVlZGJhY2stYm94LWVycm9yJywgc2Nyb2xsVG9GZWVkYmFjayk7XG5cbi8qKlxuICogSW1wb3N0YSBpbCBmb2N1cyBzdWwgcHJpbW8gZmVlZGJhY2sgZGkgZXJyb3JlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRGb2N1c09uRmlyc3RFcnJvckZlZWRiYWNrID0gKHNjcm9sbFRvRmVlZGJhY2s/OiBib29sZWFuKSA9PiBzZXRGb2N1c09uRmlyc3RGZWVkYmFjaygnLmZlZWRiYWNrLWJveC1lcnJvcicsIHNjcm9sbFRvRmVlZGJhY2spO1xuXG4vKipcbiAqIEltcG9zdGEgaWwgZm9jdXMgc3VsIHByaW1vIGZlZWRiYWNrIGluIHBhZ2luYVxuICpcbiAqIEBwYXJhbSBzZWxlY3RvclxuICogQHBhcmFtIHNjcm9sbFRvRmVlZGJhY2tcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEZvY3VzT25GaXJzdEZlZWRiYWNrID0gKHNlbGVjdG9yPzogc3RyaW5nLCBzY3JvbGxUb0ZlZWRiYWNrPzogYm9vbGVhbikgPT4ge1xuXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuXG4gICAgbGV0IGZlZWRiYWNrOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KHNlbGVjdG9yIHx8ICcuZmVlZGJhY2stYm94JylbMF07XG5cbiAgICBpZiAoZmVlZGJhY2spIHtcblxuICAgICAgaWYgKHNjcm9sbFRvRmVlZGJhY2spIHtcblxuICAgICAgICBzY3JvbGxUb0VsZW1lbnQoZmVlZGJhY2suZ2V0QXR0cmlidXRlKCdpZCcpKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGZlZWRiYWNrRm9jdXNhYmxlOiBIVE1MRWxlbWVudCA9IGZlZWRiYWNrLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjay1mb2N1c2FibGUnKTtcblxuICAgICAgaWYgKGZlZWRiYWNrRm9jdXNhYmxlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIC8vIElsIGRlbGF5IHNlcnZhIGFkIGFzcGV0dGFyZSBjaGUgdGVybWluaSBsbyBzY3JvbGxcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBmZWVkYmFja0ZvY3VzYWJsZS5mb2N1cygpLCA1MDApO1xuICAgICAgfVxuICAgIH1cbiAgfSwgMTAwKTtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBpZFxuICogQHBhcmFtIHNjcm9sbFRvRmVlZGJhY2tcbiAqIEBwYXJhbSBtc1xuICovXG5leHBvcnQgY29uc3Qgc2V0Rm9jdXNPbkZlZWRiYWNrID0gKGlkPzogc3RyaW5nLCBzY3JvbGxUb0ZlZWRiYWNrPzogYm9vbGVhbiwgbXM/OiBudW1iZXIpID0+IHtcblxuICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgIGxldCBmZWVkYmFjazogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihgIyR7aWR9YClbMF07XG5cbiAgICBpZiAoZmVlZGJhY2spIHtcblxuICAgICAgaWYgKHNjcm9sbFRvRmVlZGJhY2spIHtcblxuICAgICAgICBzY3JvbGxUb0VsZW1lbnQoZmVlZGJhY2suZ2V0QXR0cmlidXRlKCdpZCcpKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGZlZWRiYWNrRm9jdXNhYmxlOiBIVE1MRWxlbWVudCA9IGZlZWRiYWNrLnF1ZXJ5U2VsZWN0b3IoJy5mZWVkYmFjay1mb2N1c2FibGUnKTtcblxuICAgICAgaWYgKGZlZWRiYWNrRm9jdXNhYmxlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIC8vIElsIGRlbGF5IHNlcnZhIGFkIGFzcGV0dGFyZSBjaGUgdGVybWluaSBsbyBzY3JvbGxcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBmZWVkYmFja0ZvY3VzYWJsZS5mb2N1cygpLCA1MDApO1xuICAgICAgfVxuICAgIH1cbiAgfSwgbXMgfHwgMTAwKTtcbn07XG4iLCI8aW5haWwtbG9hZGVyIFtzaG93XT1cInNob3dMb2FkZXJcIj48L2luYWlsLWxvYWRlcj5cbjxkZWJ1Zy1wcmUgKm5nSWY9XCJzaG93U3RhdGVcIj5baW5haWwtbGF5b3V0XTxicj5cbiAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2NvbmZpZydcIiBbcHJvcGVydGllXT1cImNvbmZpZ1wiPjwvc3RhdGUtcHJvcGVydGllPlxuICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCInaW5pemlhbGl6emF6aW9uZVRlcm1pbmF0YSdcIiBbcHJvcGVydGllXT1cImluaXppYWxpenphemlvbmVUZXJtaW5hdGFcIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2NhcmljYW1lbnRvUmlzb3JzZUVzdGVybmVUZXJtaW5hdG8nXCIgW3Byb3BlcnRpZV09XCJjYXJpY2FtZW50b1Jpc29yc2VFc3Rlcm5lVGVybWluYXRvXCI+PC9zdGF0ZS1wcm9wZXJ0aWU+XG4gIDxzdGF0ZS1wcm9wZXJ0aWUgW2xhYmVsXT1cIidjYXJpY2FtZW50b1NjcmlwdEVzdGVybmlUZXJtaW5hdG8nXCIgW3Byb3BlcnRpZV09XCJjYXJpY2FtZW50b1NjcmlwdEVzdGVybmlUZXJtaW5hdG9cIj48L3N0YXRlLXByb3BlcnRpZT5cbiAgPHN0YXRlLXByb3BlcnRpZSBbbGFiZWxdPVwiJ2l0c1JlYWR5J1wiIFtwcm9wZXJ0aWVdPVwiaXRzUmVhZHkoKVwiPjwvc3RhdGUtcHJvcGVydGllPlxuICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCInYnJlYWRjcnVtYkVzdGVybm8nXCIgW3Byb3BlcnRpZV09XCJicmVhZGNydW1iRXN0ZXJub1wiPjwvc3RhdGUtcHJvcGVydGllPlxuICA8c3RhdGUtcHJvcGVydGllIFtsYWJlbF09XCIncGFnaW5hQ29ycmVudGUnXCIgW3Byb3BlcnRpZV09XCJwYWdpbmFDb3JyZW50ZVwiPjwvc3RhdGUtcHJvcGVydGllPlxuPC9kZWJ1Zy1wcmU+XG48ZGl2IGNsYXNzPVwiaW5haWwtbGF5b3V0XCI+XG4gIDxkaXYgKm5nSWY9XCIhaXRzUmVhZHkoKVwiICNwbGVhc2VXYWl0Q29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwbGVhc2VXYWl0RXN0ZXJubzsgZWxzZSBkZWZhdWx0UGxlYXNlV2FpdFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BsZWFzZS13YWl0XVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRQbGVhc2VXYWl0PlxuICAgICAgPGRpdiBjbGFzcz1cInBsZWFzZS13YWl0XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWc/LmFwcE5hbWVcIiBjbGFzcz1cImFwcC1uYW1lXCIgW2lubmVySFRNTF09XCJjb25maWcuYXBwTmFtZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2PkNhcmljYW1lbnRvLi4uPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiXG4gICAgICAgW2hpZGRlbl09XCIhaXRzUmVhZHkoKVwiXG4gICAgICAgW25nQ2xhc3NdPVwieyd3aWRlJyA6IGNvbmZpZyAmJiBjb25maWcuY29udGFpbmVyV2lkZX1cIj5cblxuICAgIDxoZWFkZXIgaWQ9XCJpbmFpbC1oZWFkZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCJpbml6aWFsaXp6YXppb25lVGVybWluYXRhXCJcbiAgICAgICAgICAgIFtjb25maWddPVwiaGVhZGVyQ29uZmlnXCJcbiAgICAgICAgICAgIFtsb2dvSGVhZGVySHRtbF09XCJsb2dvSGVhZGVySHRtbFwiXG4gICAgICAgICAgICBbbmF2aWdhemlvbmVQcmluY2lwYWxlSHRtbF09XCJuYXZpZ2F6aW9uZVByaW5jaXBhbGVIdG1sXCJcbiAgICAgICAgICAgIFtoZWFkZXJTZWNvbmRhcmlvSHRtbF09XCJoZWFkZXJTZWNvbmRhcmlvSHRtbFwiXG4gICAgICAgICAgICBbaGVhZGVyU2Vjb25kYXJpb0RhdGFdPVwiaGVhZGVyU2Vjb25kYXJpb0RhdGFcIlxuICAgICAgICAgICAgW3JlbG9hZF09XCJyZWxvYWRcIlxuICAgICAgICAgICAgW3Nob3dTdGF0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbZGV0ZWN0Q2hhbmdlXT1cInRoaXMuZGV0ZWN0Q2hhbmdlXCJcbiAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwibG9nT25Db25zb2xlXCJcbiAgICAgICAgICAgIChsb2cpPVwiZW1pdCgkZXZlbnQpXCI+XG4gICAgICA8bmctY29udGFpbmVyIGxvZ28taGVhZGVyPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbG9nby1oZWFkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyIG5hdmlnYXppb25lLXByaW5jaXBhbGU+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuYXZpZ2F6aW9uZS1wcmluY2lwYWxlXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciBoZWFkZXItc2Vjb25kYXJpbz5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hlYWRlci1zZWNvbmRhcmlvXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvaGVhZGVyPlxuXG4gICAgPCEtLSBCcmVhZGNydW1iIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgYnJlYWRjcnVtYnMgaW50ZXJuZXQtYnJlYWRjcnVtYlwiXG4gICAgICAgICBhcmlhLWxhYmVsPVwiQnJlYWRjcnVtYlwiXG4gICAgICAgICAjYnJlYWRjcnVtYkNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZGNydW1iRXN0ZXJub1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYnJlYWRjcnVtYl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxpbmFpbC1icmVhZGNydW1iICpuZ0lmPVwiIWJyZWFkY3J1bWJFc3Rlcm5vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwidGhpcy5sb2dPbkNvbnNvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cInBhZ2luYUNvcnJlbnRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsb2cpPVwiZW1pdCgkZXZlbnQpXCI+XG4gICAgICA8L2luYWlsLWJyZWFkY3J1bWI+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5haWwtdHJpZ2dlci1zbGlkZXItbWVudS1idXR0b24gKGNsaWNrKT1cInRvZ2dsZU5hdlNlY29uZGFyaWEuZW1pdCgpXCI+PC9pbmFpbC10cmlnZ2VyLXNsaWRlci1tZW51LWJ1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cblxuICAgICAgPGluYWlsLW5hdmlnYXppb25lLXNlY29uZGFyaWEgW3RvZ2dsZV09XCJ0b2dnbGVOYXZTZWNvbmRhcmlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwibG9nT25Db25zb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2cpPVwiZW1pdCgkZXZlbnQpXCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBzaWRlYmFyLXN1cGVyaW9yZT5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2lkZWJhci1zdXBlcmlvcmVdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIHNpZGViYXItaW5mZXJpb3JlPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzaWRlYmFyLWluZmVyaW9yZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8L2luYWlsLW5hdmlnYXppb25lLXNlY29uZGFyaWE+XG5cbiAgICAgIDxtYWluICpuZ0lmPVwiaW5pemlhbGl6emF6aW9uZVRlcm1pbmF0YVwiXG4gICAgICAgICAgICBpZD1cImNvbnRlbnV0b3ByaW5jaXBhbGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTggY29sLWxnLTlcIj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYWluLWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9tYWluPlxuXG4gICAgPC9kaXY+XG4gICAgPGluYWlsLWZvb3RlciAqbmdJZj1cImluaXppYWxpenphemlvbmVUZXJtaW5hdGFcIlxuICAgICAgICAgICAgICAgICAgW2NsaWVudElkXT1cImNvbmZpZz8uY2xpZW50SWRcIlxuICAgICAgICAgICAgICAgICAgW2FwaUdhdGV3YXlVcmxdPVwiY29uZmlnPy5hcGlHYXRld2F5VXJsXCJcbiAgICAgICAgICAgICAgICAgIFt1c2VEZWZhdWx0XT1cImNvbmZpZz8udXNlRGVmYXVsdEh0bWxcIlxuICAgICAgICAgICAgICAgICAgW3JlY3VwZXJvQXV0b21hdGljb0h0bWxdPVwiY29uZmlnPy5yZWN1cGVyb0F1dG9tYXRpY29IdG1sXCJcbiAgICAgICAgICAgICAgICAgIFtodG1sXT1cImZvb3Rlckh0bWxcIlxuICAgICAgICAgICAgICAgICAgW3VybF09XCJjb25maWc/LmZvb3RlclVybFwiXG4gICAgICAgICAgICAgICAgICBbcmVsb2FkXT1cInJlbG9hZFwiXG4gICAgICAgICAgICAgICAgICBbZGV0ZWN0Q2hhbmdlXT1cInRoaXMuZGV0ZWN0Q2hhbmdlXCJcbiAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwidGhpcy5sb2dPbkNvbnNvbGVcIlxuICAgICAgICAgICAgICAgICAgW3Nob3dTdGF0ZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAobG9nKT1cImVtaXQoJGV2ZW50KVwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9pbmFpbC1mb290ZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -2901,8 +2901,7 @@ class InailLayoutComponent extends BaseComponent {
2901
2901
  this.caricamentoRisorseEsterneTerminato = true;
2902
2902
  }
2903
2903
  // Inizializzazione script esterni
2904
- if (this.config?.caricamentoDinamicoScriptEsterni === true
2905
- && this.externalScripts?.length) {
2904
+ if (this.config?.caricamentoDinamicoScriptEsterni === true) {
2906
2905
  let defaultExternalScripts;
2907
2906
  if (this.externalScripts == undefined) {
2908
2907
  defaultExternalScripts = getWebkitExternalScripts(this.libConfig.webkitVersion);