tnx-shared 5.1.162 → 5.1.166

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.
Files changed (33) hide show
  1. package/bundles/tnx-shared.umd.js +45 -40
  2. package/bundles/tnx-shared.umd.js.map +1 -1
  3. package/bundles/tnx-shared.umd.min.js +1 -1
  4. package/bundles/tnx-shared.umd.min.js.map +1 -1
  5. package/classes/base/component-base.d.ts +1 -1
  6. package/classes/base/component-base.d.ts.map +1 -1
  7. package/classes/base/data-form-base.d.ts.map +1 -1
  8. package/classes/base/data-list-base.d.ts.map +1 -1
  9. package/classes/public-function.d.ts +1 -1
  10. package/components/crud/crud-form/crud-form.component.d.ts +2 -2
  11. package/enums/common.d.ts +2 -1
  12. package/enums/common.d.ts.map +1 -1
  13. package/esm2015/classes/base/component-base.js +4 -3
  14. package/esm2015/classes/base/data-form-base.js +5 -1
  15. package/esm2015/classes/base/data-list-base.js +3 -2
  16. package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
  17. package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
  18. package/esm2015/components/tn-app-help/tn-app-help.component.js +2 -2
  19. package/esm2015/components/workflow/workflow-history-new/workflow-history-new.component.js +4 -5
  20. package/esm2015/enums/common.js +2 -1
  21. package/esm2015/models/grid-info.js +2 -1
  22. package/esm2015/services/base.service.js +4 -3
  23. package/esm2015/services/common.service.js +3 -2
  24. package/fesm2015/tnx-shared.js +22 -13
  25. package/fesm2015/tnx-shared.js.map +1 -1
  26. package/models/grid-info.d.ts +1 -0
  27. package/models/grid-info.d.ts.map +1 -1
  28. package/package.json +2 -2
  29. package/services/base.service.d.ts +1 -1
  30. package/services/base.service.d.ts.map +1 -1
  31. package/services/common.service.d.ts +1 -1
  32. package/services/common.service.d.ts.map +1 -1
  33. package/tnx-shared.metadata.json +1 -1
@@ -53,7 +53,7 @@ export declare abstract class ComponentBase implements OnDestroy {
53
53
  exportV4(data: ExportItem): Promise<ResponseResult>;
54
54
  exportV5(data: ExportItem): Promise<ResponseResult>;
55
55
  newFilterContainer(logic: 'and' | 'or', ...filters: Filter[]): Filter;
56
- newFilter(field: string, operator: Operator, value: any): Filter;
56
+ newFilter(field: string, operator: Operator, value: any, valueIsField?: boolean): Filter;
57
57
  newFilterV4(field: string, operator: Operator, value: string): Filter;
58
58
  newBindingFilter(column: string, operator: Operator, sourceField: string, subField?: string): Filter;
59
59
  newSort(field: string, dir?: 1 | -1): Sort;
@@ -1 +1 @@
1
- {"version":3,"file":"component-base.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["classes/base/component-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-base.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["classes/base/component-base.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-form-base.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["classes/base/data-form-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-form-base.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["classes/base/data-form-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAS,SAAS,EAAE,MAAM,EAAU,WAAW,EAAa,MAAM,eAAe,CAAC;AACxI,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AAMxF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAmB,YAAY,EAAE,eAAe,EAAE,eAAe,EAAqE,SAAS,EAAE,eAAe,EAA2D,MAAM,gBAAgB,CAAC;AACzP,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,8BACsB,YAAa,SAAQ,aAAc,YAAW,MAAM,EAAE,SAAS;IAEhC,QAAQ,EAAE,iBAAiB,CAAC;IACjC,WAAW,EAAE,UAAU,CAAC;IAC5B,OAAO,EAAE,UAAU,CAAC;IACb,cAAc,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAEvE,aAAa,EAAE,eAAe,CAAC;IAC/B,KAAK,EAAE,YAAY,CAAsB;IACzC,aAAa,EAAE,OAAO,CAAS;IAE9B,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;IACpD,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;IACrD,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;IACtD,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;IACvD,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;IACzD,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;IAEpE,qBAAqB,UAAS;IAC9B,OAAO,CAAC,2BAA2B,CAAqC;IACxE,oBAAoB,SAAM;IAC1B,oBAAoB,SAAM;IAC1B,OAAO,EAAE,eAAe,CAAyB;IAEjD,EAAE;;;;;;;;;MAA8B;IAEhC,YAAY,EAAE,GAAG,CAAC;IAClB,gBAAgB,KAAM;IACtB,eAAe,EAAE,MAAM,CAAC;IAExB,aAAa,UAAQ;IACrB,QAAQ,UAAQ;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,UAAS;IACf,aAAa,MAAQ;IACrB,aAAa,MAAQ;IACrB,cAAc,EAAE,GAAG,CAAM;IACzB,eAAe,UAAQ;IAChB,YAAY,EAAE,OAAO,CAAS;IAE9B,gBAAgB,EAAE,eAAe,CAAC;IAClC,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,cAAc,CAAC;IAChC,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,oBAAoB,EAAE,mBAAmB,CAAC;IAC1C,YAAY,EAAE,WAAW,CAAC;IAC1B,WAAW,EAAE,UAAU,CAAC;IACxB,sBAAsB,EAAE,qBAAqB,CAAC;IAC9C,YAAY,EAAE,WAAW,CAAC;gBAG7B,SAAS,EAAE,QAAQ;IAmBvB,QAAQ;IAIR,eAAe,CAAC,cAAc,KAAA;IAa9B,aAAa;IA+EP,wBAAwB,CAAC,GAAG,EAAE,SAAS;IAI7C,qBAAqB,CAAC,GAAG,EAAE,SAAS,EAAE,eAAe,KAAA;IAU/C,gBAAgB,CAAC,SAAS,EAAE,SAAS;YAI7B,iBAAiB;IAc/B,iBAAiB;IAUX,iBAAiB;IAIjB,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC;IAI1C,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC;YAIlC,SAAS;IAwDjB,WAAW,CAAC,GAAG,EAAE,SAAS;IAIhC;;OAEG;IACG,oBAAoB,CAAC,IAAI,KAAA;IAgD/B,OAAO,CAAC,YAAY;IAwCpB,OAAO,CAAC,mBAAmB;IAa3B,qBAAqB,CAAC,MAAM,EAAE,eAAe;IAc7C,wBAAwB,CAAC,MAAM,EAAE,eAAe;IAchD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAKlC,gBAAgB,CAAC,IAAI,KAAA;IAG3B,YAAY;YAIE,IAAI;IAyBlB,gBAAgB;IAIhB,qBAAqB;IAIf,kBAAkB;IAIlB,YAAY,CAAC,kBAAkB,EAAE,OAAO;YAIhC,gBAAgB;IAc9B,oBAAoB,CAAC,SAAS,KAAA;IAI9B,UAAU;IAIV,qBAAqB,CAAC,SAAS,KAAA;IAI/B,YAAY,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAGvC,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAGxD,gBAAgB;YAIR,QAAQ;IAoBtB,OAAO,CAAC,sBAAsB;YAkBhB,OAAO;IAsBrB,sBAAsB,IAAI,OAAO,CAAC,cAAc,CAAC;IAIjD,iBAAiB;YAIH,QAAQ;IAuBtB,iBAAiB;IAIjB,sBAAsB,IAAI,OAAO,CAAC,cAAc,CAAC;IAIjD,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,sBAAsB;IAW9B,mBAAmB,CAAC,KAAK,KAAA;IAYnB,iBAAiB,CAAC,IAAI,EAAE,SAAS;IAIvC,mBAAmB,CAAC,GAAG,KAAA;IAKvB,WAAW,CAAC,GAAG,KAAA;IAOf,aAAa,CAAC,GAAG,KAAA;IAIjB,cAAc,CAAC,GAAG,KAAA;IAIlB,kBAAkB,CAAC,WAAW,KAAA,EAAE,UAAU,KAAA;IAI1C,iBAAiB,CAAC,WAAW,KAAA,EAAE,QAAQ,KAAA;IAIvC,aAAa,IAAI,SAAS;IAI1B,aAAa;IAIb,WAAW;IAIX,WAAW;CAGd"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-base.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["classes/base/data-list-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-list-base.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["classes/base/data-list-base.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,7 @@ export declare class PublicFunction {
48
48
  static getSignalrConfig(environment: any): import("ng2-signalr").SignalRConfiguration;
49
49
  static registerLocaleData(locale?: any, language?: any): void;
50
50
  static importRootModule(environment: any): (typeof FormsModule | typeof BrowserModule | import("@angular/core").ModuleWithProviders<TranslateModule>)[];
51
- static useRootProvider(enviromment: any): (typeof ConfirmationService | typeof DecimalPipe | typeof DatePipe | typeof MessageService | typeof TranslateService | typeof NotifierService | typeof EntityWorkflowHistoryService | typeof EntityWorkflowSettingService | typeof EntityPermissionService | typeof SafeHtmlPipe | typeof UserFormatPipe | typeof UsersFormatPipe | typeof HtmlFormatPipe | typeof MasterDataPipe | typeof OrganizationFormatPipe | typeof OrganizationsFormatPipe | {
51
+ static useRootProvider(enviromment: any): (typeof ConfirmationService | typeof DatePipe | typeof DecimalPipe | typeof MessageService | typeof TranslateService | typeof NotifierService | typeof EntityWorkflowHistoryService | typeof EntityWorkflowSettingService | typeof EntityPermissionService | typeof SafeHtmlPipe | typeof UserFormatPipe | typeof UsersFormatPipe | typeof HtmlFormatPipe | typeof MasterDataPipe | typeof OrganizationFormatPipe | typeof OrganizationsFormatPipe | {
52
52
  provide: import("@angular/core").InjectionToken<string>;
53
53
  useValue: string;
54
54
  useClass?: undefined;
@@ -120,8 +120,8 @@ export declare class CrudFormComponent extends ComponentBase implements OnInit,
120
120
  triggerChange(fieldPath: any): void;
121
121
  ngAfterViewInit(): void;
122
122
  setIsLoadedDataEdit(value: boolean): void;
123
- getControlType(control: any): "custom" | "address" | "button" | "label" | "table" | "template" | "textarea" | "title" | "mask" | "switch" | "text" | "percent" | "autocomplete" | "dropdown" | "datetime" | "congviec" | "money" | "container" | "autocomplete-picker" | "entity-picker" | "vanban" | "spanControl" | "numberrange" | "phoneOrfax" | "datetimerange" | "editor" | "common-picker" | "user-picker" | "organization-picker" | "cocautochuc-picker" | "cocautochuc" | "checkbox" | "checkboxlist" | "radiobuttonlist" | "fileUpload" | "serviceFileUpload" | "fileManager" | "colorPicker" | "colorControl";
124
- getViewModeDataType(control: any): "user" | "address" | "html" | "label" | "table" | "title" | "mask" | "string" | "date" | "boolean" | "datetime" | "money" | "container" | "fileUpload" | "fileManager" | "colorPicker" | "colorControl" | "hasDataSource" | "fileServiceUpload" | "app-key-value";
123
+ getControlType(control: any): "custom" | "address" | "button" | "label" | "table" | "template" | "textarea" | "title" | "mask" | "switch" | "text" | "percent" | "datetime" | "congviec" | "money" | "container" | "autocomplete-picker" | "entity-picker" | "vanban" | "spanControl" | "numberrange" | "phoneOrfax" | "datetimerange" | "dropdown" | "editor" | "common-picker" | "user-picker" | "organization-picker" | "cocautochuc-picker" | "cocautochuc" | "autocomplete" | "checkbox" | "checkboxlist" | "radiobuttonlist" | "fileUpload" | "serviceFileUpload" | "fileManager" | "colorPicker" | "colorControl";
124
+ getViewModeDataType(control: any): "user" | "address" | "html" | "label" | "table" | "title" | "mask" | "string" | "boolean" | "date" | "datetime" | "money" | "container" | "fileUpload" | "fileManager" | "colorPicker" | "colorControl" | "hasDataSource" | "fileServiceUpload" | "app-key-value";
125
125
  validateForm(setValidateForm?: boolean): Promise<boolean>;
126
126
  private validateModel;
127
127
  validateFormControl(fieldPath: any): Promise<boolean>;
package/enums/common.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export declare enum PermissionBase {
2
2
  READ = 1,
3
3
  EDIT = 2,
4
- DELETE = 4
4
+ DELETE = 4,
5
+ FULL = 7
5
6
  }
6
7
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["enums/common.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACtB,IAAI,IAAI;IACR,IAAI,IAAI;IACR,MAAM,IAAI;CACb"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"../../../../projects/tnx-shared/src/lib/","sources":["enums/common.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACtB,IAAI,IAAI;IACR,IAAI,IAAI;IACR,MAAM,IAAI;IACV,IAAI,IAAI;CACX"}
@@ -180,10 +180,11 @@ export class ComponentBase {
180
180
  filters: [...filters]
181
181
  });
182
182
  }
183
- newFilter(field, operator, value) {
183
+ newFilter(field, operator, value, valueIsField = false) {
184
184
  return new Filter({
185
185
  field, operator,
186
- value: JSON.stringify(value)
186
+ value: JSON.stringify(value),
187
+ valueIsField
187
188
  });
188
189
  }
189
190
  newFilterV4(field, operator, value) {
@@ -510,4 +511,4 @@ ComponentBase.propDecorators = {
510
511
  parentModel: [{ type: Input }],
511
512
  parentContext: [{ type: Input }]
512
513
  };
513
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWJhc2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFvQixNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVB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QUFLLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDO2FBQ25DLENBQUMsQ0FBQztZQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNsRixJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxXQUFXLENBQUMsb0NBQW9DLENBQUMsQ0FBQzthQUN6RjtZQUNELElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNkLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN0QyxJQUFJLElBQUksR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDcEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0tBQUE7SUFDSyxZQUFZLENBQUMsT0FBWTs7WUFDM0IsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO0tBQUE7OztZQXBnQkosU0FBUzs7O1lBOUJVLFFBQVE7Ozs7MEJBZ0N2QixLQUFLOzRCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSwgTG9jYXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29udGV4dC9hcHBsaWNhdGlvbi1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2NvbXBvbmVudC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2RlbFNoYXJlTGlua0J5UGVybWlzc2lvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2hhcmUtbGluay1ieS1wZXJtaXNzaW9uL21vZGVscy9zaGFyZS1saW5rLWJ5LXBlcm1pc3Npb24nO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vY29uZmlncy9jb21wb25lbnQtY29udGFudHMnO1xyXG5pbXBvcnQgeyBDb21DdHhDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25maWdzL2NvbXBvbmVudC1jb250ZXh0LmNvbnN0YW50JztcclxuaW1wb3J0IHsgUGVybWlzc2lvbkJhc2UgfSBmcm9tICcuLi8uLi9lbnVtcy9jb21tb24nO1xyXG5pbXBvcnQgeyBFeHBvcnRJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V4cG9ydC1pdGVtJztcclxuaW1wb3J0IHsgRmlsdGVyLCBTb3J0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3J1ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVWNFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW1wbGF0ZS12NC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVJbnN0YW5jZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW1wbGF0ZWluc3RhbmNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBnZXRTdHJpbmdEYXRlVk4gfSBmcm9tICcuLi8uLi91dGlscy9kYXRlJztcclxuaW1wb3J0IHsgRXhwb3J0SXRlbVR5cGUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQge1xyXG4gICAgQWRkcmVzc0NvbnRyb2xTY2hlbWEsIEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEsXHJcbiAgICBDaGVja2JveENvbnRyb2xTY2hlbWEsIENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYSwgQ29DYXVUb0NodWNQaWNrZXJDb250cm9sU2NoZW1hLFxyXG4gICAgQ3J1ZExpc3RTZXR0aW5nLFxyXG4gICAgRGF0ZVRpbWVDb250cm9sU2NoZW1hLCBEcm9wZG93bkNvbnRyb2xTY2hlbWEsIEZpbGVNYW5hZ2VyQ29udHJvbFNjaGVtYSwgRmlsZVVwbG9hZENvbnRyb2xTY2hlbWEsXHJcbiAgICBGb3JtU2NoZW1hQmFzZSwgTW9kZWxTY2hlbWEsIE9wZXJhdG9yLCBTd2l0Y2hDb250cm9sU2NoZW1hLCBUYWJsZVNjaGVtYVxyXG59IGZyb20gJy4uL2Zvcm0tc2NoZW1hJztcclxuXHJcbmV4cG9ydCBjb25zdCBFWFBPUlRfVkVSU0lPTl9WNCA9IDQ7XHJcbmV4cG9ydCBjb25zdCBFWFBPUlRfVkVSU0lPTl9WNSA9IDU7XHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoKSBwYXJlbnRNb2RlbDogYW55O1xyXG4gICAgQElucHV0KCkgc2V0IHBhcmVudENvbnRleHQodmFsdWU6IENvbXBvbmVudENvbnRleHRTZXJ2aWNlKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5wYXJlbnQgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgZ2V0IHBhcmVudENvbnRleHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5wYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgbW9kZWw6IGFueTtcclxuICAgIG1vZGVsU2NoZW1hOiBNb2RlbFNjaGVtYVtdID0gW107XHJcbiAgICBjb250ZXh0OiBDb21wb25lbnRDb250ZXh0U2VydmljZTtcclxuICAgIHJvb3RNb2RlbDogYW55O1xyXG4gICAgcm9vdENvbnRleHQ6IENvbXBvbmVudENvbnRleHRTZXJ2aWNlO1xyXG4gICAgZ3VpZEVtcHR5ID0gJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCc7XHJcblxyXG4gICAgcHVibGljIF91bnN1YnNjcmliZUFsbDogU3ViamVjdDxhbnk+O1xyXG4gICAgcHJvdGVjdGVkIF9jb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlO1xyXG4gICAgcHJvdGVjdGVkIF9hcHBDb250ZXh0OiBBcHBsaWNhdGlvbkNvbnRleHRTZXJ2aWNlO1xyXG4gICAgcHJvdGVjdGVkIF9jb21wb25lbnRDb250ZXh0OiBDb21wb25lbnRDb250ZXh0U2VydmljZTtcclxuICAgIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yO1xyXG4gICAgcHJvdGVjdGVkIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGU7XHJcbiAgICBwcm90ZWN0ZWQgX2NydWRTZXJ2aWNlOiBDcnVkU2VydmljZTtcclxuICAgIHByb3RlY3RlZCBfZGF0ZVBpcGU6IERhdGVQaXBlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3RvciwgY29tcG9uZW50TmFtZT86IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsID0gbmV3IFN1YmplY3QoKTtcclxuICAgICAgICB0aGlzLl9pbmplY3RvciA9IGluamVjdG9yO1xyXG4gICAgICAgIHRoaXMuX2FwcENvbnRleHQgPSBpbmplY3Rvci5nZXQoQXBwbGljYXRpb25Db250ZXh0U2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5fY29tcG9uZW50Q29udGV4dCA9IGluamVjdG9yLmdldChDb21wb25lbnRDb250ZXh0U2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGUgPSBpbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUpO1xyXG4gICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KENydWRTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLl9jb21tb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KENvbW1vblNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuX2RhdGVQaXBlID0gaW5qZWN0b3IuZ2V0KERhdGVQaXBlKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY29tcG9uZW50Q29udGV4dCA9IHRoaXMuX2FwcENvbnRleHQuYWRkQ29tcG9uZW50Q29udGV4dCh0aGlzLl9jb21wb25lbnRDb250ZXh0LCB0aGlzLl9hY3RpdmF0ZWRSb3V0ZSwgdGhpcy5nZXRDb21wb25lbnRJZCgpKTtcclxuICAgICAgICBpZiAodGhpcy5fY29tcG9uZW50Q29udGV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsID0gdGhpcy5fY29tcG9uZW50Q29udGV4dC5kYXRhO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLl9jb21wb25lbnRDb250ZXh0O1xyXG4gICAgICAgICAgICB0aGlzLnJvb3RDb250ZXh0ID0gdGhpcy5fY29tcG9uZW50Q29udGV4dC5yb290O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5yb290TW9kZWwgPSB0aGlzLnJvb3RDb250ZXh0LmRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwuY29tcG9uZW50U3VicyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogT24gZGVzdHJveVxyXG4gICAgKi9cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gYWxsIHN1YnNjcmlwdGlvbnNcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuY29tcG9uZW50U3Vicykge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLm1vZGVsLmNvbXBvbmVudFN1YnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzdWIpXHJcbiAgICAgICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRleHQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRlc3Ryb3lDb250ZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldENvbXBvbmVudElkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbW1vblNlcnZpY2UucmFuZG9tU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3Vic2NyaWJlUm9vdChuYW1lOiBzdHJpbmcsIGNhbGxCYWNrOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmNvbXBvbmVudFN1YnMucHVzaCh0aGlzLnJvb3RDb250ZXh0LnN1YnNjcmliZShuYW1lLCBjYWxsQmFjaykpO1xyXG4gICAgfVxyXG5cclxuICAgIHN1YnNjcmliZShuYW1lOiBzdHJpbmcsIGNhbGxCYWNrOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmNvbXBvbmVudFN1YnMucHVzaCh0aGlzLmNvbnRleHQuc3Vic2NyaWJlKG5hbWUsIGNhbGxCYWNrKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3Vic2NyaWJlT25jZShuYW1lOiBzdHJpbmcsIGNhbGxCYWNrOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmNvbXBvbmVudFN1YnMucHVzaCh0aGlzLmNvbnRleHQuc3Vic2NyaWJlT25jZShuYW1lLCBjYWxsQmFjaykpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcGxheVN1YnNjcmliZShuYW1lOiBzdHJpbmcsIGNhbGxCYWNrOiBhbnkpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmNvbXBvbmVudFN1YnMucHVzaCh0aGlzLmNvbnRleHQucmVwbGF5U3Vic2NyaWJlKG5hbWUsIGNhbGxCYWNrKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2tCeUZ1bmNEZWZhdWx0KGluZGV4LCBpdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrQnlGdW5jSWQoaW5kZXgsIGl0ZW0pIHtcclxuICAgICAgICByZXR1cm4gaXRlbS5pZDtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVSZXNwb25zZShyZXM6IFJlc3BvbnNlUmVzdWx0LCBtZXNzYWdlPzogc3RyaW5nLCBjYWxsQmFjaz86IEZ1bmN0aW9uLCBjYWxsQmFja0Vycm9yPzogRnVuY3Rpb24pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY3J1ZFNlcnZpY2UuaGFuZGxlUmVzcG9uc2UocmVzLCBtZXNzYWdlLCBjYWxsQmFjaywgY2FsbEJhY2tFcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlUmVzcG9uc2VXaXRoV2FpdEJveChyZXM6IFJlc3BvbnNlUmVzdWx0LCBtZXNzYWdlPzogc3RyaW5nLCBjYWxsQmFjaz86IEZ1bmN0aW9uLCBjYWxsQmFja0Vycm9yPzogRnVuY3Rpb24pIHtcclxuICAgICAgICB0aGlzLmhpZGVXYWl0Qm94KCk7XHJcbiAgICAgICAgaWYgKCFyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBpZiAocmVzLmVycm9yID09IFZhbGlkYXRpb24uRVJSX1NZU19ERVYpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5qZWN0b3IuZ2V0KE5vdGlmaWVyU2VydmljZSkuc2hvd1dhcm5pbmcoJ0PDsyBs4buXaSB44bqjeSByYS4gTGnDqm4gaOG7hyBxdeG6o24gdHLhu4sgdmnDqm4gxJHhu4MgYmnhur90IHRow6ptIGNoaSB0aeG6v3QuJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLm1lc3NhZ2UgIT0gbnVsbCAmJiByZXMubWVzc2FnZSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luamVjdG9yLmdldChOb3RpZmllclNlcnZpY2UpLnNob3dXYXJuaW5nKHJlcy5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2luamVjdG9yLmdldChOb3RpZmllclNlcnZpY2UpLnNob3dXYXJuaW5nKHJlcy5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNhbGxCYWNrRXJyb3IpXHJcbiAgICAgICAgICAgICAgICBjYWxsQmFja0Vycm9yKHJlcyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UpXHJcbiAgICAgICAgICAgIHRoaXMuX2luamVjdG9yLmdldChOb3RpZmllclNlcnZpY2UpLnNob3dTdWNjZXNzKG1lc3NhZ2UpO1xyXG4gICAgICAgIGlmIChjYWxsQmFjaylcclxuICAgICAgICAgICAgY2FsbEJhY2socmVzKTtcclxuICAgIH1cclxuXHJcbiAgICBpc05vdE51bGxBcnJheShhcnIpIHtcclxuICAgICAgICByZXR1cm4gYXJyICE9IG51bGwgJiYgYXJyLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY1NvcnREZWZhdWx0KGEsIGIpIHtcclxuICAgICAgICBpZiAoYSA+IGIpXHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIGlmIChhID09IGIpXHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGRFeHBvcnRKb2Ioam9iOiBFeHBvcnRKb2IpIHtcclxuICAgIC8vICAgICB0aGlzLmNvbnRleHQuYWRkRXhwb3J0Sm9iKGpvYik7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgZXhwb3J0KGRhdGE6IEV4cG9ydEl0ZW0sIHZlcnNpb24gPSBFWFBPUlRfVkVSU0lPTl9WNCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnZXhwb3J0IHZlcnNpb246ICcgKyB2ZXJzaW9uKTtcclxuICAgICAgICBzd2l0Y2ggKHZlcnNpb24pIHtcclxuICAgICAgICAgICAgY2FzZSBFWFBPUlRfVkVSU0lPTl9WNDpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cG9ydFY0KGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlIEVYUE9SVF9WRVJTSU9OX1Y1OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXhwb3J0VjUoZGF0YSk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFeHBvcnQgdmVyc2lvbjogJHt2ZXJzaW9ufSBpcyBub3Qgc3VwcG9ydGVkIWApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnRFeGNlbFY1KGRhdGE6IGFueSwgdGVtcGxhdGVDb2RlOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3Qgc2hlZXQgPSBuZXcgRXhwb3J0SXRlbSh7XHJcbiAgICAgICAgICAgIHR5cGU6IEV4cG9ydEl0ZW1UeXBlLkV4Y2VsU2hlZXQsXHJcbiAgICAgICAgICAgIHRlbXBsYXRlQ29kZSxcclxuICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXHJcbiAgICAgICAgICAgIG5hbWU6ICdTaGVldDEnXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRXhwb3J0SXRlbSh7XHJcbiAgICAgICAgICAgIHR5cGU6IEV4cG9ydEl0ZW1UeXBlLkV4Y2VsRmlsZSxcclxuICAgICAgICAgICAgbmFtZTogZmlsZU5hbWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBmaWxlLmNoaWxkcmVuID0gW3NoZWV0XTtcclxuICAgICAgICByZXR1cm4gdGhpcy5leHBvcnQoZmlsZSwgRVhQT1JUX1ZFUlNJT05fVjUpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydFY0KGRhdGE6IEV4cG9ydEl0ZW0pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdGVtcGxhdGVWNFNlcnZpY2UgPSB0aGlzLl9pbmplY3Rvci5nZXQoVGVtcGxhdGVWNFNlcnZpY2UpO1xyXG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZVY0U2VydmljZS5leHBvcnROb3JtYWwoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0VjUoZGF0YTogRXhwb3J0SXRlbSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZUluc3RhbmNlU2VydmljZSA9IHRoaXMuX2luamVjdG9yLmdldChUZW1wbGF0ZUluc3RhbmNlU2VydmljZSk7XHJcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlSW5zdGFuY2VTZXJ2aWNlLmV4cG9ydE5vcm1hbChkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBuZXdGaWx0ZXJDb250YWluZXIobG9naWM6ICdhbmQnIHwgJ29yJywgLi4uZmlsdGVyczogRmlsdGVyW10pIHtcclxuICAgICAgICByZXR1cm4gbmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgIGxvZ2ljLFxyXG4gICAgICAgICAgICBmaWx0ZXJzOiBbLi4uZmlsdGVyc11cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZXdGaWx0ZXIoZmllbGQ6IHN0cmluZywgb3BlcmF0b3I6IE9wZXJhdG9yLCB2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICBmaWVsZCwgb3BlcmF0b3IsXHJcbiAgICAgICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZXdGaWx0ZXJWNChmaWVsZDogc3RyaW5nLCBvcGVyYXRvcjogT3BlcmF0b3IsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgIGZpZWxkLCBvcGVyYXRvcixcclxuICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZXdCaW5kaW5nRmlsdGVyKGNvbHVtbjogc3RyaW5nLCBvcGVyYXRvcjogT3BlcmF0b3IsIHNvdXJjZUZpZWxkOiBzdHJpbmcsIHN1YkZpZWxkPzogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICBmaWVsZDogY29sdW1uLFxyXG4gICAgICAgICAgICBvcGVyYXRvcixcclxuICAgICAgICAgICAgc291cmNlRmllbGQsXHJcbiAgICAgICAgICAgIHN1YkZpZWxkXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmV3U29ydChmaWVsZDogc3RyaW5nLCBkaXI6IDEgfCAtMSA9IDEpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFNvcnQoeyBmaWVsZCwgZGlyIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dXYWl0Qm94KG1lc3NhZ2U/OiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LmZpcmVFdmVudChDb21DdHhDb25zdGFudHMuUk9PVC5TSE9XX1dBSVRfQk9YLCB7XHJcbiAgICAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgICAgICAgIG1lc3NhZ2VcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlV2FpdEJveCgpIHtcclxuICAgICAgICB0aGlzLnJvb3RDb250ZXh0LmZpcmVFdmVudChDb21DdHhDb25zdGFudHMuUk9PVC5TSE9XX1dBSVRfQk9YLCB7XHJcbiAgICAgICAgICAgIHNob3c6IGZhbHNlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29weVRvQ2xpcGJvYXJkID0gc3RyID0+IHtcclxuICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XHJcbiAgICAgICAgZWwudmFsdWUgPSBzdHI7XHJcbiAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdyZWFkb25seScsICcnKTtcclxuICAgICAgICBlbC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcbiAgICAgICAgZWwuc3R5bGUubGVmdCA9ICctOTk5OXB4JztcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKTtcclxuICAgICAgICBlbC5zZWxlY3QoKTtcclxuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9wcmludFBkZihiYXNlU2VydmljZTogQmFzZVNlcnZpY2UsIGlkOiBzdHJpbmcsIHJvd0RhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1EZXRhaWwgPSAoYXdhaXQgYmFzZVNlcnZpY2UuZ2V0RGV0YWlsKGlkKSkuZGF0YTtcclxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgYmFzZVNlcnZpY2UuZ2V0RGF0YVRyaW5oS3koaXRlbURldGFpbCwgcm93RGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByaW50UGRmQmFzZShiYXNlU2VydmljZSwgaWQsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9wcmludFBkZkJ5U2NoZW1hKGJhc2VTZXJ2aWNlOiBCYXNlU2VydmljZSwgbW9kZWw6IGFueSwgc2NoZW1hczogRm9ybVNjaGVtYUJhc2VbXSkge1xyXG4gICAgICAgIGNvbnN0IHRtcE1vZGVsID0geyAuLi5tb2RlbCB9O1xyXG4gICAgICAgIGRlbGV0ZSB0bXBNb2RlbC5wcmludEZpbGVJZDtcclxuICAgICAgICBjb25zdCBkYXRhID0gW107XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fZ2V0S2V5VmFsdWUoZGF0YSwgJycsIHNjaGVtYXMsIHRtcE1vZGVsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcHJpbnRQZGZCYXNlKGJhc2VTZXJ2aWNlLCBtb2RlbC5pZCwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBfcHJpbnRQZGZCYXNlKGJhc2VTZXJ2aWNlOiBCYXNlU2VydmljZSwgaWQ6IHN0cmluZywgZGF0YTogYW55W10pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXR1cm4gYmFzZVNlcnZpY2UuZXhwb3J0VG9QZGYoaWQsIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIHRpZXVEZTogYmFzZVNlcnZpY2Uub2JqZWN0TmFtZSxcclxuICAgICAgICAgICAgICAgIGRhdGFcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgcmV0dXJuIDxSZXNwb25zZVJlc3VsdD57XHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdDw7MgbOG7l2kgeOG6o3kgcmEnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRMYWJlbChwcmVmaXg6IHN0cmluZywgbGFiZWw6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtsYWJlbH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldFZhbHVlRnJvbURhdGFzb3VyY2UoaXRlbVNlbGVjdGVkOiBhbnksIGlzTXVsdGlwbGU6IGJvb2xlYW4sIGZ1bmNHZXRMYWJlbDogKGl0ZW0pID0+IHN0cmluZykge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW1TZWxlY3RlZCAmJiBpdGVtU2VsZWN0ZWQubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gaXRlbVNlbGVjdGVkLm1hcChxID0+IGZ1bmNHZXRMYWJlbChxLnZhbHVlKSkuam9pbignLCAnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtU2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gZnVuY0dldExhYmVsKGl0ZW1TZWxlY3RlZC52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9nZXRLZXlWYWx1ZShyZXN1bHQ6IGFueVtdLCBwcmVmaXg6IHN0cmluZywgc2NoZW1hczogRm9ybVNjaGVtYUJhc2VbXSwgbW9kZWw6IGFueSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qgc2NoZW1hIG9mIHNjaGVtYXMpIHtcclxuICAgICAgICAgICAgaWYgKCFzY2hlbWEuaGlkZGVuXHJcbiAgICAgICAgICAgICAgICAmJiBzY2hlbWEuZmllbGQgIT0gJ3ByaW50RmlsZUlkJ1xyXG4gICAgICAgICAgICAgICAgJiYgc2NoZW1hLmxhYmVsXHJcbiAgICAgICAgICAgICAgICAmJiAhKHNjaGVtYSBpbnN0YW5jZW9mIEZpbGVVcGxvYWRDb250cm9sU2NoZW1hKVxyXG4gICAgICAgICAgICAgICAgJiYgIShzY2hlbWEgaW5zdGFuY2VvZiBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbW9kZWxbc2NoZW1hLmZpZWxkXTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbChwcmVmaXgsIHNjaGVtYS5sYWJlbCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBUYWJsZVNjaGVtYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRtcFNjaGVtYSA9IDxUYWJsZVNjaGVtYT5zY2hlbWE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbChwcmVmaXgsIHNjaGVtYS5sYWJlbCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3dEYXRhIG9mIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9nZXRLZXlWYWx1ZShyZXN1bHQsIGAke3ByZWZpeH1cXHRgLCB0bXBTY2hlbWEucm93VGVtcGxhdGUsIHJvd0RhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNwbGljZShyZXN1bHQubGVuZ3RoIC0gMSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgQWRkcmVzc0NvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0bXBTY2hlbWEgPSA8QWRkcmVzc0NvbnRyb2xTY2hlbWE+c2NoZW1hO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFiZWwocHJlZml4LCBzY2hlbWEubGFiZWwpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2dldEtleVZhbHVlKHJlc3VsdCwgYCR7cHJlZml4fVxcdGAsIHRtcFNjaGVtYS5fY29tcG9uZW50LnNldHRpbmcuc2NoZW1hLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZW1hIGluc3RhbmNlb2YgRGF0ZVRpbWVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0U3RyaW5nRGF0ZVZOKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgQ29DYXVUb0NodWNQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1TZWxlY3RlZCA9IGF3YWl0IHNjaGVtYS5fY29tcG9uZW50LmNvbnRyb2xQaWNrZXIuX2NvbXBvbmVudC5nZXREYXRhU2VsZWN0ZWRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRtcFNjaGVtYSA9IDxDb0NhdVRvQ2h1Y1BpY2tlckNvbnRyb2xTY2hlbWE+c2NoZW1hO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZnVuY0dldExhYmVsID0gdG1wU2NoZW1hLmZ1bmNHZXRMYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmdW5jR2V0TGFiZWwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jR2V0TGFiZWwgPSBpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS52YWx1ZVt0bXBTY2hlbWEuZGlzcGxheUZpZWxkXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5fZ2V0VmFsdWVGcm9tRGF0YXNvdXJjZShpdGVtU2VsZWN0ZWQsIHNjaGVtYS5tdWx0aXBsZSwgaXRlbSA9PiBpdGVtLnRlbik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVNlbGVjdGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLmZ1bmNHZXRMYWJlbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpdGVtU2VsZWN0ZWQubWFwKHEgPT4gdG1wU2NoZW1hLmZ1bmNHZXRMYWJlbChxLnZhbHVlKSkuam9pbignLCAnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaXRlbVNlbGVjdGVkLm1hcChxID0+IHEudmFsdWVbdG1wU2NoZW1hLmRpc3BsYXlGaWVsZF0pLmpvaW4oJywgJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1TZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2hlbWEuZnVuY0dldExhYmVsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNjaGVtYS5mdW5jR2V0TGFiZWwoaXRlbVNlbGVjdGVkLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaXRlbVNlbGVjdGVkLnZhbHVlW3NjaGVtYS5kaXNwbGF5RmllbGRdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbVNlbGVjdGVkID0gYXdhaXQgc2NoZW1hLl9jb21wb25lbnQuZ2V0RGF0YVNlbGVjdGVkVmFsdWUodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0bXBTY2hlbWEgPSA8QXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYT5zY2hlbWE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmdW5jR2V0TGFiZWwgPSB0bXBTY2hlbWEuZnVuY0dldExhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZ1bmNHZXRMYWJlbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNHZXRMYWJlbCA9IGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW3RtcFNjaGVtYS5kaXNwbGF5RmllbGRdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9nZXRWYWx1ZUZyb21EYXRhc291cmNlKGl0ZW1TZWxlY3RlZCwgc2NoZW1hLm11bHRpcGxlLCBmdW5jR2V0TGFiZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBDb0NhdVRvQ2h1Y0NvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG1wU2NoZW1hID0gPENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYT5zY2hlbWE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bmNHZXRMYWJlbCA9IGl0ZW0gPT4gaXRlbS5sYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcFNjaGVtYS5fY29tcG9uZW50Lm11bHRpU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gdG1wU2NoZW1hLl9jb21wb25lbnQubXVsdGlTZWxlY3QuX29wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2VsZWN0ZWQgPSBkYXRhU291cmNlLmZpbHRlcihxID0+IHZhbHVlLmluZGV4T2YoeCA9PiB4ID09IHEudmFsdWUpKS5tYXAocSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gdG1wU2NoZW1hLl9jb21wb25lbnQuZHJvcGRvd24uX29wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2VsZWN0ZWQgPSBkYXRhU291cmNlLmZpbmQocSA9PiBxLnZhbHVlID09IHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtU2VsZWN0ZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNlbGVjdGVkID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5fZ2V0VmFsdWVGcm9tRGF0YXNvdXJjZShpdGVtU2VsZWN0ZWQsIHNjaGVtYS5tdWx0aXBsZSwgZnVuY0dldExhYmVsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRtcFNjaGVtYSA9IDxEcm9wZG93bkNvbnRyb2xTY2hlbWE+c2NoZW1hO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNlbGVjdGVkID0gc2NoZW1hLl9jb21wb25lbnQuZGF0YVNvdXJjZUludGVybmFsLmZpbHRlcihxID0+IHZhbHVlLmluZGV4T2YoeCA9PiB4ID09IHEudmFsdWVbcS52YWx1ZS5fZHJvcGRvd252YWx1ZV0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TZWxlY3RlZCA9IHNjaGVtYS5fY29tcG9uZW50LmRhdGFTb3VyY2VJbnRlcm5hbC5maW5kKHEgPT4gcS52YWx1ZVtxLnZhbHVlLl9kcm9wZG93bnZhbHVlXSA9PSB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9nZXRWYWx1ZUZyb21EYXRhc291cmNlKGl0ZW1TZWxlY3RlZCwgc2NoZW1hLm11bHRpcGxlLCB0bXBTY2hlbWEuZnVuY0dldExhYmVsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgQ2hlY2tib3hDb250cm9sU2NoZW1hIHx8IHNjaGVtYSBpbnN0YW5jZW9mIFN3aXRjaENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJ0tow7RuZyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJ0PDsyc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFZhbHVlID0gdW5kZWZpbmVkIHRow6wga2hpIHNlcmlhbGl6ZSBz4bq9IGLhu4sgbeG6pXQgcHJvcFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbChwcmVmaXgsIHNjaGVtYS5sYWJlbCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdHJpbmdEYXRlKHZhbHVlKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XHJcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCAnZGQvTU0veXl5eScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZSwgJ2RkL01NL3l5eXknKTtcclxuICAgIH1cclxuICAgIC8vIGh0dHA6Ly9sb2NhbGhvc3Q6MjcyMzAvdW5pdmVyc2FsLWxpbms/c2VydmljZUNvZGU9Y29uZ3ZpZWMmZW50aXR5PURNX1ByaW9yaXR5JmVudGl0eUtleT0wOTExZjNlNy0zZGIwLTRiNjgtODdjZC0wN2Q0MjU3NDFlOWUmc3RhdGU9JnNvdXJjZVBhdGg9aHR0cDovL2xvY2FsaG9zdDoyNzIzMC9kbS1wcmlvcml0eVxyXG4gICAgcGFyc2VBdHRhY2hMaW5rKGNvbnRlbnQpIHtcclxuICAgICAgICBjb25zdCBsaW5rcyA9IGNvbnRlbnQuc3BsaXQoJ1xcclxcbicpO1xyXG4gICAgICAgIGNvbnN0IG9wID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBsaW5rIG9mIGxpbmtzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IGxpbmsuc3BsaXQoJz8nKTtcclxuICAgICAgICAgICAgaWYgKGFyci5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0ZW1wID0gYXJyWzFdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcXVlcnkgPSB0aGlzLnBhcnNlUXVlcnlTdHJpbmcodGVtcCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocXVlcnkgJiYgcXVlcnkuc2VydmljZUNvZGUgJiYgcXVlcnkuZW50aXR5ICYmIHF1ZXJ5LmVudGl0eUtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5LnJhd0xpbmsgPSBsaW5rO1xyXG4gICAgICAgICAgICAgICAgICAgIG9wLnB1c2gocXVlcnkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBsaW5rICR7bGlua30gaW52YWxpZCB0byBwYXJzZWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvcDtcclxuICAgIH1cclxuICAgIHByaXZhdGUgcGFyc2VRdWVyeVN0cmluZyhxdWVyeTogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBpZiAoIXF1ZXJ5KSByZXR1cm4gbnVsbDtcclxuICAgICAgICBpZiAocXVlcnkuc3RhcnRzV2l0aCgnPycpKSBxdWVyeSA9IHF1ZXJ5LnN1YnN0cmluZygxKTtcclxuICAgICAgICBjb25zdCBhcnIgPSBxdWVyeS5zcGxpdCgnJicpO1xyXG4gICAgICAgIGNvbnN0IG9iaiA9IHt9O1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcCA9IGl0ZW0uc3BsaXQoJz0nKTtcclxuICAgICAgICAgICAgaWYgKHRlbXBbMV0pIHtcclxuICAgICAgICAgICAgICAgIG9ialt0ZW1wWzBdXSA9IGRlY29kZVVSSUNvbXBvbmVudCh0ZW1wWzFdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9ialt0ZW1wWzBdXSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuICAgIGFzeW5jIGdldENvcHlQYXRoKHNldHRpbmc6IENydWRMaXN0U2V0dGluZywgcm93RGF0YTogYW55LCBwZXJtaXNzaW9uOiBQZXJtaXNzaW9uQmFzZSA9IFBlcm1pc3Npb25CYXNlLlJFQUQpIHtcclxuICAgICAgICBjb25zdCBpdGVtU2hhcmVzOiBNb2RlbFNoYXJlTGlua0J5UGVybWlzc2lvbiA9IG5ldyBNb2RlbFNoYXJlTGlua0J5UGVybWlzc2lvbigpO1xyXG4gICAgICAgIGl0ZW1TaGFyZXMubGlua1RvTWVudSA9IGAke3RvcC5sb2NhdGlvbi5vcmlnaW59JHt0b3AubG9jYXRpb24ucGF0aG5hbWV9YDtcclxuICAgICAgICBpdGVtU2hhcmVzLnNvdXJjZVBhdGggPSBgJHtlbmNvZGVVUklDb21wb25lbnQodG9wLmxvY2F0aW9uLmhyZWYpfWA7XHJcbiAgICAgICAgaXRlbVNoYXJlcy50YXJnZXRQYXRoID0gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KHNldHRpbmcudGFyZ2V0UGF0aCl9YDtcclxuICAgICAgICBpdGVtU2hhcmVzLm9iamVjdERpc3BsYXlOYW1lID0gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KHNldHRpbmcub2JqZWN0TmFtZSl9YDtcclxuICAgICAgICBsZXQgZGlzcGxheUZpZWxkID0gJyc7XHJcbiAgICAgICAgaWYgKHNldHRpbmcuZGlzcGxheUZpZWxkKSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXlGaWVsZCA9IHRoaXMuX2NvbW1vblNlcnZpY2UuaXNTdHJpbmcoc2V0dGluZy5kaXNwbGF5RmllbGQpID8gc2V0dGluZy5kaXNwbGF5RmllbGQgOiAoc2V0dGluZy5kaXNwbGF5RmllbGQgYXMgYW55KSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWRpc3BsYXlGaWVsZCkge1xyXG4gICAgICAgICAgICBjb25zdCBsaW5rQ29sdW1uID0gc2V0dGluZy5jb2xzLmZpbmQoeCA9PiB4LnNob3dFZGl0TGluayk7XHJcbiAgICAgICAgICAgIGRpc3BsYXlGaWVsZCA9IGxpbmtDb2x1bW4/LmZpZWxkO1xyXG4gICAgICAgICAgICBpZiAoIWRpc3BsYXlGaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpZWxkID0gJ2lkJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpdGVtU2hhcmVzLmRpc3BsYXlGaWVsZCA9IGRpc3BsYXlGaWVsZDtcclxuICAgICAgICBpdGVtU2hhcmVzLmxzdEl0ZW1EYXRhID0gW107XHJcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBhd2FpdCB0aGlzLmdldExpbmtTdGF0ZShyb3dEYXRhKTtcclxuICAgICAgICBpdGVtU2hhcmVzLmxzdEl0ZW1EYXRhLnB1c2goe1xyXG4gICAgICAgICAgICBpdGVtSWQ6IHJvd0RhdGEuaWQsXHJcbiAgICAgICAgICAgIHBlcm1pc3Npb24sXHJcbiAgICAgICAgICAgIHN0YXRlOiBlbmNvZGVVUklDb21wb25lbnQoc3RhdGUpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgZGljUGVybWlzc2lvbklkID0gKGF3YWl0IHNldHRpbmcuYmFzZVNlcnZpY2UuZ2V0U2hhcmVkS2V5KGl0ZW1TaGFyZXMpKS5kYXRhO1xyXG4gICAgICAgIGlmICghZGljUGVybWlzc2lvbklkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2luamVjdG9yLmdldChOb3RpZmllclNlcnZpY2UpLnNob3dXYXJuaW5nKCdC4bqhbiBraMO0bmcgY8OzIHF1eeG7gW4gY2hpYSBz4bq7IGLhuqNuIGdoaScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcGF0aCA9ICcnO1xyXG4gICAgICAgIGl0ZW1TaGFyZXMubHN0SXRlbURhdGEuZm9yRWFjaChpdGVtRGF0YSA9PiB7XHJcbiAgICAgICAgICAgIHBhdGggKz0gYCR7ZGljUGVybWlzc2lvbklkW2l0ZW1EYXRhLml0ZW1JZF19XFxuYDtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgIH1cclxuICAgIGFzeW5jIGdldExpbmtTdGF0ZShyb3dEYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbn1cclxuIl19
514
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWJhc2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFvQixNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyRUFBMkUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVB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QyxFQUFFO2dCQUNsQixVQUFVO2dCQUNWLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7YUFDbkMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2xGLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2FBQ3pGO1lBQ0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2QsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3RDLElBQUksSUFBSSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7S0FBQTtJQUNLLFlBQVksQ0FBQyxPQUFZOztZQUMzQixPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7S0FBQTs7O1lBcmdCSixTQUFTOzs7WUE5QlUsUUFBUTs7OzswQkFnQ3ZCLEtBQUs7NEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlLCBMb2NhdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb250ZXh0L2FwcGxpY2F0aW9uLWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbnRleHQvY29tcG9uZW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZGVsU2hhcmVMaW5rQnlQZXJtaXNzaW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9zaGFyZS1saW5rLWJ5LXBlcm1pc3Npb24vbW9kZWxzL3NoYXJlLWxpbmstYnktcGVybWlzc2lvbic7XHJcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi9jb25maWdzL2NvbXBvbmVudC1jb250YW50cyc7XHJcbmltcG9ydCB7IENvbUN0eENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbmZpZ3MvY29tcG9uZW50LWNvbnRleHQuY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uQmFzZSB9IGZyb20gJy4uLy4uL2VudW1zL2NvbW1vbic7XHJcbmltcG9ydCB7IEV4cG9ydEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvZXhwb3J0LWl0ZW0nO1xyXG5pbXBvcnQgeyBGaWx0ZXIsIFNvcnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDcnVkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NydWQuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVY0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RlbXBsYXRlLXY0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZUluc3RhbmNlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RlbXBsYXRlaW5zdGFuY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IGdldFN0cmluZ0RhdGVWTiB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUnO1xyXG5pbXBvcnQgeyBFeHBvcnRJdGVtVHlwZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7XHJcbiAgICBBZGRyZXNzQ29udHJvbFNjaGVtYSwgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSxcclxuICAgIENoZWNrYm94Q29udHJvbFNjaGVtYSwgQ29DYXVUb0NodWNDb250cm9sU2NoZW1hLCBDb0NhdVRvQ2h1Y1BpY2tlckNvbnRyb2xTY2hlbWEsXHJcbiAgICBDcnVkTGlzdFNldHRpbmcsXHJcbiAgICBEYXRlVGltZUNvbnRyb2xTY2hlbWEsIERyb3Bkb3duQ29udHJvbFNjaGVtYSwgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hLCBGaWxlVXBsb2FkQ29udHJvbFNjaGVtYSxcclxuICAgIEZvcm1TY2hlbWFCYXNlLCBNb2RlbFNjaGVtYSwgT3BlcmF0b3IsIFN3aXRjaENvbnRyb2xTY2hlbWEsIFRhYmxlU2NoZW1hXHJcbn0gZnJvbSAnLi4vZm9ybS1zY2hlbWEnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEVYUE9SVF9WRVJTSU9OX1Y0ID0gNDtcclxuZXhwb3J0IGNvbnN0IEVYUE9SVF9WRVJTSU9OX1Y1ID0gNTtcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgpIHBhcmVudE1vZGVsOiBhbnk7XHJcbiAgICBASW5wdXQoKSBzZXQgcGFyZW50Q29udGV4dCh2YWx1ZTogQ29tcG9uZW50Q29udGV4dFNlcnZpY2UpIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LnBhcmVudCA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBnZXQgcGFyZW50Q29udGV4dCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0LnBhcmVudDtcclxuICAgIH1cclxuXHJcbiAgICBtb2RlbDogYW55O1xyXG4gICAgbW9kZWxTY2hlbWE6IE1vZGVsU2NoZW1hW10gPSBbXTtcclxuICAgIGNvbnRleHQ6IENvbXBvbmVudENvbnRleHRTZXJ2aWNlO1xyXG4gICAgcm9vdE1vZGVsOiBhbnk7XHJcbiAgICByb290Q29udGV4dDogQ29tcG9uZW50Q29udGV4dFNlcnZpY2U7XHJcbiAgICBndWlkRW1wdHkgPSAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJztcclxuXHJcbiAgICBwdWJsaWMgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT47XHJcbiAgICBwcm90ZWN0ZWQgX2NvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2U7XHJcbiAgICBwcm90ZWN0ZWQgX2FwcENvbnRleHQ6IEFwcGxpY2F0aW9uQ29udGV4dFNlcnZpY2U7XHJcbiAgICBwcm90ZWN0ZWQgX2NvbXBvbmVudENvbnRleHQ6IENvbXBvbmVudENvbnRleHRTZXJ2aWNlO1xyXG4gICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3I7XHJcbiAgICBwcm90ZWN0ZWQgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcclxuICAgIHByb3RlY3RlZCBfY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlO1xyXG4gICAgcHJvdGVjdGVkIF9kYXRlUGlwZTogRGF0ZVBpcGU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yLCBjb21wb25lbnROYW1lPzogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgICAgIHRoaXMuX2luamVjdG9yID0gaW5qZWN0b3I7XHJcbiAgICAgICAgdGhpcy5fYXBwQ29udGV4dCA9IGluamVjdG9yLmdldChBcHBsaWNhdGlvbkNvbnRleHRTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLl9jb21wb25lbnRDb250ZXh0ID0gaW5qZWN0b3IuZ2V0KENvbXBvbmVudENvbnRleHRTZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZSA9IGluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQ3J1ZFNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuX2NvbW1vblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQ29tbW9uU2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5fZGF0ZVBpcGUgPSBpbmplY3Rvci5nZXQoRGF0ZVBpcGUpO1xyXG5cclxuICAgICAgICB0aGlzLl9jb21wb25lbnRDb250ZXh0ID0gdGhpcy5fYXBwQ29udGV4dC5hZGRDb21wb25lbnRDb250ZXh0KHRoaXMuX2NvbXBvbmVudENvbnRleHQsIHRoaXMuX2FjdGl2YXRlZFJvdXRlLCB0aGlzLmdldENvbXBvbmVudElkKCkpO1xyXG4gICAgICAgIGlmICh0aGlzLl9jb21wb25lbnRDb250ZXh0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSB0aGlzLl9jb21wb25lbnRDb250ZXh0LmRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IHRoaXMuX2NvbXBvbmVudENvbnRleHQ7XHJcbiAgICAgICAgICAgIHRoaXMucm9vdENvbnRleHQgPSB0aGlzLl9jb21wb25lbnRDb250ZXh0LnJvb3Q7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnJvb3RNb2RlbCA9IHRoaXMucm9vdENvbnRleHQuZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5tb2RlbC5jb21wb25lbnRTdWJzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBPbiBkZXN0cm95XHJcbiAgICAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQoKTtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5jb21wbGV0ZSgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5jb21wb25lbnRTdWJzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViIG9mIHRoaXMubW9kZWwuY29tcG9uZW50U3Vicykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1YilcclxuICAgICAgICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQuZGVzdHJveUNvbnRleHQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29tcG9uZW50SWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY29tbW9uU2VydmljZS5yYW5kb21TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdWJzY3JpYmVSb290KG5hbWU6IHN0cmluZywgY2FsbEJhY2s6IGFueSkge1xyXG4gICAgICAgIHRoaXMubW9kZWwuY29tcG9uZW50U3Vicy5wdXNoKHRoaXMucm9vdENvbnRleHQuc3Vic2NyaWJlKG5hbWUsIGNhbGxCYWNrKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3Vic2NyaWJlKG5hbWU6IHN0cmluZywgY2FsbEJhY2s6IGFueSkge1xyXG4gICAgICAgIHRoaXMubW9kZWwuY29tcG9uZW50U3Vicy5wdXNoKHRoaXMuY29udGV4dC5zdWJzY3JpYmUobmFtZSwgY2FsbEJhY2spKTtcclxuICAgIH1cclxuXHJcbiAgICBzdWJzY3JpYmVPbmNlKG5hbWU6IHN0cmluZywgY2FsbEJhY2s6IGFueSkge1xyXG4gICAgICAgIHRoaXMubW9kZWwuY29tcG9uZW50U3Vicy5wdXNoKHRoaXMuY29udGV4dC5zdWJzY3JpYmVPbmNlKG5hbWUsIGNhbGxCYWNrKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVwbGF5U3Vic2NyaWJlKG5hbWU6IHN0cmluZywgY2FsbEJhY2s6IGFueSkge1xyXG4gICAgICAgIHRoaXMubW9kZWwuY29tcG9uZW50U3Vicy5wdXNoKHRoaXMuY29udGV4dC5yZXBsYXlTdWJzY3JpYmUobmFtZSwgY2FsbEJhY2spKTtcclxuICAgIH1cclxuXHJcbiAgICB0cmFja0J5RnVuY0RlZmF1bHQoaW5kZXgsIGl0ZW0pIHtcclxuICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2tCeUZ1bmNJZChpbmRleCwgaXRlbSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVJlc3BvbnNlKHJlczogUmVzcG9uc2VSZXN1bHQsIG1lc3NhZ2U/OiBzdHJpbmcsIGNhbGxCYWNrPzogRnVuY3Rpb24sIGNhbGxCYWNrRXJyb3I/OiBGdW5jdGlvbikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jcnVkU2VydmljZS5oYW5kbGVSZXNwb25zZShyZXMsIG1lc3NhZ2UsIGNhbGxCYWNrLCBjYWxsQmFja0Vycm9yKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVSZXNwb25zZVdpdGhXYWl0Qm94KHJlczogUmVzcG9uc2VSZXN1bHQsIG1lc3NhZ2U/OiBzdHJpbmcsIGNhbGxCYWNrPzogRnVuY3Rpb24sIGNhbGxCYWNrRXJyb3I/OiBGdW5jdGlvbikge1xyXG4gICAgICAgIHRoaXMuaGlkZVdhaXRCb3goKTtcclxuICAgICAgICBpZiAoIXJlcy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuZXJyb3IgPT0gVmFsaWRhdGlvbi5FUlJfU1lTX0RFVikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXMubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbmplY3Rvci5nZXQoTm90aWZpZXJTZXJ2aWNlKS5zaG93V2FybmluZygnQ8OzIGzhu5dpIHjhuqN5IHJhLiBMacOqbiBo4buHIHF14bqjbiB0cuG7iyB2acOqbiDEkeG7gyBiaeG6v3QgdGjDqm0gY2hpIHRp4bq/dC4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXMubWVzc2FnZSAhPSBudWxsICYmIHJlcy5tZXNzYWdlICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5qZWN0b3IuZ2V0KE5vdGlmaWVyU2VydmljZSkuc2hvd1dhcm5pbmcocmVzLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5qZWN0b3IuZ2V0KE5vdGlmaWVyU2VydmljZSkuc2hvd1dhcm5pbmcocmVzLmVycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY2FsbEJhY2tFcnJvcilcclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrRXJyb3IocmVzKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobWVzc2FnZSlcclxuICAgICAgICAgICAgdGhpcy5faW5qZWN0b3IuZ2V0KE5vdGlmaWVyU2VydmljZSkuc2hvd1N1Y2Nlc3MobWVzc2FnZSk7XHJcbiAgICAgICAgaWYgKGNhbGxCYWNrKVxyXG4gICAgICAgICAgICBjYWxsQmFjayhyZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTm90TnVsbEFycmF5KGFycikge1xyXG4gICAgICAgIHJldHVybiBhcnIgIT0gbnVsbCAmJiBhcnIubGVuZ3RoID4gMDtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jU29ydERlZmF1bHQoYSwgYikge1xyXG4gICAgICAgIGlmIChhID4gYilcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgaWYgKGEgPT0gYilcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZEV4cG9ydEpvYihqb2I6IEV4cG9ydEpvYikge1xyXG4gICAgLy8gICAgIHRoaXMuY29udGV4dC5hZGRFeHBvcnRKb2Ioam9iKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBleHBvcnQoZGF0YTogRXhwb3J0SXRlbSwgdmVyc2lvbiA9IEVYUE9SVF9WRVJTSU9OX1Y0KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdleHBvcnQgdmVyc2lvbjogJyArIHZlcnNpb24pO1xyXG4gICAgICAgIHN3aXRjaCAodmVyc2lvbikge1xyXG4gICAgICAgICAgICBjYXNlIEVYUE9SVF9WRVJTSU9OX1Y0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXhwb3J0VjQoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgRVhQT1JUX1ZFUlNJT05fVjU6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5leHBvcnRWNShkYXRhKTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEV4cG9ydCB2ZXJzaW9uOiAke3ZlcnNpb259IGlzIG5vdCBzdXBwb3J0ZWQhYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydEV4Y2VsVjUoZGF0YTogYW55LCB0ZW1wbGF0ZUNvZGU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBzaGVldCA9IG5ldyBFeHBvcnRJdGVtKHtcclxuICAgICAgICAgICAgdHlwZTogRXhwb3J0SXRlbVR5cGUuRXhjZWxTaGVldCxcclxuICAgICAgICAgICAgdGVtcGxhdGVDb2RlLFxyXG4gICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeShkYXRhKSxcclxuICAgICAgICAgICAgbmFtZTogJ1NoZWV0MSdcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBFeHBvcnRJdGVtKHtcclxuICAgICAgICAgICAgdHlwZTogRXhwb3J0SXRlbVR5cGUuRXhjZWxGaWxlLFxyXG4gICAgICAgICAgICBuYW1lOiBmaWxlTmFtZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGZpbGUuY2hpbGRyZW4gPSBbc2hlZXRdO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmV4cG9ydChmaWxlLCBFWFBPUlRfVkVSU0lPTl9WNSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0VjQoZGF0YTogRXhwb3J0SXRlbSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZVY0U2VydmljZSA9IHRoaXMuX2luamVjdG9yLmdldChUZW1wbGF0ZVY0U2VydmljZSk7XHJcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlVjRTZXJ2aWNlLmV4cG9ydE5vcm1hbChkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnRWNShkYXRhOiBFeHBvcnRJdGVtKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlSW5zdGFuY2VTZXJ2aWNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KFRlbXBsYXRlSW5zdGFuY2VTZXJ2aWNlKTtcclxuICAgICAgICByZXR1cm4gdGVtcGxhdGVJbnN0YW5jZVNlcnZpY2UuZXhwb3J0Tm9ybWFsKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIG5ld0ZpbHRlckNvbnRhaW5lcihsb2dpYzogJ2FuZCcgfCAnb3InLCAuLi5maWx0ZXJzOiBGaWx0ZXJbXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgbG9naWMsXHJcbiAgICAgICAgICAgIGZpbHRlcnM6IFsuLi5maWx0ZXJzXVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5ld0ZpbHRlcihmaWVsZDogc3RyaW5nLCBvcGVyYXRvcjogT3BlcmF0b3IsIHZhbHVlOiBhbnksIHZhbHVlSXNGaWVsZDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICBmaWVsZCwgb3BlcmF0b3IsXHJcbiAgICAgICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeSh2YWx1ZSksXHJcbiAgICAgICAgICAgIHZhbHVlSXNGaWVsZFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5ld0ZpbHRlclY0KGZpZWxkOiBzdHJpbmcsIG9wZXJhdG9yOiBPcGVyYXRvciwgdmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgZmllbGQsIG9wZXJhdG9yLFxyXG4gICAgICAgICAgICB2YWx1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5ld0JpbmRpbmdGaWx0ZXIoY29sdW1uOiBzdHJpbmcsIG9wZXJhdG9yOiBPcGVyYXRvciwgc291cmNlRmllbGQ6IHN0cmluZywgc3ViRmllbGQ/OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4sXHJcbiAgICAgICAgICAgIG9wZXJhdG9yLFxyXG4gICAgICAgICAgICBzb3VyY2VGaWVsZCxcclxuICAgICAgICAgICAgc3ViRmllbGRcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZXdTb3J0KGZpZWxkOiBzdHJpbmcsIGRpcjogMSB8IC0xID0gMSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgU29ydCh7IGZpZWxkLCBkaXIgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd1dhaXRCb3gobWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuZmlyZUV2ZW50KENvbUN0eENvbnN0YW50cy5ST09ULlNIT1dfV0FJVF9CT1gsIHtcclxuICAgICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgbWVzc2FnZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGVXYWl0Qm94KCkge1xyXG4gICAgICAgIHRoaXMucm9vdENvbnRleHQuZmlyZUV2ZW50KENvbUN0eENvbnN0YW50cy5ST09ULlNIT1dfV0FJVF9CT1gsIHtcclxuICAgICAgICAgICAgc2hvdzogZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb3B5VG9DbGlwYm9hcmQgPSBzdHIgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgICAgICBlbC52YWx1ZSA9IHN0cjtcclxuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3JlYWRvbmx5JywgJycpO1xyXG4gICAgICAgIGVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgICAgICBlbC5zdHlsZS5sZWZ0ID0gJy05OTk5cHgnO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWwpO1xyXG4gICAgICAgIGVsLnNlbGVjdCgpO1xyXG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX3ByaW50UGRmKGJhc2VTZXJ2aWNlOiBCYXNlU2VydmljZSwgaWQ6IHN0cmluZywgcm93RGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgaXRlbURldGFpbCA9IChhd2FpdCBiYXNlU2VydmljZS5nZXREZXRhaWwoaWQpKS5kYXRhO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBiYXNlU2VydmljZS5nZXREYXRhVHJpbmhLeShpdGVtRGV0YWlsLCByb3dEYXRhKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcHJpbnRQZGZCYXNlKGJhc2VTZXJ2aWNlLCBpZCwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX3ByaW50UGRmQnlTY2hlbWEoYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlLCBtb2RlbDogYW55LCBzY2hlbWFzOiBGb3JtU2NoZW1hQmFzZVtdKSB7XHJcbiAgICAgICAgY29uc3QgdG1wTW9kZWwgPSB7IC4uLm1vZGVsIH07XHJcbiAgICAgICAgZGVsZXRlIHRtcE1vZGVsLnByaW50RmlsZUlkO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSBbXTtcclxuICAgICAgICBhd2FpdCB0aGlzLl9nZXRLZXlWYWx1ZShkYXRhLCAnJywgc2NoZW1hcywgdG1wTW9kZWwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wcmludFBkZkJhc2UoYmFzZVNlcnZpY2UsIG1vZGVsLmlkLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF9wcmludFBkZkJhc2UoYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlLCBpZDogc3RyaW5nLCBkYXRhOiBhbnlbXSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBiYXNlU2VydmljZS5leHBvcnRUb1BkZihpZCwgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgdGlldURlOiBiYXNlU2VydmljZS5vYmplY3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgZGF0YVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICByZXR1cm4gPFJlc3BvbnNlUmVzdWx0PntcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ0PDsyBs4buXaSB44bqjeSByYSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldExhYmVsKHByZWZpeDogc3RyaW5nLCBsYWJlbDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3ByZWZpeH0ke2xhYmVsfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZ2V0VmFsdWVGcm9tRGF0YXNvdXJjZShpdGVtU2VsZWN0ZWQ6IGFueSwgaXNNdWx0aXBsZTogYm9vbGVhbiwgZnVuY0dldExhYmVsOiAoaXRlbSkgPT4gc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gbnVsbDtcclxuICAgICAgICBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICAgICAgICBpZiAoaXRlbVNlbGVjdGVkICYmIGl0ZW1TZWxlY3RlZC5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBpdGVtU2VsZWN0ZWQubWFwKHEgPT4gZnVuY0dldExhYmVsKHEudmFsdWUpKS5qb2luKCcsICcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW1TZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBmdW5jR2V0TGFiZWwoaXRlbVNlbGVjdGVkLnZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX2dldEtleVZhbHVlKHJlc3VsdDogYW55W10sIHByZWZpeDogc3RyaW5nLCBzY2hlbWFzOiBGb3JtU2NoZW1hQmFzZVtdLCBtb2RlbDogYW55KSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBzY2hlbWEgb2Ygc2NoZW1hcykge1xyXG4gICAgICAgICAgICBpZiAoIXNjaGVtYS5oaWRkZW5cclxuICAgICAgICAgICAgICAgICYmIHNjaGVtYS5maWVsZCAhPSAncHJpbnRGaWxlSWQnXHJcbiAgICAgICAgICAgICAgICAmJiBzY2hlbWEubGFiZWxcclxuICAgICAgICAgICAgICAgICYmICEoc2NoZW1hIGluc3RhbmNlb2YgRmlsZVVwbG9hZENvbnRyb2xTY2hlbWEpXHJcbiAgICAgICAgICAgICAgICAmJiAhKHNjaGVtYSBpbnN0YW5jZW9mIEZpbGVNYW5hZ2VyQ29udHJvbFNjaGVtYSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBtb2RlbFtzY2hlbWEuZmllbGRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsKHByZWZpeCwgc2NoZW1hLmxhYmVsKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFRhYmxlU2NoZW1hKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG1wU2NoZW1hID0gPFRhYmxlU2NoZW1hPnNjaGVtYTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsKHByZWZpeCwgc2NoZW1hLmxhYmVsKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvd0RhdGEgb2YgdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2dldEtleVZhbHVlKHJlc3VsdCwgYCR7cHJlZml4fVxcdGAsIHRtcFNjaGVtYS5yb3dUZW1wbGF0ZSwgcm93RGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3BsaWNlKHJlc3VsdC5sZW5ndGggLSAxLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBBZGRyZXNzQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRtcFNjaGVtYSA9IDxBZGRyZXNzQ29udHJvbFNjaGVtYT5zY2hlbWE7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbChwcmVmaXgsIHNjaGVtYS5sYWJlbCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZ2V0S2V5VmFsdWUocmVzdWx0LCBgJHtwcmVmaXh9XFx0YCwgdG1wU2NoZW1hLl9jb21wb25lbnQuc2V0dGluZy5zY2hlbWEsIHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBEYXRlVGltZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRTdHJpbmdEYXRlVk4odmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBDb0NhdVRvQ2h1Y1BpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbVNlbGVjdGVkID0gYXdhaXQgc2NoZW1hLl9jb21wb25lbnQuY29udHJvbFBpY2tlci5fY29tcG9uZW50LmdldERhdGFTZWxlY3RlZFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG1wU2NoZW1hID0gPENvQ2F1VG9DaHVjUGlja2VyQ29udHJvbFNjaGVtYT5zY2hlbWE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmdW5jR2V0TGFiZWwgPSB0bXBTY2hlbWEuZnVuY0dldExhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZ1bmNHZXRMYWJlbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNHZXRMYWJlbCA9IGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnZhbHVlW3RtcFNjaGVtYS5kaXNwbGF5RmllbGRdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9nZXRWYWx1ZUZyb21EYXRhc291cmNlKGl0ZW1TZWxlY3RlZCwgc2NoZW1hLm11bHRpcGxlLCBpdGVtID0+IGl0ZW0udGVuKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2hlbWEubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtU2VsZWN0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY2hlbWEuZnVuY0dldExhYmVsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGl0ZW1TZWxlY3RlZC5tYXAocSA9PiB0bXBTY2hlbWEuZnVuY0dldExhYmVsKHEudmFsdWUpKS5qb2luKCcsICcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpdGVtU2VsZWN0ZWQubWFwKHEgPT4gcS52YWx1ZVt0bXBTY2hlbWEuZGlzcGxheUZpZWxkXSkuam9pbignLCAnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjaGVtYS5mdW5jR2V0TGFiZWwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2NoZW1hLmZ1bmNHZXRMYWJlbChpdGVtU2VsZWN0ZWQudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpdGVtU2VsZWN0ZWQudmFsdWVbc2NoZW1hLmRpc3BsYXlGaWVsZF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtU2VsZWN0ZWQgPSBhd2FpdCBzY2hlbWEuX2NvbXBvbmVudC5nZXREYXRhU2VsZWN0ZWRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRtcFNjaGVtYSA9IDxBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hPnNjaGVtYTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZ1bmNHZXRMYWJlbCA9IHRtcFNjaGVtYS5mdW5jR2V0TGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZnVuY0dldExhYmVsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY0dldExhYmVsID0gaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdG1wU2NoZW1hLmRpc3BsYXlGaWVsZF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX2dldFZhbHVlRnJvbURhdGFzb3VyY2UoaXRlbVNlbGVjdGVkLCBzY2hlbWEubXVsdGlwbGUsIGZ1bmNHZXRMYWJlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0bXBTY2hlbWEgPSA8Q29DYXVUb0NodWNDb250cm9sU2NoZW1hPnNjaGVtYTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVuY0dldExhYmVsID0gaXRlbSA9PiBpdGVtLmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtU2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wU2NoZW1hLl9jb21wb25lbnQubXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSB0bXBTY2hlbWEuX2NvbXBvbmVudC5tdWx0aVNlbGVjdC5fb3B0aW9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TZWxlY3RlZCA9IGRhdGFTb3VyY2UuZmlsdGVyKHEgPT4gdmFsdWUuaW5kZXhPZih4ID0+IHggPT0gcS52YWx1ZSkpLm1hcChxID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSB0bXBTY2hlbWEuX2NvbXBvbmVudC5kcm9wZG93bi5fb3B0aW9ucztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TZWxlY3RlZCA9IGRhdGFTb3VyY2UuZmluZChxID0+IHEudmFsdWUgPT0gdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1TZWxlY3RlZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2VsZWN0ZWQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtU2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9nZXRWYWx1ZUZyb21EYXRhc291cmNlKGl0ZW1TZWxlY3RlZCwgc2NoZW1hLm11bHRpcGxlLCBmdW5jR2V0TGFiZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG1wU2NoZW1hID0gPERyb3Bkb3duQ29udHJvbFNjaGVtYT5zY2hlbWE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtU2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NoZW1hLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2VsZWN0ZWQgPSBzY2hlbWEuX2NvbXBvbmVudC5kYXRhU291cmNlSW50ZXJuYWwuZmlsdGVyKHEgPT4gdmFsdWUuaW5kZXhPZih4ID0+IHggPT0gcS52YWx1ZVtxLnZhbHVlLl9kcm9wZG93bnZhbHVlXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVNlbGVjdGVkID0gc2NoZW1hLl9jb21wb25lbnQuZGF0YVNvdXJjZUludGVybmFsLmZpbmQocSA9PiBxLnZhbHVlW3EudmFsdWUuX2Ryb3Bkb3dudmFsdWVdID09IHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX2dldFZhbHVlRnJvbURhdGFzb3VyY2UoaXRlbVNlbGVjdGVkLCBzY2hlbWEubXVsdGlwbGUsIHRtcFNjaGVtYS5mdW5jR2V0TGFiZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBDaGVja2JveENvbnRyb2xTY2hlbWEgfHwgc2NoZW1hIGluc3RhbmNlb2YgU3dpdGNoQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAnS2jDtG5nJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAnQ8OzJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVmFsdWUgPSB1bmRlZmluZWQgdGjDrCBraGkgc2VyaWFsaXplIHPhur0gYuG7iyBt4bqldCBwcm9wXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsKHByZWZpeCwgc2NoZW1hLmxhYmVsKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN0cmluZ0RhdGUodmFsdWUpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcclxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsICdkZC9NTS95eXl5Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAnZGQvTU0veXl5eScpO1xyXG4gICAgfVxyXG4gICAgLy8gaHR0cDovL2xvY2FsaG9zdDoyNzIzMC91bml2ZXJzYWwtbGluaz9zZXJ2aWNlQ29kZT1jb25ndmllYyZlbnRpdHk9RE1fUHJpb3JpdHkmZW50aXR5S2V5PTA5MTFmM2U3LTNkYjAtNGI2OC04N2NkLTA3ZDQyNTc0MWU5ZSZzdGF0ZT0mc291cmNlUGF0aD1odHRwOi8vbG9jYWxob3N0OjI3MjMwL2RtLXByaW9yaXR5XHJcbiAgICBwYXJzZUF0dGFjaExpbmsoY29udGVudCkge1xyXG4gICAgICAgIGNvbnN0IGxpbmtzID0gY29udGVudC5zcGxpdCgnXFxyXFxuJyk7XHJcbiAgICAgICAgY29uc3Qgb3AgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcclxuICAgICAgICAgICAgY29uc3QgYXJyID0gbGluay5zcGxpdCgnPycpO1xyXG4gICAgICAgICAgICBpZiAoYXJyLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlbXAgPSBhcnJbMV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBxdWVyeSA9IHRoaXMucGFyc2VRdWVyeVN0cmluZyh0ZW1wKTtcclxuICAgICAgICAgICAgICAgIGlmIChxdWVyeSAmJiBxdWVyeS5zZXJ2aWNlQ29kZSAmJiBxdWVyeS5lbnRpdHkgJiYgcXVlcnkuZW50aXR5S2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVlcnkucmF3TGluayA9IGxpbms7XHJcbiAgICAgICAgICAgICAgICAgICAgb3AucHVzaChxdWVyeSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYGxpbmsgJHtsaW5rfSBpbnZhbGlkIHRvIHBhcnNlYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9wO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBwYXJzZVF1ZXJ5U3RyaW5nKHF1ZXJ5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIGlmICghcXVlcnkpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGlmIChxdWVyeS5zdGFydHNXaXRoKCc/JykpIHF1ZXJ5ID0gcXVlcnkuc3Vic3RyaW5nKDEpO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IHF1ZXJ5LnNwbGl0KCcmJyk7XHJcbiAgICAgICAgY29uc3Qgb2JqID0ge307XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycikge1xyXG4gICAgICAgICAgICBjb25zdCB0ZW1wID0gaXRlbS5zcGxpdCgnPScpO1xyXG4gICAgICAgICAgICBpZiAodGVtcFsxXSkge1xyXG4gICAgICAgICAgICAgICAgb2JqW3RlbXBbMF1dID0gZGVjb2RlVVJJQ29tcG9uZW50KHRlbXBbMV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb2JqW3RlbXBbMF1dID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgZ2V0Q29weVBhdGgoc2V0dGluZzogQ3J1ZExpc3RTZXR0aW5nLCByb3dEYXRhOiBhbnksIHBlcm1pc3Npb246IFBlcm1pc3Npb25CYXNlID0gUGVybWlzc2lvbkJhc2UuUkVBRCkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1TaGFyZXM6IE1vZGVsU2hhcmVMaW5rQnlQZXJtaXNzaW9uID0gbmV3IE1vZGVsU2hhcmVMaW5rQnlQZXJtaXNzaW9uKCk7XHJcbiAgICAgICAgaXRlbVNoYXJlcy5saW5rVG9NZW51ID0gYCR7dG9wLmxvY2F0aW9uLm9yaWdpbn0ke3RvcC5sb2NhdGlvbi5wYXRobmFtZX1gO1xyXG4gICAgICAgIGl0ZW1TaGFyZXMuc291cmNlUGF0aCA9IGAke2VuY29kZVVSSUNvbXBvbmVudCh0b3AubG9jYXRpb24uaHJlZil9YDtcclxuICAgICAgICBpdGVtU2hhcmVzLnRhcmdldFBhdGggPSBgJHtlbmNvZGVVUklDb21wb25lbnQoc2V0dGluZy50YXJnZXRQYXRoKX1gO1xyXG4gICAgICAgIGl0ZW1TaGFyZXMub2JqZWN0RGlzcGxheU5hbWUgPSBgJHtlbmNvZGVVUklDb21wb25lbnQoc2V0dGluZy5vYmplY3ROYW1lKX1gO1xyXG4gICAgICAgIGxldCBkaXNwbGF5RmllbGQgPSAnJztcclxuICAgICAgICBpZiAoc2V0dGluZy5kaXNwbGF5RmllbGQpIHtcclxuICAgICAgICAgICAgZGlzcGxheUZpZWxkID0gdGhpcy5fY29tbW9uU2VydmljZS5pc1N0cmluZyhzZXR0aW5nLmRpc3BsYXlGaWVsZCkgPyBzZXR0aW5nLmRpc3BsYXlGaWVsZCA6IChzZXR0aW5nLmRpc3BsYXlGaWVsZCBhcyBhbnkpKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZGlzcGxheUZpZWxkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpbmtDb2x1bW4gPSBzZXR0aW5nLmNvbHMuZmluZCh4ID0+IHguc2hvd0VkaXRMaW5rKTtcclxuICAgICAgICAgICAgZGlzcGxheUZpZWxkID0gbGlua0NvbHVtbj8uZmllbGQ7XHJcbiAgICAgICAgICAgIGlmICghZGlzcGxheUZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQgPSAnaWQnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGl0ZW1TaGFyZXMuZGlzcGxheUZpZWxkID0gZGlzcGxheUZpZWxkO1xyXG4gICAgICAgIGl0ZW1TaGFyZXMubHN0SXRlbURhdGEgPSBbXTtcclxuICAgICAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IHRoaXMuZ2V0TGlua1N0YXRlKHJvd0RhdGEpO1xyXG4gICAgICAgIGl0ZW1TaGFyZXMubHN0SXRlbURhdGEucHVzaCh7XHJcbiAgICAgICAgICAgIGl0ZW1JZDogcm93RGF0YS5pZCxcclxuICAgICAgICAgICAgcGVybWlzc2lvbixcclxuICAgICAgICAgICAgc3RhdGU6IGVuY29kZVVSSUNvbXBvbmVudChzdGF0ZSlcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBkaWNQZXJtaXNzaW9uSWQgPSAoYXdhaXQgc2V0dGluZy5iYXNlU2VydmljZS5nZXRTaGFyZWRLZXkoaXRlbVNoYXJlcykpLmRhdGE7XHJcbiAgICAgICAgaWYgKCFkaWNQZXJtaXNzaW9uSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5faW5qZWN0b3IuZ2V0KE5vdGlmaWVyU2VydmljZSkuc2hvd1dhcm5pbmcoJ0LhuqFuIGtow7RuZyBjw7MgcXV54buBbiBjaGlhIHPhursgYuG6o24gZ2hpJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwYXRoID0gJyc7XHJcbiAgICAgICAgaXRlbVNoYXJlcy5sc3RJdGVtRGF0YS5mb3JFYWNoKGl0ZW1EYXRhID0+IHtcclxuICAgICAgICAgICAgcGF0aCArPSBgJHtkaWNQZXJtaXNzaW9uSWRbaXRlbURhdGEuaXRlbUlkXX1cXG5gO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBwYXRoO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgZ2V0TGlua1N0YXRlKHJvd0RhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxufVxyXG4iXX0=