qms-angular 1.0.53 → 1.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/qms-angular.umd.js +330 -1081
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/common/qms-icon.const.js +1 -107
- package/esm2015/lib/components/app-icon/icon-registry.service.js +2 -2
- package/esm2015/lib/components/related/common/qms-icon.const.js +107 -0
- package/esm2015/lib/components/related/common/tree.function.js +96 -0
- package/esm2015/lib/components/related/model/popup-data.model.js +1 -1
- package/esm2015/lib/components/related/model/risk-analysis.model.js +1 -1
- package/esm2015/lib/components/related/model/tree-config.model.js +3 -0
- package/esm2015/lib/components/related/model/tree-node.model.js +3 -0
- package/esm2015/lib/components/related/model/tree.model.js +3 -0
- package/esm2015/lib/components/related/popup/related-popup.component.js +3 -3
- package/esm2015/lib/components/related/related.module.js +10 -9
- package/esm2015/lib/components/related/risk/analysis/analysis.component.js +2 -2
- package/esm2015/lib/components/related/risk/list/list.component.js +1 -1
- package/esm2015/lib/components/related/tree/tree.component.js +684 -0
- package/esm2015/public-api.js +7 -13
- package/fesm2015/qms-angular.js +272 -993
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/common/qms-icon.const.d.ts +0 -23
- package/lib/components/related/common/qms-icon.const.d.ts +23 -0
- package/lib/components/{tree → related/common}/tree.function.d.ts +2 -2
- package/lib/components/related/model/popup-data.model.d.ts +2 -2
- package/lib/components/related/model/risk-analysis.model.d.ts +2 -2
- package/lib/components/{tree → related}/model/tree-config.model.d.ts +2 -2
- package/lib/components/{tree → related}/model/tree-node.model.d.ts +0 -0
- package/lib/components/{tree → related}/model/tree.model.d.ts +0 -0
- package/lib/components/related/popup/related-popup.component.d.ts +14 -4
- package/lib/components/related/related.module.d.ts +26 -26
- package/lib/components/related/risk/analysis/analysis.component.d.ts +11 -3
- package/lib/components/related/risk/list/list.component.d.ts +1 -1
- package/lib/components/{tree → related/tree}/tree.component.d.ts +16 -6
- package/package.json +1 -1
- package/public-api.d.ts +6 -12
- package/src/assets/jointjs/scss/bpmn.scss +28 -28
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -2
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
- package/src/assets/qms-ckeditor-plugin/package-lock.json +12190 -9
- package/src/assets/qms-ckeditor-plugin/src/ckeditor.js +0 -2
- package/src/assets/qms-ckeditor-plugin/src/dist/ckeditor.dev.js +173 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/fullscreen/dist/qmsCKEditorFullscreenPlugin.dev.js +87 -0
- package/src/lib/components/{tree → related/tree}/tree.component.scss +3 -3
- package/src/themes/_scrollbar.scss +10 -3
- package/esm2015/lib/components/select-include-children/model/select-option.model.js +0 -3
- package/esm2015/lib/components/select-include-children/model/select-popup-data.model.js +0 -9
- package/esm2015/lib/components/select-include-children/model/select.const.js +0 -6
- package/esm2015/lib/components/select-include-children/select-include-children.component.js +0 -562
- package/esm2015/lib/components/select-include-children/select-include-children.module.js +0 -102
- package/esm2015/lib/components/select-include-children/services/select-global.service.js +0 -22
- package/esm2015/lib/components/tree/model/tree-config.model.js +0 -3
- package/esm2015/lib/components/tree/model/tree-flat-node.model.js +0 -3
- package/esm2015/lib/components/tree/model/tree-node.model.js +0 -3
- package/esm2015/lib/components/tree/model/tree.model.js +0 -3
- package/esm2015/lib/components/tree/tree.component.js +0 -685
- package/esm2015/lib/components/tree/tree.function.js +0 -96
- package/esm2015/lib/components/tree/tree.module.js +0 -90
- package/lib/components/select-include-children/model/select-option.model.d.ts +0 -9
- package/lib/components/select-include-children/model/select-popup-data.model.d.ts +0 -11
- package/lib/components/select-include-children/model/select.const.d.ts +0 -5
- package/lib/components/select-include-children/select-include-children.component.d.ts +0 -88
- package/lib/components/select-include-children/select-include-children.module.d.ts +0 -27
- package/lib/components/select-include-children/services/select-global.service.d.ts +0 -12
- package/lib/components/tree/model/tree-flat-node.model.d.ts +0 -11
- package/lib/components/tree/tree.module.d.ts +0 -24
- package/src/lib/components/select-include-children/select-include-children.component.scss +0 -304
- package/src/themes/_non-bg-scrollbar.scss +0 -33
@@ -10,7 +10,7 @@ import { DocumentNodeType } from '../common/document-folder-type.enum';
|
|
10
10
|
import { ModuleType } from '../common/module-type.enum';
|
11
11
|
import { RelatedConst } from '../common/related.const';
|
12
12
|
import { IRelated } from '../model/related-data.model';
|
13
|
-
import { TreeComponent } from '
|
13
|
+
import { TreeComponent } from '../tree/tree.component';
|
14
14
|
import * as i0 from "@angular/core";
|
15
15
|
import * as i1 from "../../../services/translation-registry.service";
|
16
16
|
import * as i2 from "@angular/material/dialog";
|
@@ -25,7 +25,7 @@ import * as i10 from "../../list/list";
|
|
25
25
|
import * as i11 from "../../breadcrumb/breadcrumb";
|
26
26
|
import * as i12 from "@angular/material/expansion";
|
27
27
|
import * as i13 from "../../button/button";
|
28
|
-
import * as i14 from "
|
28
|
+
import * as i14 from "../tree/tree.component";
|
29
29
|
import * as i15 from "@angular/material/checkbox";
|
30
30
|
import * as i16 from "@angular/material/button";
|
31
31
|
import * as i17 from "@angular/material/input";
|
@@ -816,4 +816,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImpor
|
|
816
816
|
type: HostListener,
|
817
817
|
args: ['window:message', ['$event']]
|
818
818
|
}] } });
|
819
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRlZC1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcmVsYXRlZC9wb3B1cC9yZWxhdGVkLXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9yZWxhdGVkL3BvcHVwL3JlbGF0ZWQtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixZQUFZLEVBQWEsU0FBUyxFQUFFLGlCQUFpQixFQUErQixZQUFZLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDaEssT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFLdkQsT0FBTyxF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dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkE0Q3BGLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgQWZ0ZXJWaWV3Q2hlY2tlZCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4sIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItdHJlZS1ub2RlLm1vZGVsJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TSWNvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1pY29uL2ljb24tcmVnaXN0cnkuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2RhdGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgRG9jdW1lbnROb2RlVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9kb2N1bWVudC1mb2xkZXItdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgTW9kdWxlVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9tb2R1bGUtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgUmVsYXRlZENvbnN0IH0gZnJvbSAnLi4vY29tbW9uL3JlbGF0ZWQuY29uc3QnO1xyXG5pbXBvcnQgeyBQb3B1cERhdGEgfSBmcm9tICcuLi9tb2RlbC9wb3B1cC1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgSVJlbGF0ZWQgfSBmcm9tICcuLi9tb2RlbC9yZWxhdGVkLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWxlY3RlZE5vZGUgfSBmcm9tICcuLi9tb2RlbC9zZWxlY3RlZC1ub2RlLm1vZGVsJztcclxuaW1wb3J0IHsgVHJlZUNvbmZpZyB9IGZyb20gJy4uLy4uL3RyZWUvbW9kZWwvdHJlZS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmVlTW9kZWwgfSBmcm9tICcuLi8uLi90cmVlL21vZGVsL3RyZWUubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNSZWxhdGVkR2xvYmFsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvcmVsYXRlZC1nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90cmVlL3RyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJlZUZsYXROb2RlIH0gZnJvbSAnLi4vLi4vdHJlZS9tb2RlbC90cmVlLWZsYXQtbm9kZS5tb2RlbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdxbXMtcmVsYXRlZC1wb3B1cCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlbGF0ZWQtcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JlbGF0ZWQtcG9wdXAuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWxhdGVkUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIExBTkc6IGFueTtcclxuICBtb2R1bGVJZCA9IDA7XHJcbiAgbW9kdWxlTmFtZSA9ICcnO1xyXG4gIHRyZWVEYXRhMTogQXJyYXk8VHJlZU1vZGVsPiA9IFtdO1xyXG4gIHRyZWVEYXRhMjogQXJyYXk8VHJlZU1vZGVsPiA9IFtdO1xyXG4gIHRyZWVDb25maWcxOiBUcmVlQ29uZmlnO1xyXG4gIHRyZWVDb25maWcyOiBUcmVlQ29uZmlnO1xyXG5cclxuICBjaGVja2VkTm9kZUxpc3Q6IEFycmF5PFNlbGVjdGVkTm9kZT4gPSBbXTtcclxuICBzZWxlY3RlZE5vZGU6IEFycmF5PFNlbGVjdGVkTm9kZT4gPSBbXTtcclxuICBzZWxlY3RlZERhdGE6IEFycmF5PFRyZWVGbGF0Tm9kZT4gPSBbXTtcclxuICBzZWxlY3RlZERhdGEyOiBBcnJheTxUcmVlRmxhdE5vZGU+ID0gW107XHJcblxyXG4gIGNvbW1vbkNoZWNrZWRMaXN0OiBBcnJheTxUcmVlRmxhdE5vZGU+ID0gW107XHJcbiAgZG9jdW1lbnRDaGVja2VkTGlzdDogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xyXG4gIHNpbmdsZVByb2Nlc3NMaXN0OiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XHJcbiAgc2luZ2xlRG9jdW1lbnRMaXN0OiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XHJcbiAgc3BsaXRWaWV3OiBib29sZWFuO1xyXG5cclxuICBtb2R1bGUgPSBNb2R1bGVUeXBlO1xyXG4gIGRhdGFUeXBlID0gRGF0YVR5cGU7XHJcbiAgaXRlbVR5cGUgPSAwO1xyXG4gIHNlbGVjdGVkUmlza0RhdGE6IGFueSA9IFtdO1xyXG4gIGRpc2FibGVkTGlzdDogYW55ID0gW107XHJcbiAgZGlzYWJsZWRMaXN0MjogYW55ID0gW107XHJcbiAgbWF4U2VsZWN0SXRlbUNvdW50OiBudW1iZXI7XHJcbiAgY2FuT25seVNlbGVjdEl0ZW06IGJvb2xlYW47XHJcblxyXG4gIGlzRG9jdW1lbnRFeHBhbmRlZCA9IHRydWU7XHJcbiAgaXNDb21tb25FeHBhbmRlZCA9IHRydWU7XHJcbiAgc2luZ2xlU2VsZWN0ZWROb2RlID0gZmFsc2U7XHJcbiAgc2VhcmNoT3JkZXIgPSBbXTtcclxuXHJcbiAgbXlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgZmlsdGVyZWRPcHRpb25zOiBJUmVsYXRlZFtdID0gW107XHJcbiAgaXNJbnB1dFZhbHVlID0gZmFsc2U7XHJcblxyXG4gIGl0ZW1JblNwbGl0dmlldzogSVJlbGF0ZWRbXSA9IFtdO1xyXG4gIHNlbGVjdGVkRm9sZGVyOiBUcmVlRmxhdE5vZGUgPSBudWxsO1xyXG4gIHNwbGl0Vmlld1RpdGxlOiBzdHJpbmcgPSBudWxsO1xyXG4gIGxpc3RDaGlsZHJlblNlbGVjdE9uZTogYW55ID0gW107XHJcblxyXG4gIG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIG9uRXhwYW5kRm9sZGVyID0gbmV3IEV2ZW50RW1pdHRlcjxJUmVsYXRlZD4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihUcmVlQ29tcG9uZW50LCB7fSkgZGF0YVRyZWVzOiBRdWVyeUxpc3Q8VHJlZUNvbXBvbmVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2F1dG9Db21wbGV0ZUlucHV0U2VhcmNoJywgeyByZWFkOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLCBzdGF0aWM6IHRydWUgfSlcclxuICBhdXRvQ29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFJlbGF0ZWRQb3B1cENvbXBvbmVudD4sXHJcbiAgICBwdWJsaWMgZ2xvYmFsU2VydmljZTogUU1TUmVsYXRlZEdsb2JhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgYXBwSWNvblNlcnZpY2U6IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVsZW06IEVsZW1lbnRSZWYsXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFBvcHVwRGF0YVxyXG4gICkge1xyXG4gICAgdGhpcy5tb2R1bGVJZCA9IGRhdGEubW9kdWxlSWQ7XHJcbiAgICB0aGlzLm1vZHVsZU5hbWUgPSBkYXRhLm1vZHVsZU5hbWU7XHJcbiAgICB0aGlzLnRyZWVEYXRhMSA9IGRhdGEudHJlZURhdGExO1xyXG4gICAgdGhpcy50cmVlRGF0YTIgPSBkYXRhLnRyZWVEYXRhMjtcclxuICAgIHRoaXMudHJlZUNvbmZpZzEgPSBkYXRhLnRyZWVDb25maWcxO1xyXG4gICAgdGhpcy50cmVlQ29uZmlnMiA9IGRhdGEudHJlZUNvbmZpZzI7XHJcbiAgICB0aGlzLnNlbGVjdGVkUmlza0RhdGEgPSBkYXRhPy5zZWxlY3RlZE5vZGUgfHwgW107XHJcbiAgICB0aGlzLnNpbmdsZVNlbGVjdGVkTm9kZSA9IGRhdGEudHJlZUNvbmZpZzEuc2luZ2xlU2VsZWN0ZWROb2RlO1xyXG4gICAgdGhpcy5kaXNhYmxlZExpc3QgPSBkYXRhLmRpc2FibGVkTGlzdCB8fCBbXTtcclxuICAgIHRoaXMuZGlzYWJsZWRMaXN0MiA9IGRhdGEuZGlzYWJsZWRMaXN0MiB8fCBbXTtcclxuICAgIHRoaXMuc3BsaXRWaWV3ID0gZGF0YS5zcGxpdFZpZXc7XHJcbiAgICB0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCA9IGRhdGEubWF4U2VsZWN0SXRlbUNvdW50O1xyXG4gICAgdGhpcy5jYW5Pbmx5U2VsZWN0SXRlbSA9IGRhdGEuY2FuT25seVNlbGVjdEl0ZW07XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclByb2Nlc3NJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUHJvY2Vzc0FyZWFJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRG9jdW1lbnRJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRm9sZGVySWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckRldmlhdGlvbkljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJDaGVja2xpc3RJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyUmlza0ljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLmdsb2JhbFNlcnZpY2Uuc2V0U2VhcmNoUmVsYXRlZChbXSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcclxuICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zZXRTcGxpdHZpZXdWYWx1ZShbXSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgb25NZXNzYWdlKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuZGF0YSA9PT0gUmVsYXRlZENvbnN0LkhJREVfU0VBUkNIX1JFU1VMVCkge1xyXG4gICAgICB0aGlzLmF1dG9Db21wbGV0ZS5jbG9zZVBhbmVsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zZWFyY2hSZWxhdGVkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gcmVzO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdsb2JhbFNlcnZpY2Uuc3BsaXRWaWV3VmFsdWUucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuaXRlbUluU3BsaXR2aWV3ID0gcmVzO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm15Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vblNlYXJjaFJlbGF0ZWQodmFsKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaXRlbVR5cGUgPSB0aGlzLmdldERhdGFUeXBlSWQodGhpcy5tb2R1bGVJZCk7XHJcbiAgICB0aGlzLnNlYXJjaE9yZGVyID0gdGhpcy5nZXRTZWFyY2hPcmRlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJlZE9wdGlvbnMgJiYgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYXV0b0NvbXBsZXRlLm9wZW5QYW5lbCgpO1xyXG4gICAgICB0aGlzLnNldFJlc3VsdEhlaWdodCgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmF1dG9Db21wbGV0ZSkge1xyXG4gICAgICB0aGlzLmF1dG9Db21wbGV0ZS5jbG9zZVBhbmVsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREYXRhVHlwZUlkKG1vZHVsZUlkOiBudW1iZXIpIHtcclxuICAgIGxldCBpdGVtVHlwZTtcclxuICAgIHN3aXRjaCAobW9kdWxlSWQpIHtcclxuICAgICAgY2FzZSBNb2R1bGVUeXBlLmRvY3VtZW50UHJvY2VzczpcclxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUucHJvY2VzcztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBNb2R1bGVUeXBlLmRldmlhdGlvbjpcclxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE1vZHVsZVR5cGUuY2hlY2tsaXN0OlxyXG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5jaGVja2xpc3Q7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTW9kdWxlVHlwZS5yaXNrOlxyXG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5yaXNrO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtVHlwZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUNoZWNrZWROb2RlTGlzdChpdGVtOiBUcmVlRmxhdE5vZGUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YTIgPSBbXTtcclxuXHJcbiAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZpbHRlcih4ID0+ICh4LmlkLnRvTG93ZXJDYXNlKCkgIT09IGl0ZW0uaWQudG9Mb3dlckNhc2UoKSB8fCB4LnBhcmVudElkLnRvTG93ZXJDYXNlKCkgIT09IGl0ZW0ucGFyZW50SWQudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgY29uc3QgdGVtcEFyciA9IFtdO1xyXG4gICAgY29uc3QgdGVtcEFyckRvY3VtZW50ID0gW107XHJcbiAgICBjb25zdCBuZXdTZWxlY3RQcm9jZXNzTGlzdCA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0RG9jdW1lbnRMaXN0ID0gW107XHJcblxyXG5cclxuICAgIHRoaXMuY29tbW9uQ2hlY2tlZExpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC5pZC50b0xvd2VyQ2FzZSgpID09PSB4LmlkLnRvTG93ZXJDYXNlKCkgJiYgZWxlbWVudC5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpID09PSB4LnBhcmVudElkLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgIHRlbXBBcnIucHVzaChlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zaW5nbGVQcm9jZXNzTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmlkLnRvTG93ZXJDYXNlKCkgPT09IHguaWQudG9Mb3dlckNhc2UoKSAmJiBlbGVtZW50LnBhcmVudElkLnRvTG93ZXJDYXNlKCkgPT09IHgucGFyZW50SWQudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0UHJvY2Vzc0xpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zaW5nbGVQcm9jZXNzTGlzdCA9IG5ld1NlbGVjdFByb2Nlc3NMaXN0O1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGEgPSBbLi4udGVtcEFycl07XHJcblxyXG4gICAgdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaWQudG9Mb3dlckNhc2UoKSA9PT0geC5pZC50b0xvd2VyQ2FzZSgpICYmIGVsZW1lbnQucGFyZW50SWQudG9Mb3dlckNhc2UoKSA9PT0geC5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICB0ZW1wQXJyRG9jdW1lbnQucHVzaChlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zaW5nbGVEb2N1bWVudExpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC5pZC50b0xvd2VyQ2FzZSgpID09PSB4LmlkLnRvTG93ZXJDYXNlKCkgJiYgZWxlbWVudC5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpID09PSB4LnBhcmVudElkLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgIG5ld1NlbGVjdERvY3VtZW50TGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2luZ2xlRG9jdW1lbnRMaXN0ID0gbmV3U2VsZWN0RG9jdW1lbnRMaXN0O1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGEyID0gWy4uLnRlbXBBcnJEb2N1bWVudF07XHJcbiAgfVxyXG5cclxuICBpc01hdGNoVHJ1ZShhcnI6IGFueVtdLCBhcnIyOiBhbnlbXSkge1xyXG4gICAgcmV0dXJuIGFyci5ldmVyeSgoaSkgPT4ge1xyXG4gICAgICByZXR1cm4gYXJyMi5pbmNsdWRlcyhpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0UmVzdWx0SGVpZ2h0KGFycj86IElSZWxhdGVkW10pIHtcclxuICAgIGxldCBtYXhIZWlnaHQgPSA0ODQ7XHJcbiAgICBjb25zdCBwb3B1cF9jb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncW1zbGliX3JlbGF0ZWRfcG9wdXBfY29udGVudCcpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgbGluZV9fZGl2aWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVfX2RpdmlkZXInKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmIChwb3B1cF9jb250ZW50ICYmIGxpbmVfX2RpdmlkZXIpIHtcclxuICAgICAgbWF4SGVpZ2h0ID0gdGhpcy5nZXRPZmZzZXRIZWlnaHQocG9wdXBfY29udGVudCwgdHJ1ZSkgKyB0aGlzLmdldE9mZnNldEhlaWdodChsaW5lX19kaXZpZGVyLCB0cnVlKSAqIDI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudFJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXInKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IHZpZXdyZXBvcnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncmVsYXRlZC12aWV3cG9ydCcpWzBdIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIGlmICh2aWV3cmVwb3J0cykge1xyXG4gICAgICBpZiAoY29udGVudFJlc3VsdC5vZmZzZXRIZWlnaHQgPD0gbWF4SGVpZ2h0KSB7XHJcbiAgICAgICAgdmlld3JlcG9ydHMuc3R5bGUuaGVpZ2h0ID0gYCR7Y29udGVudFJlc3VsdC5vZmZzZXRIZWlnaHR9cHhgO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHZpZXdyZXBvcnRzLnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoUmVsYXRlZChfdmFsOiBhbnkpIHtcclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW107XHJcbiAgICBpZiAodHlwZW9mIChfdmFsKSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgdGhpcy5teUNvbnRyb2wuc2V0VmFsdWUoJycpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIChfdmFsKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgaWYgKCEhX3ZhbCkge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2guZW1pdChfdmFsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TW9kdWxlRmlsdGVyZWRPcHRpb25zKG1vZHVsZUlkOiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZS5sZW5ndGgpIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMubGlzdENoaWxkcmVuU2VsZWN0T25lLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0RWwgPSB0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZVtpbmRleF07XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgY29uc3Qgc2Vjb25kRWwgPSB0aGlzLmZpbHRlcmVkT3B0aW9uc1tqXTtcclxuICAgICAgICAgIGlmIChmaXJzdEVsLmlkID09PSBzZWNvbmRFbC5pZCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucy5zcGxpY2UoaiwgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRPcHRpb25zLmZpbHRlcih4ID0+IHguaXRlbVR5cGUgPT09IG1vZHVsZUlkKTtcclxuICB9XHJcblxyXG4gIHNob3dTZWFyY2hSZXN1bHQoKSB7XHJcbiAgICB0aGlzLmF1dG9Db21wbGV0ZS5vcGVuUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIGRpc3BsYXlSZWxhdGVkKHJlbGF0ZWQ/OiBJUmVsYXRlZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gcmVsYXRlZCA/IHJlbGF0ZWQuaXRlbU5hbWUgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RSZWxhdGVkKGl0ZW06IElSZWxhdGVkKSB7XHJcbiAgICBpZiAodGhpcy50cmVlQ29uZmlnMS5zZWxlY3RPbmUgfHwgdGhpcy50cmVlQ29uZmlnMi5zZWxlY3RPbmUpIHtcclxuICAgICAgdGhpcy5kaXNhYmxlZExpc3QgPSBbXTtcclxuICAgICAgdGhpcy5kaXNhYmxlZExpc3QyID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGluZGV4ID0gLTE7XHJcbiAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IFtdO1xyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZzEuc2hvd0NoZWNrQm94KSB7XHJcbiAgICAgIGluZGV4ID0gdGhpcy5jaGVja2VkTm9kZUxpc3QuZmluZEluZGV4KHggPT4ge1xyXG4gICAgICAgIHJldHVybiB4LmlkID09PSBpdGVtLmlkICYmIHgucGFyZW50SWQgPT09IGl0ZW0ucGFyZW50SWQ7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpbmRleCA8IDApIHtcclxuICAgICAgbGV0IHBvc2l0aW9uID0gLTE7XHJcbiAgICAgIGxldCBub2RlOiBhbnk7XHJcbiAgICAgIGxldCB0eXBlSWQ6IG51bWJlcjtcclxuXHJcbiAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmRvY3VtZW50KSB7XHJcbiAgICAgICAgLy8gZG9jdW1lbnRcclxuICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGEyLmZpbmRJbmRleCh4ID0+IHtcclxuICAgICAgICAgIHJldHVybiB4LmNoaWxkSWQgPT09IGl0ZW0uaWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbm9kZSA9IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXTtcclxuICAgICAgICB0eXBlSWQgPSB0aGlzLmRhdGFUeXBlLmRvY3VtZW50O1xyXG4gICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVsxXS50b2RvSXRlbVNlbGVjdGlvbkJ5SWQoW2l0ZW0uaWRdKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmZvbGRlcikge1xyXG4gICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTIuZmluZEluZGV4KHggPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHgucm9vdElkID09PSBpdGVtLmlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl07XHJcbiAgICAgICAgdHlwZUlkID0gaXRlbS5pdGVtVHlwZTtcclxuICAgICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHJlZUNvbmZpZzIuc2hvd0NoZWNrQm94KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxyXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgIGl0ZW1OYW1lOiBpdGVtLml0ZW1OYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1UeXBlOiB0eXBlSWQsXHJcbiAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtLml0ZW1OdW1iZXJJZCxcclxuICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnB1c2goe1xyXG4gICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxyXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgIGl0ZW1OYW1lOiBpdGVtLml0ZW1OYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1UeXBlOiB0eXBlSWQsXHJcbiAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtLml0ZW1OdW1iZXJJZCxcclxuICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzFdLnRvZG9JdGVtU2VsZWN0aW9uQnlJZChbaXRlbS5pZF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uVHlwZVxyXG4gICAgICAgIHx8IGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0Q2F0ZWdvcnlcclxuICAgICAgICB8fCBpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLnJpc2tGb2xkZXIpICYmICF0aGlzLmNhbk9ubHlTZWxlY3RJdGVtKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgoeCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geC5yb290SWQgPT09IGl0ZW0uaWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3ROb2RlUmVjdXJzaXZlKHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXSwgaXRlbS5pdGVtVHlwZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5hcmVhKSB7XHJcbiAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgoeCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geC5yb290SWQgPT09IGl0ZW0uaWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbm9kZSA9IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXTtcclxuICAgICAgICB0eXBlSWQgPSBpdGVtLml0ZW1UeXBlO1xyXG5cclxuICAgICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMudHJlZUNvbmZpZzEuc2hvd0NoZWNrQm94KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxyXG4gICAgICAgICAgICAgIGlkOiBub2RlLnJvb3RJZCxcclxuICAgICAgICAgICAgICBpdGVtTmFtZTogbm9kZS5yb290TmFtZSxcclxuICAgICAgICAgICAgICBpdGVtVHlwZTogdHlwZUlkLFxyXG4gICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5pdGVtTnVtYmVySWQsXHJcbiAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5wdXNoKHtcclxuICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgICAgICAgICBpZDogbm9kZS5yb290SWQsXHJcbiAgICAgICAgICAgICAgaXRlbU5hbWU6IG5vZGUucm9vdE5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbVR5cGU6IHR5cGVJZCxcclxuICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGl0ZW0uaXRlbU51bWJlcklkLFxyXG4gICAgICAgICAgICAgIGxldmVsVHlwZTogaXRlbS5sZXZlbFR5cGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50b2RvSXRlbVNlbGVjdGlvbkJ5SWQoW2l0ZW0uaWRdKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5kZXZpYXRpb24gfHxcclxuICAgICAgICBpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmNoZWNrbGlzdCkge1xyXG4gICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHggPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHguY2hpbGRJZCA9PT0gaXRlbS5pZCAmJiB4LnJvb3RJZCA9PT0gaXRlbS5wYXJlbnRJZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBub2RlID0gdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dO1xyXG4gICAgICAgIHR5cGVJZCA9IHRoaXMuaXRlbVR5cGU7XHJcbiAgICAgICAgY29uc3QgdHJlZU5vZGUgPSB7XHJcbiAgICAgICAgICBpZDogbm9kZS5jaGlsZElkLFxyXG4gICAgICAgICAgbmFtZTogbm9kZS5jaGlsZE5hbWUsXHJcbiAgICAgICAgICBjaGlsZHJlbjogW10sXHJcbiAgICAgICAgICBwYXJlbnRJZDogbm9kZS5yb290SWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50b2RvSXRlbVNlbGVjdGlvbihbdHJlZU5vZGVdKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICAvLyBwcm9jZXNzLCByaXNrLC4uLlxyXG4gICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHggPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHguY2hpbGRJZC50b0xvd2VyQ2FzZSgpID09PSBpdGVtLmlkLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbm9kZSA9IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXTtcclxuICAgICAgICB0eXBlSWQgPSB0aGlzLml0ZW1UeXBlO1xyXG4gICAgICAgIGlmIChub2RlKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMF0udG9kb0l0ZW1TZWxlY3Rpb25CeUlkKFtub2RlLmNoaWxkSWRdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdE5vZGVSZWN1cnNpdmUoaXRlbTogVHJlZU1vZGVsLCBpdGVtVHlwZTogRGF0YVR5cGUpIHtcclxuICAgIGxldCBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleCh4ID0+IHtcclxuICAgICAgcmV0dXJuIHgucm9vdElkID09PSBpdGVtLnJvb3RJZDtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XHJcblxyXG4gICAgICBjb25zdCBub2RlOiBUcmVlTm9kZSA9IHtcclxuICAgICAgICBpZDogaXRlbS5yb290SWQsXHJcbiAgICAgICAgbmFtZTogaXRlbS5yb290TmFtZSxcclxuICAgICAgICBjaGlsZHJlbjogW10sXHJcbiAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWRcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxldCBub2RlQ2hpbGRyZW46IFRyZWVOb2RlW10gPSB0aGlzLnRyZWVEYXRhMS5cclxuICAgICAgICBmaWx0ZXIoeCA9PiB4LnJvb3RJZCA9PT0gaXRlbS5yb290SWQpLlxyXG4gICAgICAgIG1hcCh4ID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGlkOiB4LmNoaWxkSWQsXHJcbiAgICAgICAgICAgIG5hbWU6IGl0ZW0uY2hpbGROYW1lLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXHJcbiAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnJvb3RJZFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgbGV0IG5vZGVTdWJmb2xkZXJzOiBUcmVlTW9kZWxbXSA9IHRoaXMudHJlZURhdGExLlxyXG4gICAgICAgIGZpbHRlcih4ID0+IHgucGFyZW50SWQgPT09IGl0ZW0ucm9vdElkKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnRyZWVDb25maWcxLnNob3dDaGVja0JveCkge1xyXG4gICAgICAgIG5vZGVDaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxyXG4gICAgICAgICAgICBpZDogeC5pZCxcclxuICAgICAgICAgICAgaXRlbU5hbWU6IHgubmFtZSxcclxuICAgICAgICAgICAgaXRlbVR5cGU6IGl0ZW1UeXBlLFxyXG4gICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGl0ZW0uZGlzcGxheUlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnJvb3RJZFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbm9kZUNoaWxkcmVuLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5wdXNoKHtcclxuICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXHJcbiAgICAgICAgICAgIGlkOiB4LmlkLFxyXG4gICAgICAgICAgICBpdGVtTmFtZTogeC5uYW1lLFxyXG4gICAgICAgICAgICBpdGVtVHlwZTogaXRlbVR5cGUsXHJcbiAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5kaXNwbGF5SWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucm9vdElkXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzBdLnRvZG9JdGVtU2VsZWN0aW9uKFtub2RlXS5jb25jYXQobm9kZUNoaWxkcmVuKSk7XHJcbiAgICAgIGlmIChub2RlU3ViZm9sZGVycykge1xyXG4gICAgICAgIG5vZGVTdWJmb2xkZXJzLmZvckVhY2goZm9sZGVyID0+IHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0Tm9kZVJlY3Vyc2l2ZShmb2xkZXIsIGl0ZW1UeXBlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgc2V0VHlwZVByb2Nlc3MoZXhwYW5kKSB7XHJcbiAgICByZXR1cm4gZXhwYW5kID8gdGhpcy5kYXRhVHlwZS5hcmVhIDogdGhpcy5kYXRhVHlwZS5wcm9jZXNzO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29tbW9uQ2hlY2tlZE5vZGUobGlzdDogQXJyYXk8VHJlZUZsYXROb2RlPikge1xyXG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuY29tbW9uQ2hlY2tlZExpc3QgPSBbXTtcclxuICAgIHRoaXMuc2luZ2xlUHJvY2Vzc0xpc3QgPSBbXTtcclxuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gWy4uLnRoaXMuc2luZ2xlRG9jdW1lbnRMaXN0XTtcclxuXHJcbiAgICBpZiAobGlzdC5sZW5ndGgpIHtcclxuICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jaGVja2VkTm9kZUxpc3QuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCAmJiB4LnBhcmVudElkID09PSBpdGVtLnBhcmVudElkKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0uaWQgJiYgaW5kZXggPCAwKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUpIHtcclxuICAgICAgICAgIGxldCBwb3NpdGlvbjogbnVtYmVyO1xyXG4gICAgICAgICAgaWYgKGl0ZW0uZXhwYW5kYWJsZSkge1xyXG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleChwID0+IHAucm9vdElkID09PSBpdGVtLmlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleChwID0+IHAuY2hpbGRJZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocG9zaXRpb24gPiAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLnNpbmdsZVByb2Nlc3NMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxyXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgIGl0ZW1OYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbVR5cGU6ICh0aGlzLml0ZW1UeXBlID09PSAyKSA/IHRoaXMuc2V0VHlwZVByb2Nlc3MoaXRlbS5leHBhbmRhYmxlKSA6IHRoaXMuaXRlbVR5cGUsXHJcbiAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0uZGlzcGxheUlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXHJcbiAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpdGVtLmlkICYmIGluZGV4IDwgMCAmJiAhaXRlbS5leHBhbmRhYmxlICYmICF0aGlzLnNpbmdsZVNlbGVjdGVkTm9kZSkge1xyXG4gICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IGl0ZW0uaWQgJiYgcC5yb290SWQgPT09IGl0ZW0ucGFyZW50SWQpO1xyXG4gICAgICAgICAgaWYgKHBvc2l0aW9uID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXHJcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgaXRlbU5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtVHlwZTogdGhpcy5pdGVtVHlwZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcclxuICAgICAgICAgICAgICBwYXJlbnROYW1lOiB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0ucGFyZW50SWQgPyB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0uc3ViTmFtZSA6IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXS5yb290TmFtZSxcclxuICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXS5kaXNwbGF5SWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUpIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFsuLi50aGlzLmNoZWNrZWROb2RlTGlzdCwgLi4udGhpcy5zaW5nbGVQcm9jZXNzTGlzdF07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCAmJiB0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCA+IDApIHtcclxuICAgICAgICBjb25zdCByZW1vdmVMaXN0ID0gdGhpcy5jaGVja2VkTm9kZUxpc3Quc2xpY2UoMCwgdGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgKiAtMSk7XHJcbiAgICAgICAgaWYgKHJlbW92ZUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZW1vdmVMaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hlY2tlZE5vZGVMaXN0KHtcclxuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcclxuICAgICAgICAgICAgICBuYW1lOiBpdGVtLml0ZW1OYW1lLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxyXG4gICAgICAgICAgICAgIGxldmVsOiAwLFxyXG4gICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgaGFzQ2hpbGQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gdGhpcy5jaGVja2VkTm9kZUxpc3Quc2xpY2UodGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgKiAtMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldERvY3VtZW50Q2hlY2tlZE5vZGUobGlzdDogQXJyYXk8VHJlZUZsYXROb2RlPikge1xyXG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuZG9jdW1lbnRDaGVja2VkTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5zaW5nbGVEb2N1bWVudExpc3QgPSBbXTtcclxuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gWy4uLnRoaXMuc2luZ2xlUHJvY2Vzc0xpc3RdO1xyXG5cclxuXHJcbiAgICBpZiAobGlzdC5sZW5ndGgpIHtcclxuICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jaGVja2VkTm9kZUxpc3QuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaXRlbS5pZCk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLmlkICYmIGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUpIHtcclxuICAgICAgICAgIGxldCBwb3NpdGlvbjogbnVtYmVyO1xyXG4gICAgICAgICAgaWYgKGl0ZW0uZXhwYW5kYWJsZSkge1xyXG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGEyLmZpbmRJbmRleChwID0+IHAucm9vdElkID09PSBpdGVtLmlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGEyLmZpbmRJbmRleChwID0+IHAuY2hpbGRJZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocG9zaXRpb24gPiAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLnNpbmdsZURvY3VtZW50TGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcclxuICAgICAgICAgICAgICBpdGVtTmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1UeXBlOiBpdGVtLmV4cGFuZGFibGUgPyB0aGlzLmRhdGFUeXBlLmZvbGRlciA6IHRoaXMuZGF0YVR5cGUuZG9jdW1lbnQsXHJcbiAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl0uZGlzcGxheUlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXHJcbiAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgaWYgKGluZGV4IDwgMCAmJiAhaXRlbS5leHBhbmRhYmxlICYmICF0aGlzLnNpbmdsZVNlbGVjdGVkTm9kZSkge1xyXG4gICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgaWYgKHBvc2l0aW9uID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXHJcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgaXRlbU5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtVHlwZTogdGhpcy5kYXRhVHlwZS5kb2N1bWVudCxcclxuICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXS5kaXNwbGF5SWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcclxuICAgICAgICAgICAgICBwYXJlbnROYW1lOiB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl0ucm9vdE5hbWUsXHJcbiAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbLi4udGhpcy5jaGVja2VkTm9kZUxpc3QsIC4uLnRoaXMuc2luZ2xlRG9jdW1lbnRMaXN0XTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMubWF4U2VsZWN0SXRlbUNvdW50ICYmIHRoaXMubWF4U2VsZWN0SXRlbUNvdW50ID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHJlbW92ZUxpc3QgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5zbGljZSgwLCB0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCAqIC0xKTtcclxuICAgICAgICBpZiAocmVtb3ZlTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgIHJlbW92ZUxpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVDaGVja2VkTm9kZUxpc3Qoe1xyXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0uaXRlbU5hbWUsXHJcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXHJcbiAgICAgICAgICAgICAgbGV2ZWw6IDAsXHJcbiAgICAgICAgICAgICAgZXhwYW5kYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBoYXNDaGlsZDogdHJ1ZSxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5zbGljZSh0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCAqIC0xKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbG9zZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG51bGw7XHJcbiAgICB0aGlzLml0ZW1JblNwbGl0dmlldyA9IFtdO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9O1xyXG5cclxuICBvbkFkZENsaWNrKCkge1xyXG4gICAgLy8gaWYgKHRoaXMudHJlZUNvbmZpZzEuc2hvd0NoZWNrQm94KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcclxuICAgIHRoaXMuaXRlbUluU3BsaXR2aWV3ID0gW107XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLmNoZWNrZWROb2RlTGlzdCk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5zZWxlY3RlZE5vZGUpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZ2V0T2Zmc2V0SGVpZ2h0KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpbmNsdWRlTWFyZ2luOiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgIGxldCBlbG1IZWlnaHQgPSAwLCBlbG1NYXJnaW4gPSAwO1xyXG5cclxuICAgIGVsbUhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgaWYgKGluY2x1ZGVNYXJnaW4pIHtcclxuICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcclxuICAgICAgZWxtTWFyZ2luID0gcGFyc2VGbG9hdChzdHlsZS5tYXJnaW5Ub3AucmVwbGFjZSgncHgnLCAnJykpICsgcGFyc2VGbG9hdChzdHlsZS5tYXJnaW5Cb3R0b20ucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoZWxtSGVpZ2h0ICsgZWxtTWFyZ2luKTtcclxuICB9XHJcblxyXG4gIGdldEl0ZW1DaGlwTmFtZShpdGVtOiBTZWxlY3RlZE5vZGUpIHtcclxuICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSBEYXRhVHlwZS5jaGVja2xpc3QgfHwgaXRlbS5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZGV2aWF0aW9uKSB7XHJcbiAgICAgIHJldHVybiAoaXRlbS5wYXJlbnROYW1lICYmIGl0ZW0uaXRlbU5hbWUgIT09IGl0ZW0ucGFyZW50TmFtZSkgPyBgJHtpdGVtLnBhcmVudE5hbWV9LyR7aXRlbS5pdGVtTmFtZX1gIDogaXRlbS5pdGVtTmFtZTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtLml0ZW1OYW1lO1xyXG4gIH1cclxuXHJcbiAgaXNFbGxpcHNpc0FjdGl2ZShlOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGUgPyAoZS5jbGllbnRXaWR0aCA8IGUuc2Nyb2xsV2lkdGgpIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXROb2RlSWNvbihpdGVtOiBJUmVsYXRlZCkge1xyXG4gICAgc3dpdGNoIChpdGVtLml0ZW1UeXBlKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOiB7XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLmxldmVsVHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkRlcGFydG1lbnRGb2xkZXI6XHJcbiAgICAgICAgICAgIHJldHVybiAnZGVwYXJ0bWVudF9mb2xkZXJfb3V0bGluZWQnO1xyXG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ3JlZ2lvbmFsX2ZvbGRlcl9vdXRsaW5lZCc7XHJcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2VudGVycHJpc2VfZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Gb2xkZXI6XHJcbiAgICAgICAgICAgIHJldHVybiAnbG9jYWxfZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDoge1xyXG4gICAgICAgIHN3aXRjaCAoaXRlbS5sZXZlbFR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2RlcGFydG1lbnQnO1xyXG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X3JlZ2lvbmFsJztcclxuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XHJcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfZW50ZXJwcmlzZSc7XHJcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2xvY2FsJztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnQnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjYXNlIERhdGFUeXBlLmFyZWE6XHJcbiAgICAgICAgcmV0dXJuICdwcm9jZXNzX2FyZWFfb3V0bGluZWQnO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XHJcbiAgICAgICAgcmV0dXJuICdwcm9jZXNzJztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kZXZpYXRpb246XHJcbiAgICAgICAgcmV0dXJuICdkZXZpYXRpb24nO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICByZXR1cm4gJ2NoZWNrbGlzdCc7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucmlzazpcclxuICAgICAgICByZXR1cm4gJ3Jpc2snO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFNlYXJjaE9yZGVyKCkge1xyXG4gICAgbGV0IHNlYXJjaFR5cGVzID0gT2JqZWN0LmtleXModGhpcy5kYXRhVHlwZSlcclxuICAgICAgLm1hcChrZXkgPT4gKHsgdmFsdWU6IHRoaXMuZGF0YVR5cGVba2V5XSwga2V5OiBrZXkgfSkpO1xyXG4gICAgc2VhcmNoVHlwZXMgPSBzZWFyY2hUeXBlcy5zbGljZShzZWFyY2hUeXBlcy5sZW5ndGggLyAyKTtcclxuICAgIHJldHVybiBzZWFyY2hUeXBlcztcclxuICB9XHJcblxyXG4gIGdldFRpdGxlKHR5cGU6IG51bWJlcikge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLlBST0NFU1NFUztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxyXG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuUFJPQ0VTU19BUkVBO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuRE9DVU1FTlRTO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmZvbGRlcjpcclxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkZPTERFUjtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kZXZpYXRpb246XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuTEFORy5ERVZJQVRJT047XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZGV2aWF0aW9uVHlwZTpcclxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkRFVklBVElPTl9UWVBFO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkNIRUNLTElTVDtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5jaGVja2xpc3RDYXRlZ29yeTpcclxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkNIRUNLTElTVF9DQVRFR09SWTtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrOlxyXG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuQVNTRVNTTUVOVDtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrRm9sZGVyOlxyXG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuRk9MREVSO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UGFyZW50TmFtZShpdGVtOiBJUmVsYXRlZCkge1xyXG4gICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0IHx8IGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uKSB7XHJcbiAgICAgIHJldHVybiBpdGVtLnBhcmVudE5hbWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldEl0ZW1JZChpdGVtOiBJUmVsYXRlZCkge1xyXG4gICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUucHJvY2Vzcykge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5MQU5HLlBST0NFU1NfSUR9OiAke2l0ZW0uaXRlbU51bWJlcklkfTsgJHtpdGVtLnN0YXR1c05hbWV9YDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuZG9jdW1lbnQpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuTEFORy5ET0NVTUVOVF9JRH06ICR7aXRlbS5pdGVtTnVtYmVySWR9OyAke2l0ZW0uc3RhdHVzTmFtZX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTZWxlY3RJdGVtKG5vZGU6IElSZWxhdGVkKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZE5vZGUgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5maW5kKHggPT4gKHguaWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5pZC50b0xvd2VyQ2FzZSgpICYmIHgucGFyZW50SWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICBpZiAoc2VsZWN0ZWROb2RlKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ2hlY2tlZE5vZGVMaXN0KHtcclxuICAgICAgICBpZDogc2VsZWN0ZWROb2RlLmlkLFxyXG4gICAgICAgIG5hbWU6IG5vZGUuaXRlbU5hbWUsXHJcbiAgICAgICAgcGFyZW50SWQ6IHNlbGVjdGVkTm9kZS5wYXJlbnRJZCxcclxuICAgICAgICBoYXNDaGlsZDogZmFsc2UsXHJcbiAgICAgICAgZXhwYW5kYWJsZTogZmFsc2UsXHJcbiAgICAgICAgbGV2ZWw6IDAsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdFJlbGF0ZWQobm9kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc05vZGVTZWxlY3RlZChub2RlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja2VkTm9kZUxpc3QuZmlsdGVyKHggPT4gKHguaWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5pZC50b0xvd2VyQ2FzZSgpICYmIHgucGFyZW50SWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpKSkubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG5cclxuICBnZXRDaGlsZHJlbk9mRm9sZGVyKG5vZGU6IFRyZWVGbGF0Tm9kZSwgdHlwZTogRGF0YVR5cGUpIHtcclxuICAgIGlmICh0aGlzLnNwbGl0Vmlldykge1xyXG4gICAgICBjb25zdCBwYXJlbnRUZXh0cyA9IHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50ZXh0LW5vZGUtcGFyZW50Jyk7XHJcbiAgICAgIFtdLmZvckVhY2guY2FsbChwYXJlbnRUZXh0cywgKGVsKSA9PiB7XHJcbiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlLWl0ZW0nKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGl0ZW1FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI18ke25vZGUucGFyZW50SWQgPyBub2RlLnBhcmVudElkIDogJyd9XyR7bm9kZS5pZH1fJHtub2RlLmxldmVsfWApO1xyXG4gICAgICBbXS5mb3JFYWNoLmNhbGwoaXRlbUVsZW1lbnQsIChlbCkgPT4ge1xyXG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZS1pdGVtJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgaXRlbSA9IG5ldyBJUmVsYXRlZCgpO1xyXG4gICAgICBpdGVtLmlkID0gbm9kZS5pZDtcclxuICAgICAgaXRlbS5pdGVtVHlwZSA9IHR5cGU7XHJcbiAgICAgIGl0ZW0uaXRlbU5hbWUgPSBub2RlLm5hbWU7XHJcbiAgICAgIGl0ZW0ubGV2ZWxUeXBlID0gbm9kZS5sZXZlbFR5cGU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBub2RlO1xyXG4gICAgICBpZiAodHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5mb2xkZXIpIHtcclxuICAgICAgICB0aGlzLnNwbGl0Vmlld1RpdGxlID0gYCR7dGhpcy5MQU5HLk1FU1NBR0UuRE9DVU1FTlRTX0lOLnRvVXBwZXJDYXNlKCl9IFwiJHtub2RlLm5hbWV9XCJgO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09IHRoaXMuZGF0YVR5cGUuYXJlYSkge1xyXG4gICAgICAgIHRoaXMuc3BsaXRWaWV3VGl0bGUgPSBgJHt0aGlzLkxBTkcuTUVTU0FHRS5QUk9DRVNTRVNfSU4udG9VcHBlckNhc2UoKX0gXCIke25vZGUubmFtZX1cImA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkV4cGFuZEZvbGRlci5lbWl0KGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuU2hvd1NlYXJjaE9wdGlvbihtb2R1bGVJZDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5jYW5Pbmx5U2VsZWN0SXRlbSAmJlxyXG4gICAgICAobW9kdWxlSWQgPT09IERhdGFUeXBlLmNoZWNrbGlzdENhdGVnb3J5XHJcbiAgICAgICAgfHwgbW9kdWxlSWQgPT09IERhdGFUeXBlLnJpc2tGb2xkZXJcclxuICAgICAgICB8fCBtb2R1bGVJZCA9PT0gRGF0YVR5cGUuZGV2aWF0aW9uVHlwZVxyXG4gICAgICAgIHx8IChtb2R1bGVJZCA9PT0gRGF0YVR5cGUuYXJlYSAmJiB0aGlzLnRyZWVDb25maWcxICYmICF0aGlzLnRyZWVDb25maWcxLnNpbmdsZVNlbGVjdGVkTm9kZSlcclxuICAgICAgICB8fCAobW9kdWxlSWQgPT09IERhdGFUeXBlLmZvbGRlciAmJiB0aGlzLnRyZWVDb25maWcyICYmICF0aGlzLnRyZWVDb25maWcyLnNpbmdsZVNlbGVjdGVkTm9kZSlcclxuICAgICAgKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGVGaWx0ZXJlZE9wdGlvbnMobW9kdWxlSWQpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBzZWxlY3ROb2RlVHJlZUV2ZW50KG5vZGUpIHtcclxuICAgIGxldCBwb3NpdGlvbiA9IC0xO1xyXG4gICAgbGV0IHBhcmVudE5hbWUgPSAnJztcclxuICAgIGxldCBpdGVtTnVtYmVySWQgPSAnJztcclxuXHJcbiAgICBpZiAobm9kZS5pdGVtVHlwZSA9PSBEYXRhVHlwZS5mb2xkZXIgfHwgbm9kZS5pdGVtVHlwZSA9PSBEYXRhVHlwZS5kb2N1bWVudCkge1xyXG4gICAgICBwb3NpdGlvbiA9ICFub2RlLmV4cGFuZGFibGUgPyB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IG5vZGUuaWQgJiYgcC5yb290SWQgPT09IG5vZGUucGFyZW50SWQpIDpcclxuICAgICAgICB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgocCA9PiBwLnJvb3RJZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgIHBhcmVudE5hbWUgPSB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl0ucGFyZW50SWQgPyB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl0uc3ViTmFtZSA6IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXS5yb290TmFtZTtcclxuICAgICAgaXRlbU51bWJlcklkID0gdGhpcy50cmVlRGF0YTJbcG9zaXRpb25dPy5kaXNwbGF5SWQ/LnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwb3NpdGlvbiA9ICFub2RlLmV4cGFuZGFibGUgPyB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IG5vZGUuaWQgJiYgcC5yb290SWQgPT09IG5vZGUucGFyZW50SWQpIDpcclxuICAgICAgICB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgocCA9PiBwLnJvb3RJZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgIHBhcmVudE5hbWUgPSB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0ucGFyZW50SWQgPyB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0uc3ViTmFtZSA6IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXS5yb290TmFtZTtcclxuICAgICAgaXRlbU51bWJlcklkID0gdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dPy5kaXNwbGF5SWQ/LnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xyXG4gICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgIGl0ZW1OYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgIGl0ZW1UeXBlOiBub2RlLml0ZW1UeXBlLFxyXG4gICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZCxcclxuICAgICAgcGFyZW50TmFtZTogcGFyZW50TmFtZSxcclxuICAgICAgaXRlbU51bWJlcklkOiBpdGVtTnVtYmVySWQsXHJcbiAgICAgIGxldmVsVHlwZTogbm9kZS5sZXZlbFR5cGVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGROb2RlU2VsZWN0T25lKGxpc3RDaGlsZHJlbikge1xyXG4gICAgdGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUgPSBbXTtcclxuICAgIHRoaXMubGlzdENoaWxkcmVuU2VsZWN0T25lID0gbGlzdENoaWxkcmVuO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGlkPVwicW1zbGliX3JlbGF0ZWRfcG9wdXBcIiBjbGFzcz1cInFtc2xpYl9fcmVsYXRlZF9fcG9wdXBfX2NvbnRhaW5lclwiPlxyXG4gIDxkaXYgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cF9oZWFkZXJcIj5cclxuICAgIDxzcGFuIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImJ1dHRvbl9fY2xvc2VcIiAoY2xpY2spPVwib25DbG9zZUNsaWNrKClcIj5cclxuICAgICAgPG1hdC1pY29uIG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxkaXYgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cF9oZWFkZXJfMDAxXCIgbWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgICA8c3Bhbj57eyBtb2R1bGVOYW1lIHwgdXBwZXJjYXNlIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgIGlkPVwicW1zbGliX3JlbGF0ZWRfcG9wdXBfc2VhcmNoXCJcclxuICAgIGNsYXNzPVwiaW5wdXRfX2ZpZWxkXCJcclxuICAgIChjbGljayk9XCJzaG93U2VhcmNoUmVzdWx0KClcIlxyXG4gID5cclxuICAgIDxpbnB1dFxyXG4gICAgICAjbmFtZVxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgTEFORy5TRUFSQ0ggfX1cIlxyXG4gICAgICBtYXRJbnB1dFxyXG4gICAgICBbZm9ybUNvbnRyb2xdPVwibXlDb250cm9sXCJcclxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcclxuICAgICAgI2F1dG9Db21wbGV0ZUlucHV0U2VhcmNoXHJcbiAgICAvPlxyXG4gICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJsaW5lX19kaXZpZGVyXCI+PC9kaXY+XHJcblxyXG4gIDxtYXQtYXV0b2NvbXBsZXRlXHJcbiAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVJlbGF0ZWRcIlxyXG4gICAgY2xhc3M9XCJtYXQtYXV0b2NvbXBsZXRlX3JlbGF0ZWQtdmlld3BvcnRcIlxyXG4gID5cclxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICAgcW1zLXNjcm9sbGJhclxyXG4gICAgICBpdGVtU2l6ZT1cIjEwXCJcclxuICAgICAgY2xhc3M9XCJyZWxhdGVkLXZpZXdwb3J0XCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdHlwZSBvZiBzZWFyY2hPcmRlclwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VhcmNoX19tb2R1bGUtcmVzdWx0XCJcclxuICAgICAgICAgICpuZ0lmPVwiY2FuU2hvd1NlYXJjaE9wdGlvbih0eXBlLnZhbHVlKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2hfX21vZHVsZS10aXRsZVwiPnt7IGdldFRpdGxlKHR5cGUudmFsdWUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hfX29wdGlvblwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZ2V0TW9kdWxlRmlsdGVyZWRPcHRpb25zKHR5cGUudmFsdWUpXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSZWxhdGVkKG9wdGlvbilcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8cW1zLWxpc3QtaXRlbSB0eXBlPVwiaW1hZ2Utc3F1YXJlXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgICAgICAgICBsZWFkaW5nLWljb25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJpbWFnZS1zcXVhcmVcIlxyXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiZ2V0Tm9kZUljb24ob3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgPjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPGRpdiBxbXMtbGlzdC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIHFtcy1saW5lXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjYXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgcW1zLXRvb2wtdGlwPVwie3tcclxuICAgICAgICAgICAgICAgICAgICBpc0VsbGlwc2lzQWN0aXZlKHNlYXJjaEl0ZW1SZXN1bHQpID8gb3B0aW9uLnBhcmVudE5hbWUgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgIG1vZGU9XCJkYXJrXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRQYXJlbnROYW1lKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAjc2VhcmNoSXRlbVJlc3VsdCBjbGFzcz1cInNlYXJjaF9fcmVzdWx0X19wYXJlbnQtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5wYXJlbnROYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBxbXMtbGluZSB0eXBlPVwic3VidGl0bGVcIiBjbGFzcz1cInNlYXJjaF9fb3B0aW9uLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLml0ZW1OYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24uYnJlYWRjdW1icyAmJiBvcHRpb24uYnJlYWRjdW1icy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8cW1zLWJyZWFkY3J1bWJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJyZWFkY3J1bWItY29udGFpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbnVtRGlzcGxheUl0ZW09XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICBbbm9kZXNdPVwib3B0aW9uLmJyZWFkY3VtYnNcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvcW1zLWJyZWFkY3J1bWI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IHFtcy1saW5lIGNvbG9yPVwiZGVmYXVsdC1zdWJ0aXRsZVwiICpuZ0lmPVwiZ2V0SXRlbUlkKG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgc2VhcmNoX19kZXNjcmlwdGlvbi1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgIGxvY2FsX29mZmVyXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRJdGVtSWQob3B0aW9uKSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3Ftcy1saXN0LWl0ZW0+XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwicW1zLXNjcm9sbGJhciBxbXNsaWJfcmVsYXRlZF9wb3B1cF9jb250ZW50XCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgIHBhbmVsX19jb250ZW50X2l0ZW06IGNoZWNrZWROb2RlTGlzdC5sZW5ndGgsXHJcbiAgICAgICAgcGFuZWxfX2NvbnRlbnQ6ICFjaGVja2VkTm9kZUxpc3QubGVuZ3RoLFxyXG4gICAgICAgICdjb2wtNic6IHNwbGl0VmlldyxcclxuICAgICAgICAnY29sLTEyJzogIXNwbGl0Vmlld1xyXG4gICAgICB9XCJcclxuICAgID5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWxcclxuICAgICAgICBoaWRlVG9nZ2xlXHJcbiAgICAgICAgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cF9jb21tb25fMDAxXCJcclxuICAgICAgICBbZXhwYW5kZWRdPVwiaXNDb21tb25FeHBhbmRlZFwiXHJcbiAgICAgICAgKG9wZW5lZCk9XCJpc0NvbW1vbkV4cGFuZGVkID0gdHJ1ZVwiXHJcbiAgICAgICAgKGNsb3NlZCk9XCJpc0NvbW1vbkV4cGFuZGVkID0gZmFsc2VcIlxyXG4gICAgICAgIGNsYXNzPVwicGFuZWwtdHJlZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgY2xhc3M9XCJwYWRkaW5nLTVcIj5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgKm5nSWY9XCJtb2R1bGVJZCA9PT0gbW9kdWxlLmRvY3VtZW50UHJvY2Vzc1wiPlxyXG4gICAgICAgICAgICB7eyBMQU5HLlBST0NFU1NFUyB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlICpuZ0lmPVwibW9kdWxlSWQgPT09IG1vZHVsZS5kZXZpYXRpb25cIj5cclxuICAgICAgICAgICAge3sgTEFORy5ERVZJQVRJT04gfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgPG1hdC1wYW5lbC10aXRsZSAqbmdJZj1cIm1vZHVsZUlkID09PSBtb2R1bGUuY2hlY2tsaXN0XCI+XHJcbiAgICAgICAgICAgIHt7IExBTkcuQ0hFQ0tMSVNUIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgKm5nSWY9XCJtb2R1bGVJZCA9PT0gbW9kdWxlLnJpc2tcIj5cclxuICAgICAgICAgICAge3sgTEFORy5BU1NFU1NNRU5UIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIDxidXR0b24gcW1zLWJ0bi1pY29uIGNsYXNzPVwicmVsYXRlZF9wb3B1cF90b2dnbGUtYnRuXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgaXNDb21tb25FeHBhbmRlZCA/IFwia2V5Ym9hcmRfYXJyb3dfdXBcIiA6IFwia2V5Ym9hcmRfYXJyb3dfZG93blwiXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgPGRpdiBpZD1cInFtc2xpYl9yZWxhdGVkX3BvcHVwX2NvbW1vbl8wMDJcIj5cclxuICAgICAgICAgIDxxbXMtdHJlZVxyXG4gICAgICAgICAgICBbdHJlZURhdGFdPVwidHJlZURhdGExXCJcclxuICAgICAgICAgICAgW3RyZWVDb25maWddPVwidHJlZUNvbmZpZzFcIlxyXG4gICAgICAgICAgICBbc2VsZWN0ZWREYXRhXT1cInNlbGVjdGVkRGF0YVwiXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZFJpc2tEYXRhXT1cInNlbGVjdGVkUmlza0RhdGFcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRMaXN0XT1cImRpc2FibGVkTGlzdFwiXHJcbiAgICAgICAgICAgIChjaGVja0JveEV2ZW50KT1cImdldENvbW1vbkNoZWNrZWROb2RlKCRldmVudClcIlxyXG4gICAgICAgICAgICAobm9kZUV4cGFuZEV2ZW50KT1cImdldENoaWxkcmVuT2ZGb2xkZXIoJGV2ZW50LCBkYXRhVHlwZS5hcmVhKVwiXHJcbiAgICAgICAgICAgIChzZWxlY3ROb2RlRXZlbnQpPVwic2VsZWN0Tm9kZVRyZWVFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGdldENoaWxkTm9kZVNlbGVjdE9uZSk9XCJnZXRDaGlsZE5vZGVTZWxlY3RPbmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtleHBhbmRPblRpdGxlQ2xpY2tdPVwiIXNwbGl0Vmlld1wiXHJcbiAgICAgICAgICA+PC9xbXMtdHJlZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwibW9kdWxlSWQgPT09IG1vZHVsZS5kb2N1bWVudFByb2Nlc3NcIlxyXG4gICAgICAgIGNsYXNzPVwibGluZV9fZGl2aWRlclwiXHJcbiAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXHJcbiAgICAgICAgaGlkZVRvZ2dsZVxyXG4gICAgICAgICpuZ0lmPVwibW9kdWxlSWQgPT09IG1vZHVsZS5kb2N1bWVudFByb2Nlc3NcIlxyXG4gICAgICAgIGlkPVwicW1zbGliX3JlbGF0ZWRfcG9wdXBfZG9jdW1lbnRfMDAxXCJcclxuICAgICAgICBbZXhwYW5kZWRdPVwiaXNEb2N1bWVudEV4cGFuZGVkXCJcclxuICAgICAgICAob3BlbmVkKT1cImlzRG9jdW1lbnRFeHBhbmRlZCA9IHRydWVcIlxyXG4gICAgICAgIChjbG9zZWQpPVwiaXNEb2N1bWVudEV4cGFuZGVkID0gZmFsc2VcIlxyXG4gICAgICAgIGNsYXNzPVwicGFuZWwtdHJlZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgY2xhc3M9XCJwYWRkaW5nLTVcIj5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+IHt7IExBTkcuRE9DVU1FTlRTIHwgdXBwZXJjYXNlIH19IDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgPGJ1dHRvbiBxbXMtYnRuLWljb24gY2xhc3M9XCJyZWxhdGVkX3BvcHVwX3RvZ2dsZS1idG5cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICBpc0RvY3VtZW50RXhwYW5kZWQgPyBcImtleWJvYXJkX2Fycm93X3VwXCIgOiBcImtleWJvYXJkX2Fycm93X2Rvd25cIlxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cF9kb2N1bWVudF8wMDJcIj5cclxuICAgICAgICAgIDxxbXMtdHJlZVxyXG4gICAgICAgICAgICBbdHJlZURhdGFdPVwidHJlZURhdGEyXCJcclxuICAgICAgICAgICAgW3RyZWVDb25maWddPVwidHJlZUNvbmZpZzJcIlxyXG4gICAgICAgICAgICBbc2VsZWN0ZWREYXRhXT1cInNlbGVjdGVkRGF0YTJcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRMaXN0XT1cImRpc2FibGVkTGlzdDJcIlxyXG4gICAgICAgICAgICAoY2hlY2tCb3hFdmVudCk9XCJnZXREb2N1bWVudENoZWNrZWROb2RlKCRldmVudClcIlxyXG4gICAgICAgICAgICAobm9kZUV4cGFuZEV2ZW50KT1cImdldENoaWxkcmVuT2ZGb2xkZXIoJGV2ZW50LCBkYXRhVHlwZS5mb2xkZXIpXCJcclxuICAgICAgICAgICAgKHNlbGVjdE5vZGVFdmVudCk9XCJzZWxlY3ROb2RlVHJlZUV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAoZ2V0Q2hpbGROb2RlU2VsZWN0T25lKT1cImdldENoaWxkTm9kZVNlbGVjdE9uZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2V4cGFuZE9uVGl0bGVDbGlja109XCIhc3BsaXRWaWV3XCJcclxuICAgICAgICAgID48L3Ftcy10cmVlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJzcGxpdFZpZXdcIlxyXG4gICAgICBjbGFzcz1cIlxyXG4gICAgICAgIHFtcy1zY3JvbGxiYXJcclxuICAgICAgICBxbXNsaWItcmVsYXRlZC1wb3B1cC1zcGxpdHZpZXcgcW1zbGliX3JlbGF0ZWRfcG9wdXBfY29udGVudFxyXG4gICAgICAgIGNvbC02XHJcbiAgICAgIFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICBwYW5lbF9fY29udGVudF9pdGVtOiBjaGVja2VkTm9kZUxpc3QubGVuZ3RoLFxyXG4gICAgICAgIHBhbmVsX19jb250ZW50OiAhY2hlY2tlZE5vZGVMaXN0Lmxlbmd0aFxyXG4gICAgICB9XCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cInNwbGl0dmlldy1oZWFkZXJcIiAqbmdJZj1cInNlbGVjdGVkRm9sZGVyXCI+XHJcbiAgICAgICAge3sgc3BsaXRWaWV3VGl0bGUgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJleHBhbmQtbm9kZVwiICpuZ0Zvcj1cImxldCBub2RlIG9mIGl0ZW1JblNwbGl0dmlld1wiPlxyXG4gICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgIHFtcy1ncm91cC1vcHRpb25zXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICBjb2xvcj1cImRlZmF1bHRcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNOb2RlU2VsZWN0ZWQobm9kZSlcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RJdGVtKG5vZGUpXCJcclxuICAgICAgICA+PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgICBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3IgbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIlxyXG4gICAgICAgICAgW3N2Z0ljb25dPVwiZ2V0Tm9kZUljb24obm9kZSlcIlxyXG4gICAgICAgID48L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ub2RlXCI+e3sgbm9kZS5pdGVtTmFtZSB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImNoZWNrZWROb2RlTGlzdC5sZW5ndGhcIiBjbGFzcz1cImxpbmVfX2RpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImNoZWNrZWROb2RlTGlzdC5sZW5ndGhcIiBjbGFzcz1cInBhbmVsX19pdGVtIHFtcy1zY3JvbGxiYXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGVkX19pdGVtX19pbmxpbmVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjaGVja2VkTm9kZUxpc3RcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiaXRlbS5pdGVtTmFtZVwiXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwicmVsYXRlZF9faXRlbV9fY29udGVudFwiXHJcbiAgICAgICAgcW1zLXRvb2wtdGlwPVwie3tcclxuICAgICAgICAgIGlzRWxsaXBzaXNBY3RpdmUoaXRlbU5hbWUpID8gZ2V0SXRlbUNoaXBOYW1lKGl0ZW0pIDogJydcclxuICAgICAgICB9fVwiXHJcbiAgICAgICAgbW9kZT1cImRhcmtcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGVkX19pdGVtX19jb250ZW50X25hbWVcIiAjaXRlbU5hbWU+e3tcclxuICAgICAgICAgIGdldEl0ZW1DaGlwTmFtZShpdGVtKVxyXG4gICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgKm5nSWY9XCIhKHRyZWVDb25maWcxPy5zZWxlY3RPbmUgfHwgdHJlZUNvbmZpZzI/LnNlbGVjdE9uZSlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNoZWNrZWROb2RlTGlzdChpdGVtKVwiXHJcbiAgICAgICAgICA+Y2FuY2VsPC9tYXQtaWNvblxyXG4gICAgICAgID5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImxpbmVfX2RpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbmZpcm1fX2J1dHRvbl9fZ3JvdXBzXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiIWNoZWNrZWROb2RlTGlzdC5sZW5ndGhcIlxyXG4gICAgICBxbXMtYnRuXHJcbiAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogN3B4XCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWRkQ2xpY2soKVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IExBTkcuQUREIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJjaGVja2VkTm9kZUxpc3QubGVuZ3RoXCJcclxuICAgICAgcW1zLWJ0blxyXG4gICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDBweFwiXHJcbiAgICAgIChjbGljayk9XCJvbkFkZENsaWNrKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyBMQU5HLkFERCB9fSAoe3sgY2hlY2tlZE5vZGVMaXN0Lmxlbmd0aCB9fSlcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBxbXMtYnRuLXRleHRcclxuICAgICAgW25nU3R5bGVdPVwieyAnbWFyZ2luLXRvcCc6IGNoZWNrZWROb2RlTGlzdC5sZW5ndGggPyAnMHB4JyA6ICc3cHgnIH1cIlxyXG4gICAgICAoY2xpY2spPVwib25DbG9zZUNsaWNrKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyBMQU5HLkNBTkNFTCB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
819
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRlZC1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcmVsYXRlZC9wb3B1cC9yZWxhdGVkLXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9yZWxhdGVkL3BvcHVwL3JlbGF0ZWQtcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixZQUFZLEVBQWEsU0FBUyxFQUFFLGlCQUFpQixFQUErQixZQUFZLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDaEssT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFLdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJ2RCxNQUFNLE9BQU8scUJBQXFCO0lBb0RoQyxZQUNVLEtBQXdCLEVBQ3pCLFNBQWtDLEVBQ2xDLFNBQThDLEVBQzlDLGFBQXNDLEVBQ3JDLFlBQTZCLEVBQzdCLFNBQXVCLEVBQ3ZCLGNBQXNDLEVBQ3RDLElBQWdCLEVBQ1EsSUFBZTtRQVJ2QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN6QixjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFxQztRQUM5QyxrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7UUFDckMsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsbUJBQWMsR0FBZCxjQUFjLENBQXdCO1FBQ3RDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDUSxTQUFJLEdBQUosSUFBSSxDQUFXO1FBNURqRCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFHcEMsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNiLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsY0FBUyxHQUFxQixFQUFFLENBQUM7UUFDakMsY0FBUyxHQUFxQixFQUFFLENBQUM7UUFJakMsb0JBQWUsR0FBd0IsRUFBRSxDQUFDO1FBQzFDLGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUN2QyxpQkFBWSxHQUF3QixFQUFFLENBQUM7UUFDdkMsa0JBQWEsR0FBd0IsRUFBRSxDQUFDO1FBRXhDLHNCQUFpQixHQUF3QixFQUFFLENBQUM7UUFDNUMsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQUM5QyxzQkFBaUIsR0FBd0IsRUFBRSxDQUFDO1FBQzVDLHVCQUFrQixHQUF3QixFQUFFLENBQUM7UUFHN0MsV0FBTSxHQUFHLFVBQVUsQ0FBQztRQUNwQixhQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3BCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixxQkFBZ0IsR0FBUSxFQUFFLENBQUM7UUFDM0IsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdkIsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFJeEIsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQzFCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFakIsY0FBUyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsb0JBQWUsR0FBZSxFQUFFLENBQUM7UUFDakMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsb0JBQWUsR0FBZSxFQUFFLENBQUM7UUFDakMsbUJBQWMsR0FBaUIsSUFBSSxDQUFDO1FBQ3BDLG1CQUFjLEdBQVcsSUFBSSxDQUFDO1FBQzlCLDBCQUFxQixHQUFRLEVBQUUsQ0FBQztRQUVoQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFpQjVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxZQUFZLEtBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDO1FBQzlELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2hELGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUQsY0FBYyxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRSxjQUFjLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdELGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0QsY0FBYyxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5RCxjQUFjLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzlELGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFHRCxTQUFTLENBQUMsS0FBSztRQUNiLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsa0JBQWtCLEVBQUU7WUFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMxRCxJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9DO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3JGLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RGLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDckUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFnQjtRQUM1QixJQUFJLFFBQVEsQ0FBQztRQUNiLFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssVUFBVSxDQUFDLGVBQWU7Z0JBQzdCLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDakMsTUFBTTtZQUNSLEtBQUssVUFBVSxDQUFDLFNBQVM7Z0JBQ3ZCLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssVUFBVSxDQUFDLFNBQVM7Z0JBQ3ZCLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssVUFBVSxDQUFDLElBQUk7Z0JBQ2xCLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDOUIsTUFBTTtZQUNSO2dCQUNFLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDbEMsTUFBTTtTQUNUO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQWtCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BLLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDM0IsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDaEMsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFHakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFO29CQUNsSCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUN2QjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUMvQixJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQ2xILG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDcEM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixHQUFHLG9CQUFvQixDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRTtvQkFDbEgsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDL0I7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFO29CQUNsSCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3JDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxxQkFBcUIsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVUsRUFBRSxJQUFXO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBZ0I7UUFDOUIsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztRQUN4RyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBQ3pGLElBQUksYUFBYSxJQUFJLGFBQWEsRUFBRTtZQUNsQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZHO1FBRUQsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO1FBQzlHLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztRQUUxRixJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksYUFBYSxDQUFDLFlBQVksSUFBSSxTQUFTLEVBQUU7Z0JBQzNDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLFlBQVksSUFBSSxDQUFDO2FBQzlEO2lCQUNJO2dCQUNILFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsU0FBUyxJQUFJLENBQUM7YUFDN0M7U0FDRjtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUztRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDN0I7YUFDSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDbkMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsUUFBZ0I7UUFDdkMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFO1lBQ3JDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN0RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDcEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekMsSUFBSSxPQUFPLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLEVBQUU7d0JBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDbkM7aUJBQ0Y7YUFDRjtTQUVGO1FBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFrQjtRQUMvQixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hELENBQUM7SUFFRCxhQUFhLENBQUMsSUFBYztRQUMxQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO1lBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFO1lBQ2pDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDekMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDYixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQixJQUFJLElBQVMsQ0FBQztZQUNkLElBQUksTUFBYyxDQUFDO1lBRW5CLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDNUMsV0FBVztnQkFDWCxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3RDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMvQixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDOUQ7aUJBQ0ksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUMvQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3RDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM5QixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZCLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtvQkFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTt3QkFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7NEJBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFOzRCQUNYLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsUUFBUSxFQUFFLE1BQU07NEJBQ2hCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTs0QkFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3lCQUMxQixDQUFDLENBQUM7cUJBQ0o7eUJBQ0k7d0JBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7NEJBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFOzRCQUNYLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsUUFBUSxFQUFFLE1BQU07NEJBQ2hCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTs0QkFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3lCQUMxQixDQUFDLENBQUM7cUJBQ0o7b0JBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUM5RDtnQkFDRCxPQUFPO2FBQ1I7aUJBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhO21CQUNsRCxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCO21CQUNqRCxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzNFLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDdEMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNuRTtpQkFDSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7Z0JBQzdDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDdEMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFFdkIsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO29CQUNqQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFO3dCQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQzs0QkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFROzRCQUN2QixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU07NEJBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFROzRCQUN2QixRQUFRLEVBQUUsTUFBTTs0QkFDaEIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZOzRCQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7eUJBQzFCLENBQUMsQ0FBQztxQkFDSjt5QkFDSTt3QkFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQzs0QkFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFROzRCQUN2QixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU07NEJBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFROzRCQUN2QixRQUFRLEVBQUUsTUFBTTs0QkFDaEIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZOzRCQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7eUJBQzFCLENBQUMsQ0FBQztxQkFDSjtpQkFDRjtnQkFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdELE9BQU87YUFDUjtpQkFDSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO2dCQUNoRCxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO2dCQUMzQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3RDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDN0QsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUN2QixNQUFNLFFBQVEsR0FBRztvQkFDZixFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDcEIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNO2lCQUN0QixDQUFDO2dCQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQzNEO2lCQUNJO2dCQUNILG9CQUFvQjtnQkFDcEIsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN0QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDM0QsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUN2QixJQUFJLElBQUksRUFBRTtvQkFDUixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ25FO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFlLEVBQUUsUUFBa0I7UUFDckQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUU7WUFFakIsTUFBTSxJQUFJLEdBQWE7Z0JBQ3JCLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ25CLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QixDQUFDO1lBRUYsSUFBSSxZQUFZLEdBQWUsSUFBSSxDQUFDLFNBQVM7Z0JBQzNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDckMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNOLE9BQU87b0JBQ0wsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPO29CQUNiLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDcEIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNO2lCQUN0QixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxJQUFJLGNBQWMsR0FBZ0IsSUFBSSxDQUFDLFNBQVM7Z0JBQzlDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUU7Z0JBQ2pDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO3dCQUN4QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQ3ZCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTt3QkFDUixRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUk7d0JBQ2hCLFFBQVEsRUFBRSxRQUFRO3dCQUNsQixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7d0JBQ3ZDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTTtxQkFDdEIsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQ0k7Z0JBQ0gsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDdkIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO3dCQUNSLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSTt3QkFDaEIsUUFBUSxFQUFFLFFBQVE7d0JBQ2xCLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTt3QkFDdkMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNO3FCQUN0QixDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUMzRSxJQUFJLGNBQWMsRUFBRTtnQkFDbEIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDOUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDN0MsQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO1FBQ0QsT0FBTztJQUNULENBQUM7SUFFRCxjQUFjLENBQUMsTUFBTTtRQUNuQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzdELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUF5QjtRQUM1QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFcEQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRXBHLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO29CQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNuQztnQkFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtvQkFDM0IsSUFBSSxRQUFnQixDQUFDO29CQUNyQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7d0JBQ25CLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNoRTt5QkFDSTt3QkFDSCxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDakU7b0JBQ0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7NEJBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFOzRCQUNYLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSTs0QkFDbkIsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFROzRCQUN0RixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFOzRCQUMzRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7NEJBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzt5QkFDMUIsQ0FBQyxDQUFDO3FCQUNKO2lCQUNGO2dCQUVELElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtvQkFDeEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3BHLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQzs0QkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFROzRCQUN2QixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7NEJBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7NEJBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFROzRCQUNwSCxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFOzRCQUMzRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7eUJBQzFCLENBQUMsQ0FBQztxQkFDSjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUM3RTtZQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLEVBQUU7Z0JBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFO29CQUNyQixVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUM7NEJBQ3pCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTs0QkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7NEJBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsS0FBSyxFQUFFLENBQUM7NEJBQ1IsVUFBVSxFQUFFLElBQUk7NEJBQ2hCLFFBQVEsRUFBRSxJQUFJOzRCQUNkLFFBQVEsRUFBRSxLQUFLO3lCQUNoQixDQUFDLENBQUE7b0JBQ0osQ0FBQyxDQUFDLENBQUE7aUJBQ0g7Z0JBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqRjtTQUNGO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQXlCO1FBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUduRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUVwRSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtvQkFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDckM7Z0JBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7b0JBQzNCLElBQUksUUFBZ0IsQ0FBQztvQkFDckIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO3dCQUNuQixRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDaEU7eUJBQ0k7d0JBQ0gsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ2pFO29CQUNELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUNqQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDOzRCQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7NEJBQ3ZCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTs0QkFDWCxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7NEJBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFROzRCQUN6RSxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFOzRCQUMzRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7NEJBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzt5QkFDMUIsQ0FBQyxDQUFDO3FCQUNKO2lCQUVGO2dCQUdELElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7b0JBQzdELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3RFLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQzs0QkFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFROzRCQUN2QixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7NEJBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFROzRCQUNoQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFOzRCQUMzRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7NEJBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVE7NEJBQzdDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzt5QkFDMUIsQ0FBQyxDQUFDO3FCQUNKO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQzlFO1lBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsRUFBRTtnQkFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUU7b0JBQ3JCLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ3hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQzs0QkFDekIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFOzRCQUNYLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFROzRCQUN2QixLQUFLLEVBQUUsQ0FBQzs0QkFDUixVQUFVLEVBQUUsSUFBSTs0QkFDaEIsUUFBUSxFQUFFLElBQUk7NEJBQ2QsUUFBUSxFQUFFLEtBQUs7eUJBQ2hCLENBQUMsQ0FBQTtvQkFDSixDQUFDLENBQUMsQ0FBQTtpQkFDSDtnQkFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2pGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUFBLENBQUM7SUFFRixVQUFVO1FBQ1IsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzQyxJQUFJO1FBQ0osU0FBUztRQUNULDZDQUE2QztRQUM3QyxJQUFJO0lBQ04sQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFvQixFQUFFLGFBQXNCO1FBQzFELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ2pDLElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5RztRQUVELE9BQU8sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFrQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDaEYsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkg7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQWM7UUFDN0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWM7UUFDeEIsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JCLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNwQixRQUFRLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ3RCLEtBQUssZ0JBQWdCLENBQUMsZ0JBQWdCO3dCQUNwQyxPQUFPLDRCQUE0QixDQUFDO29CQUN0QyxLQUFLLGdCQUFnQixDQUFDLGNBQWM7d0JBQ2xDLE9BQU8sMEJBQTBCLENBQUM7b0JBQ3BDLEtBQUssZ0JBQWdCLENBQUMsU0FBUzt3QkFDN0IsT0FBTyw0QkFBNEIsQ0FBQztvQkFDdEMsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNO3dCQUMxQixPQUFPLHVCQUF1QixDQUFDO29CQUNqQzt3QkFDRSxPQUFPLGlCQUFpQixDQUFDO2lCQUM1QjthQUNGO1lBQ0QsS0FBSyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLFFBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDdEIsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0I7d0JBQ3BDLE9BQU8scUJBQXFCLENBQUM7b0JBQy9CLEtBQUssZ0JBQWdCLENBQUMsY0FBYzt3QkFDbEMsT0FBTyxtQkFBbUIsQ0FBQztvQkFDN0IsS0FBSyxnQkFBZ0IsQ0FBQyxTQUFTO3dCQUM3QixPQUFPLHFCQUFxQixDQUFDO29CQUMvQixLQUFLLGdCQUFnQixDQUFDLE1BQU07d0JBQzFCLE9BQU8sZ0JBQWdCLENBQUM7b0JBQzFCO3dCQUNFLE9BQU8sVUFBVSxDQUFDO2lCQUNyQjthQUNGO1lBQ0QsS0FBSyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsT0FBTyx1QkFBdUIsQ0FBQztZQUNqQyxLQUFLLFFBQVEsQ0FBQyxPQUFPO2dCQUNuQixPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFFBQVEsQ0FBQyxTQUFTO2dCQUNyQixPQUFPLFdBQVcsQ0FBQztZQUNyQixLQUFLLFFBQVEsQ0FBQyxTQUFTO2dCQUNyQixPQUFPLFdBQVcsQ0FBQztZQUNyQixLQUFLLFFBQVEsQ0FBQyxJQUFJO2dCQUNoQixPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxPQUFPLGlCQUFpQixDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDekMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekQsV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDbkIsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLFFBQVEsQ0FBQyxPQUFPO2dCQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzdCLEtBQUssUUFBUSxDQUFDLElBQUk7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDaEMsS0FBSyxRQUFRLENBQUMsUUFBUTtnQkFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUM3QixLQUFLLFFBQVEsQ0FBQyxNQUFNO2dCQUNsQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLEtBQUssUUFBUSxDQUFDLFNBQVM7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDN0IsS0FBSyxRQUFRLENBQUMsYUFBYTtnQkFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNsQyxLQUFLLFFBQVEsQ0FBQyxTQUFTO2dCQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzdCLEtBQUssUUFBUSxDQUFDLGlCQUFpQjtnQkFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3RDLEtBQUssUUFBUSxDQUFDLElBQUk7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDOUIsS0FBSyxRQUFRLENBQUMsVUFBVTtnQkFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsSUFBYztRQUMxQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUMxRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDeEI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBYztRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7WUFDM0MsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQzVFO2FBQ0ksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO1lBQ2pELE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUM3RTtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQWM7UUFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hLLElBQUksWUFBWSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztnQkFDekIsRUFBRSxFQUFFLFlBQVksQ0FBQyxFQUFFO2dCQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ25CLFFBQVEsRUFBRSxZQUFZLENBQUMsUUFBUTtnQkFDL0IsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLEtBQUssRUFBRSxDQUFDO2dCQUNSLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztTQUNKO2FBQ0k7WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFJO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDakssQ0FBQztJQUdELG1CQUFtQixDQUFDLElBQWtCLEVBQUUsSUFBYztRQUNwRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNsRixFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDbEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNsSCxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDbEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQzthQUN4RjtpQkFDSSxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7YUFDeEY7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxRQUFnQjtRQUNsQyxJQUFJLElBQUksQ0FBQyxpQkFBaUI7WUFDeEIsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLGlCQUFpQjttQkFDbkMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxVQUFVO21CQUNoQyxRQUFRLEtBQUssUUFBUSxDQUFDLGFBQWE7bUJBQ25DLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7bUJBQ3hGLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FDOUYsRUFBRTtZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFJOztRQUN0QixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBRXRCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUMxRSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNoSCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3RILFlBQVksR0FBRyxNQUFBLE1BQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsMENBQUUsU0FBUywwQ0FBRSxRQUFRLEVBQUUsQ0FBQztTQUNoRTthQUFNO1lBQ0wsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDaEgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0RCxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUN0SCxZQUFZLEdBQUcsTUFBQSxNQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLDBDQUFFLFNBQVMsMENBQUUsUUFBUSxFQUFFLENBQUM7U0FDaEU7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztZQUN4QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsVUFBVSxFQUFFLFVBQVU7WUFDdEIsWUFBWSxFQUFFLFlBQVk7WUFDMUIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxZQUFZO1FBQ2hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFlBQVksQ0FBQztJQUM1QyxDQUFDOztrSEFsMUJVLHFCQUFxQix3UkE2RHRCLGVBQWU7c0dBN0RkLHFCQUFxQiw2TkFrRGMsc0JBQXNCLDBEQUZ0RCxhQUFhLGdEQ3pGN0IsdzhUQXVSQTsyRkQ5T2EscUJBQXFCO2tCQU5qQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO29CQUM3QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7OzBCQThESSxNQUFNOzJCQUFDLGVBQWU7NENBYlEsU0FBUztzQkFBekMsWUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRTtnQkFHL0IsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBNENwRixTQUFTO3NCQURSLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIEFmdGVyVmlld0NoZWNrZWQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4uLy4uLy4uL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXRyZWUtbm9kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XHJcbmltcG9ydCB7IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtaWNvbi9pY29uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9kYXRhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IERvY3VtZW50Tm9kZVR5cGUgfSBmcm9tICcuLi9jb21tb24vZG9jdW1lbnQtZm9sZGVyLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE1vZHVsZVR5cGUgfSBmcm9tICcuLi9jb21tb24vbW9kdWxlLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFJlbGF0ZWRDb25zdCB9IGZyb20gJy4uL2NvbW1vbi9yZWxhdGVkLmNvbnN0JztcclxuaW1wb3J0IHsgUG9wdXBEYXRhIH0gZnJvbSAnLi4vbW9kZWwvcG9wdXAtZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IElSZWxhdGVkIH0gZnJvbSAnLi4vbW9kZWwvcmVsYXRlZC1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgU2VsZWN0ZWROb2RlIH0gZnJvbSAnLi4vbW9kZWwvc2VsZWN0ZWQtbm9kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVDb25maWcgfSBmcm9tICcuLi9tb2RlbC90cmVlLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVNb2RlbCB9IGZyb20gJy4uL21vZGVsL3RyZWUubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNSZWxhdGVkR2xvYmFsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvcmVsYXRlZC1nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi90cmVlL3RyZWUuY29tcG9uZW50JztcclxuXHJcbmludGVyZmFjZSBUcmVlRmxhdE5vZGUge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGxldmVsOiBudW1iZXI7XHJcbiAgZXhwYW5kYWJsZTogYm9vbGVhbjtcclxuICBoYXNDaGlsZDogYm9vbGVhbjtcclxuICBwYXJlbnRJZD86IHN0cmluZztcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBsZXZlbFR5cGU/OiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLXJlbGF0ZWQtcG9wdXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWxhdGVkLXBvcHVwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZWxhdGVkLXBvcHVwLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVsYXRlZFBvcHVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xyXG4gIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBMQU5HOiBhbnk7XHJcbiAgbW9kdWxlSWQgPSAwO1xyXG4gIG1vZHVsZU5hbWUgPSAnJztcclxuICB0cmVlRGF0YTE6IEFycmF5PFRyZWVNb2RlbD4gPSBbXTtcclxuICB0cmVlRGF0YTI6IEFycmF5PFRyZWVNb2RlbD4gPSBbXTtcclxuICB0cmVlQ29uZmlnMTogVHJlZUNvbmZpZztcclxuICB0cmVlQ29uZmlnMjogVHJlZUNvbmZpZztcclxuXHJcbiAgY2hlY2tlZE5vZGVMaXN0OiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XHJcbiAgc2VsZWN0ZWROb2RlOiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XHJcbiAgc2VsZWN0ZWREYXRhOiBBcnJheTxUcmVlRmxhdE5vZGU+ID0gW107XHJcbiAgc2VsZWN0ZWREYXRhMjogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xyXG5cclxuICBjb21tb25DaGVja2VkTGlzdDogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xyXG4gIGRvY3VtZW50Q2hlY2tlZExpc3Q6IEFycmF5PFRyZWVGbGF0Tm9kZT4gPSBbXTtcclxuICBzaW5nbGVQcm9jZXNzTGlzdDogQXJyYXk8U2VsZWN0ZWROb2RlPiA9IFtdO1xyXG4gIHNpbmdsZURvY3VtZW50TGlzdDogQXJyYXk8U2VsZWN0ZWROb2RlPiA9IFtdO1xyXG4gIHNwbGl0VmlldzogYm9vbGVhbjtcclxuXHJcbiAgbW9kdWxlID0gTW9kdWxlVHlwZTtcclxuICBkYXRhVHlwZSA9IERhdGFUeXBlO1xyXG4gIGl0ZW1UeXBlID0gMDtcclxuICBzZWxlY3RlZFJpc2tEYXRhOiBhbnkgPSBbXTtcclxuICBkaXNhYmxlZExpc3Q6IGFueSA9IFtdO1xyXG4gIGRpc2FibGVkTGlzdDI6IGFueSA9IFtdO1xyXG4gIG1heFNlbGVjdEl0ZW1Db3VudDogbnVtYmVyO1xyXG4gIGNhbk9ubHlTZWxlY3RJdGVtOiBib29sZWFuO1xyXG5cclxuICBpc0RvY3VtZW50RXhwYW5kZWQgPSB0cnVlO1xyXG4gIGlzQ29tbW9uRXhwYW5kZWQgPSB0cnVlO1xyXG4gIHNpbmdsZVNlbGVjdGVkTm9kZSA9IGZhbHNlO1xyXG4gIHNlYXJjaE9yZGVyID0gW107XHJcblxyXG4gIG15Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIGZpbHRlcmVkT3B0aW9uczogSVJlbGF0ZWRbXSA9IFtdO1xyXG4gIGlzSW5wdXRWYWx1ZSA9IGZhbHNlO1xyXG5cclxuICBpdGVtSW5TcGxpdHZpZXc6IElSZWxhdGVkW10gPSBbXTtcclxuICBzZWxlY3RlZEZvbGRlcjogVHJlZUZsYXROb2RlID0gbnVsbDtcclxuICBzcGxpdFZpZXdUaXRsZTogc3RyaW5nID0gbnVsbDtcclxuICBsaXN0Q2hpbGRyZW5TZWxlY3RPbmU6IGFueSA9IFtdO1xyXG5cclxuICBvblNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBvbkV4cGFuZEZvbGRlciA9IG5ldyBFdmVudEVtaXR0ZXI8SVJlbGF0ZWQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oVHJlZUNvbXBvbmVudCwge30pIGRhdGFUcmVlczogUXVlcnlMaXN0PFRyZWVDb21wb25lbnQ+O1xyXG5cclxuICBAVmlld0NoaWxkKCdhdXRvQ29tcGxldGVJbnB1dFNlYXJjaCcsIHsgcmVhZDogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgc3RhdGljOiB0cnVlIH0pXHJcbiAgYXV0b0NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxSZWxhdGVkUG9wdXBDb21wb25lbnQ+LFxyXG4gICAgcHVibGljIGdsb2JhbFNlcnZpY2U6IFFNU1JlbGF0ZWRHbG9iYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGFwcEljb25TZXJ2aWNlOiBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbGVtOiBFbGVtZW50UmVmLFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBQb3B1cERhdGFcclxuICApIHtcclxuICAgIHRoaXMubW9kdWxlSWQgPSBkYXRhLm1vZHVsZUlkO1xyXG4gICAgdGhpcy5tb2R1bGVOYW1lID0gZGF0YS5tb2R1bGVOYW1lO1xyXG4gICAgdGhpcy50cmVlRGF0YTEgPSBkYXRhLnRyZWVEYXRhMTtcclxuICAgIHRoaXMudHJlZURhdGEyID0gZGF0YS50cmVlRGF0YTI7XHJcbiAgICB0aGlzLnRyZWVDb25maWcxID0gZGF0YS50cmVlQ29uZmlnMTtcclxuICAgIHRoaXMudHJlZUNvbmZpZzIgPSBkYXRhLnRyZWVDb25maWcyO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJpc2tEYXRhID0gZGF0YT8uc2VsZWN0ZWROb2RlIHx8IFtdO1xyXG4gICAgdGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUgPSBkYXRhLnRyZWVDb25maWcxLnNpbmdsZVNlbGVjdGVkTm9kZTtcclxuICAgIHRoaXMuZGlzYWJsZWRMaXN0ID0gZGF0YS5kaXNhYmxlZExpc3QgfHwgW107XHJcbiAgICB0aGlzLmRpc2FibGVkTGlzdDIgPSBkYXRhLmRpc2FibGVkTGlzdDIgfHwgW107XHJcbiAgICB0aGlzLnNwbGl0VmlldyA9IGRhdGEuc3BsaXRWaWV3O1xyXG4gICAgdGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgPSBkYXRhLm1heFNlbGVjdEl0ZW1Db3VudDtcclxuICAgIHRoaXMuY2FuT25seVNlbGVjdEl0ZW0gPSBkYXRhLmNhbk9ubHlTZWxlY3RJdGVtO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclByb2Nlc3NBcmVhSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckRvY3VtZW50SWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckZvbGRlckljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJEZXZpYXRpb25JY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyQ2hlY2tsaXN0SWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclJpc2tJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNldFNlYXJjaFJlbGF0ZWQoW10pO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG51bGw7XHJcbiAgICB0aGlzLmdsb2JhbFNlcnZpY2Uuc2V0U3BsaXR2aWV3VmFsdWUoW10pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxyXG4gIG9uTWVzc2FnZShldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmRhdGEgPT09IFJlbGF0ZWRDb25zdC5ISURFX1NFQVJDSF9SRVNVTFQpIHtcclxuICAgICAgdGhpcy5hdXRvQ29tcGxldGUuY2xvc2VQYW5lbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdsb2JhbFNlcnZpY2Uuc2VhcmNoUmVsYXRlZC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHJlcztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNwbGl0Vmlld1ZhbHVlLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLml0ZW1JblNwbGl0dmlldyA9IHJlcztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5teUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApKS5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICB0aGlzLmlzSW5wdXRWYWx1ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMub25TZWFyY2hSZWxhdGVkKHZhbCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLml0ZW1UeXBlID0gdGhpcy5nZXREYXRhVHlwZUlkKHRoaXMubW9kdWxlSWQpO1xyXG4gICAgdGhpcy5zZWFyY2hPcmRlciA9IHRoaXMuZ2V0U2VhcmNoT3JkZXIoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zICYmIHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmF1dG9Db21wbGV0ZS5vcGVuUGFuZWwoKTtcclxuICAgICAgdGhpcy5zZXRSZXN1bHRIZWlnaHQoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5hdXRvQ29tcGxldGUpIHtcclxuICAgICAgdGhpcy5hdXRvQ29tcGxldGUuY2xvc2VQYW5lbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGF0YVR5cGVJZChtb2R1bGVJZDogbnVtYmVyKSB7XHJcbiAgICBsZXQgaXRlbVR5cGU7XHJcbiAgICBzd2l0Y2ggKG1vZHVsZUlkKSB7XHJcbiAgICAgIGNhc2UgTW9kdWxlVHlwZS5kb2N1bWVudFByb2Nlc3M6XHJcbiAgICAgICAgaXRlbVR5cGUgPSB0aGlzLmRhdGFUeXBlLnByb2Nlc3M7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTW9kdWxlVHlwZS5kZXZpYXRpb246XHJcbiAgICAgICAgaXRlbVR5cGUgPSB0aGlzLmRhdGFUeXBlLmRldmlhdGlvbjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBNb2R1bGVUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE1vZHVsZVR5cGUucmlzazpcclxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUucmlzaztcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuZG9jdW1lbnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbVR5cGU7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDaGVja2VkTm9kZUxpc3QoaXRlbTogVHJlZUZsYXROb2RlKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGEyID0gW107XHJcblxyXG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5maWx0ZXIoeCA9PiAoeC5pZC50b0xvd2VyQ2FzZSgpICE9PSBpdGVtLmlkLnRvTG93ZXJDYXNlKCkgfHwgeC5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpICE9PSBpdGVtLnBhcmVudElkLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIGNvbnN0IHRlbXBBcnIgPSBbXTtcclxuICAgIGNvbnN0IHRlbXBBcnJEb2N1bWVudCA9IFtdO1xyXG4gICAgY29uc3QgbmV3U2VsZWN0UHJvY2Vzc0xpc3QgPSBbXTtcclxuICAgIGNvbnN0IG5ld1NlbGVjdERvY3VtZW50TGlzdCA9IFtdO1xyXG5cclxuXHJcbiAgICB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaWQudG9Mb3dlckNhc2UoKSA9PT0geC5pZC50b0xvd2VyQ2FzZSgpICYmIGVsZW1lbnQucGFyZW50SWQudG9Mb3dlckNhc2UoKSA9PT0geC5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICB0ZW1wQXJyLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2luZ2xlUHJvY2Vzc0xpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC5pZC50b0xvd2VyQ2FzZSgpID09PSB4LmlkLnRvTG93ZXJDYXNlKCkgJiYgZWxlbWVudC5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpID09PSB4LnBhcmVudElkLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgIG5ld1NlbGVjdFByb2Nlc3NMaXN0LnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2luZ2xlUHJvY2Vzc0xpc3QgPSBuZXdTZWxlY3RQcm9jZXNzTGlzdDtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gWy4uLnRlbXBBcnJdO1xyXG5cclxuICAgIHRoaXMuZG9jdW1lbnRDaGVja2VkTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmlkLnRvTG93ZXJDYXNlKCkgPT09IHguaWQudG9Mb3dlckNhc2UoKSAmJiBlbGVtZW50LnBhcmVudElkLnRvTG93ZXJDYXNlKCkgPT09IHgucGFyZW50SWQudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgdGVtcEFyckRvY3VtZW50LnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2luZ2xlRG9jdW1lbnRMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaWQudG9Mb3dlckNhc2UoKSA9PT0geC5pZC50b0xvd2VyQ2FzZSgpICYmIGVsZW1lbnQucGFyZW50SWQudG9Mb3dlckNhc2UoKSA9PT0geC5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICBuZXdTZWxlY3REb2N1bWVudExpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNpbmdsZURvY3VtZW50TGlzdCA9IG5ld1NlbGVjdERvY3VtZW50TGlzdDtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhMiA9IFsuLi50ZW1wQXJyRG9jdW1lbnRdO1xyXG4gIH1cclxuXHJcbiAgaXNNYXRjaFRydWUoYXJyOiBhbnlbXSwgYXJyMjogYW55W10pIHtcclxuICAgIHJldHVybiBhcnIuZXZlcnkoKGkpID0+IHtcclxuICAgICAgcmV0dXJuIGFycjIuaW5jbHVkZXMoaSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFJlc3VsdEhlaWdodChhcnI/OiBJUmVsYXRlZFtdKSB7XHJcbiAgICBsZXQgbWF4SGVpZ2h0ID0gNDg0O1xyXG4gICAgY29uc3QgcG9wdXBfY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Ftc2xpYl9yZWxhdGVkX3BvcHVwX2NvbnRlbnQnKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGxpbmVfX2RpdmlkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsaW5lX19kaXZpZGVyJylbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAocG9wdXBfY29udGVudCAmJiBsaW5lX19kaXZpZGVyKSB7XHJcbiAgICAgIG1heEhlaWdodCA9IHRoaXMuZ2V0T2Zmc2V0SGVpZ2h0KHBvcHVwX2NvbnRlbnQsIHRydWUpICsgdGhpcy5nZXRPZmZzZXRIZWlnaHQobGluZV9fZGl2aWRlciwgdHJ1ZSkgKiAyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnRSZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyJylbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCB2aWV3cmVwb3J0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JlbGF0ZWQtdmlld3BvcnQnKVswXSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBpZiAodmlld3JlcG9ydHMpIHtcclxuICAgICAgaWYgKGNvbnRlbnRSZXN1bHQub2Zmc2V0SGVpZ2h0IDw9IG1heEhlaWdodCkge1xyXG4gICAgICAgIHZpZXdyZXBvcnRzLnN0eWxlLmhlaWdodCA9IGAke2NvbnRlbnRSZXN1bHQub2Zmc2V0SGVpZ2h0fXB4YDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2aWV3cmVwb3J0cy5zdHlsZS5oZWlnaHQgPSBgJHttYXhIZWlnaHR9cHhgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaFJlbGF0ZWQoX3ZhbDogYW55KSB7XHJcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFtdO1xyXG4gICAgaWYgKHR5cGVvZiAoX3ZhbCkgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIHRoaXMubXlDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHR5cGVvZiAoX3ZhbCkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGlmICghIV92YWwpIHtcclxuICAgICAgICB0aGlzLm9uU2VhcmNoLmVtaXQoX3ZhbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1vZHVsZUZpbHRlcmVkT3B0aW9ucyhtb2R1bGVJZDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBmaXJzdEVsID0gdGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmVbaW5kZXhdO1xyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGNvbnN0IHNlY29uZEVsID0gdGhpcy5maWx0ZXJlZE9wdGlvbnNbal07XHJcbiAgICAgICAgICBpZiAoZmlyc3RFbC5pZCA9PT0gc2Vjb25kRWwuaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuc3BsaWNlKGosIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkT3B0aW9ucy5maWx0ZXIoeCA9PiB4Lml0ZW1UeXBlID09PSBtb2R1bGVJZCk7XHJcbiAgfVxyXG5cclxuICBzaG93U2VhcmNoUmVzdWx0KCkge1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGUub3BlblBhbmVsKCk7XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5UmVsYXRlZChyZWxhdGVkPzogSVJlbGF0ZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHJlbGF0ZWQgPyByZWxhdGVkLml0ZW1OYW1lIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0UmVsYXRlZChpdGVtOiBJUmVsYXRlZCkge1xyXG4gICAgaWYgKHRoaXMudHJlZUNvbmZpZzEuc2VsZWN0T25lIHx8IHRoaXMudHJlZUNvbmZpZzIuc2VsZWN0T25lKSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZWRMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuZGlzYWJsZWRMaXN0MiA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpbmRleCA9IC0xO1xyXG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBbXTtcclxuICAgIGlmICh0aGlzLnRyZWVDb25maWcxLnNob3dDaGVja0JveCkge1xyXG4gICAgICBpbmRleCA9IHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZpbmRJbmRleCh4ID0+IHtcclxuICAgICAgICByZXR1cm4geC5pZCA9PT0gaXRlbS5pZCAmJiB4LnBhcmVudElkID09PSBpdGVtLnBhcmVudElkO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaW5kZXggPCAwKSB7XHJcbiAgICAgIGxldCBwb3NpdGlvbiA9IC0xO1xyXG4gICAgICBsZXQgbm9kZTogYW55O1xyXG4gICAgICBsZXQgdHlwZUlkOiBudW1iZXI7XHJcblxyXG4gICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudCkge1xyXG4gICAgICAgIC8vIGRvY3VtZW50XHJcbiAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgoeCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geC5jaGlsZElkID09PSBpdGVtLmlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl07XHJcbiAgICAgICAgdHlwZUlkID0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudDtcclxuICAgICAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMV0udG9kb0l0ZW1TZWxlY3Rpb25CeUlkKFtpdGVtLmlkXSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5mb2xkZXIpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGEyLmZpbmRJbmRleCh4ID0+IHtcclxuICAgICAgICAgIHJldHVybiB4LnJvb3RJZCA9PT0gaXRlbS5pZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBub2RlID0gdGhpcy50cmVlRGF0YTJbcG9zaXRpb25dO1xyXG4gICAgICAgIHR5cGVJZCA9IGl0ZW0uaXRlbVR5cGU7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb25maWcyLnNob3dDaGVja0JveCkge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcclxuICAgICAgICAgICAgICBpdGVtTmFtZTogaXRlbS5pdGVtTmFtZSxcclxuICAgICAgICAgICAgICBpdGVtVHlwZTogdHlwZUlkLFxyXG4gICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5pdGVtTnVtYmVySWQsXHJcbiAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5wdXNoKHtcclxuICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcclxuICAgICAgICAgICAgICBpdGVtTmFtZTogaXRlbS5pdGVtTmFtZSxcclxuICAgICAgICAgICAgICBpdGVtVHlwZTogdHlwZUlkLFxyXG4gICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5pdGVtTnVtYmVySWQsXHJcbiAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVsxXS50b2RvSXRlbVNlbGVjdGlvbkJ5SWQoW2l0ZW0uaWRdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKChpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmRldmlhdGlvblR5cGVcclxuICAgICAgICB8fCBpdGVtLml0ZW1UeXBlID09PSB0aGlzLmRhdGFUeXBlLmNoZWNrbGlzdENhdGVnb3J5XHJcbiAgICAgICAgfHwgaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5yaXNrRm9sZGVyKSAmJiAhdGhpcy5jYW5Pbmx5U2VsZWN0SXRlbSkge1xyXG4gICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHggPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHgucm9vdElkID09PSBpdGVtLmlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0Tm9kZVJlY3Vyc2l2ZSh0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0sIGl0ZW0uaXRlbVR5cGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuYXJlYSkge1xyXG4gICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHggPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHgucm9vdElkID09PSBpdGVtLmlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl07XHJcbiAgICAgICAgdHlwZUlkID0gaXRlbS5pdGVtVHlwZTtcclxuXHJcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IDApIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRyZWVDb25maWcxLnNob3dDaGVja0JveCkge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgICAgICAgICBpZDogbm9kZS5yb290SWQsXHJcbiAgICAgICAgICAgICAgaXRlbU5hbWU6IG5vZGUucm9vdE5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbVR5cGU6IHR5cGVJZCxcclxuICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGl0ZW0uaXRlbU51bWJlcklkLFxyXG4gICAgICAgICAgICAgIGxldmVsVHlwZTogaXRlbS5sZXZlbFR5cGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUucHVzaCh7XHJcbiAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXHJcbiAgICAgICAgICAgICAgaWQ6IG5vZGUucm9vdElkLFxyXG4gICAgICAgICAgICAgIGl0ZW1OYW1lOiBub2RlLnJvb3ROYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1UeXBlOiB0eXBlSWQsXHJcbiAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtLml0ZW1OdW1iZXJJZCxcclxuICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMF0udG9kb0l0ZW1TZWxlY3Rpb25CeUlkKFtpdGVtLmlkXSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uIHx8XHJcbiAgICAgICAgaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5jaGVja2xpc3QpIHtcclxuICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleCh4ID0+IHtcclxuICAgICAgICAgIHJldHVybiB4LmNoaWxkSWQgPT09IGl0ZW0uaWQgJiYgeC5yb290SWQgPT09IGl0ZW0ucGFyZW50SWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbm9kZSA9IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXTtcclxuICAgICAgICB0eXBlSWQgPSB0aGlzLml0ZW1UeXBlO1xyXG4gICAgICAgIGNvbnN0IHRyZWVOb2RlID0ge1xyXG4gICAgICAgICAgaWQ6IG5vZGUuY2hpbGRJZCxcclxuICAgICAgICAgIG5hbWU6IG5vZGUuY2hpbGROYW1lLFxyXG4gICAgICAgICAgY2hpbGRyZW46IFtdLFxyXG4gICAgICAgICAgcGFyZW50SWQ6IG5vZGUucm9vdElkXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmRhdGFUcmVlcy50b0FycmF5KClbMF0udG9kb0l0ZW1TZWxlY3Rpb24oW3RyZWVOb2RlXSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gcHJvY2VzcywgcmlzaywuLi5cclxuICAgICAgICBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGExLmZpbmRJbmRleCh4ID0+IHtcclxuICAgICAgICAgIHJldHVybiB4LmNoaWxkSWQudG9Mb3dlckNhc2UoKSA9PT0gaXRlbS5pZC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl07XHJcbiAgICAgICAgdHlwZUlkID0gdGhpcy5pdGVtVHlwZTtcclxuICAgICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgICAgdGhpcy5kYXRhVHJlZXMudG9BcnJheSgpWzBdLnRvZG9JdGVtU2VsZWN0aW9uQnlJZChbbm9kZS5jaGlsZElkXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3ROb2RlUmVjdXJzaXZlKGl0ZW06IFRyZWVNb2RlbCwgaXRlbVR5cGU6IERhdGFUeXBlKSB7XHJcbiAgICBsZXQgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgoeCA9PiB7XHJcbiAgICAgIHJldHVybiB4LnJvb3RJZCA9PT0gaXRlbS5yb290SWQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAocG9zaXRpb24gPj0gMCkge1xyXG5cclxuICAgICAgY29uc3Qgbm9kZTogVHJlZU5vZGUgPSB7XHJcbiAgICAgICAgaWQ6IGl0ZW0ucm9vdElkLFxyXG4gICAgICAgIG5hbWU6IGl0ZW0ucm9vdE5hbWUsXHJcbiAgICAgICAgY2hpbGRyZW46IFtdLFxyXG4gICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBsZXQgbm9kZUNoaWxkcmVuOiBUcmVlTm9kZVtdID0gdGhpcy50cmVlRGF0YTEuXHJcbiAgICAgICAgZmlsdGVyKHggPT4geC5yb290SWQgPT09IGl0ZW0ucm9vdElkKS5cclxuICAgICAgICBtYXAoeCA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogeC5jaGlsZElkLFxyXG4gICAgICAgICAgICBuYW1lOiBpdGVtLmNoaWxkTmFtZSxcclxuICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxyXG4gICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5yb290SWRcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGxldCBub2RlU3ViZm9sZGVyczogVHJlZU1vZGVsW10gPSB0aGlzLnRyZWVEYXRhMS5cclxuICAgICAgICBmaWx0ZXIoeCA9PiB4LnBhcmVudElkID09PSBpdGVtLnJvb3RJZCk7XHJcblxyXG4gICAgICBpZiAodGhpcy50cmVlQ29uZmlnMS5zaG93Q2hlY2tCb3gpIHtcclxuICAgICAgICBub2RlQ2hpbGRyZW4uZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgICAgICAgaWQ6IHguaWQsXHJcbiAgICAgICAgICAgIGl0ZW1OYW1lOiB4Lm5hbWUsXHJcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBpdGVtVHlwZSxcclxuICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtLmRpc3BsYXlJZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5yb290SWRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIG5vZGVDaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUucHVzaCh7XHJcbiAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxyXG4gICAgICAgICAgICBpZDogeC5pZCxcclxuICAgICAgICAgICAgaXRlbU5hbWU6IHgubmFtZSxcclxuICAgICAgICAgICAgaXRlbVR5cGU6IGl0ZW1UeXBlLFxyXG4gICAgICAgICAgICBpdGVtTnVtYmVySWQ6IGl0ZW0uZGlzcGxheUlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnJvb3RJZFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50b2RvSXRlbVNlbGVjdGlvbihbbm9kZV0uY29uY2F0KG5vZGVDaGlsZHJlbikpO1xyXG4gICAgICBpZiAobm9kZVN1YmZvbGRlcnMpIHtcclxuICAgICAgICBub2RlU3ViZm9sZGVycy5mb3JFYWNoKGZvbGRlciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdE5vZGVSZWN1cnNpdmUoZm9sZGVyLCBpdGVtVHlwZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHNldFR5cGVQcm9jZXNzKGV4cGFuZCkge1xyXG4gICAgcmV0dXJuIGV4cGFuZCA/IHRoaXMuZGF0YVR5cGUuYXJlYSA6IHRoaXMuZGF0YVR5cGUucHJvY2VzcztcclxuICB9XHJcblxyXG4gIGdldENvbW1vbkNoZWNrZWROb2RlKGxpc3Q6IEFycmF5PFRyZWVGbGF0Tm9kZT4pIHtcclxuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0ID0gW107XHJcbiAgICB0aGlzLmNvbW1vbkNoZWNrZWRMaXN0ID0gW107XHJcbiAgICB0aGlzLnNpbmdsZVByb2Nlc3NMaXN0ID0gW107XHJcbiAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFsuLi50aGlzLnNpbmdsZURvY3VtZW50TGlzdF07XHJcblxyXG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XHJcbiAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hlY2tlZE5vZGVMaXN0LmZpbmRJbmRleCh4ID0+IHguaWQgPT09IGl0ZW0uaWQgJiYgeC5wYXJlbnRJZCA9PT0gaXRlbS5wYXJlbnRJZCk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLmlkICYmIGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgdGhpcy5jb21tb25DaGVja2VkTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XHJcbiAgICAgICAgICBsZXQgcG9zaXRpb246IG51bWJlcjtcclxuICAgICAgICAgIGlmIChpdGVtLmV4cGFuZGFibGUpIHtcclxuICAgICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgocCA9PiBwLnJvb3RJZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHBvc2l0aW9uID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5zaW5nbGVQcm9jZXNzTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcclxuICAgICAgICAgICAgICBpdGVtTmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1UeXBlOiAodGhpcy5pdGVtVHlwZSA9PT0gMikgPyB0aGlzLnNldFR5cGVQcm9jZXNzKGl0ZW0uZXhwYW5kYWJsZSkgOiB0aGlzLml0ZW1UeXBlLFxyXG4gICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dLmRpc3BsYXlJZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxyXG4gICAgICAgICAgICAgIGxldmVsVHlwZTogaXRlbS5sZXZlbFR5cGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXRlbS5pZCAmJiBpbmRleCA8IDAgJiYgIWl0ZW0uZXhwYW5kYWJsZSAmJiAhdGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUpIHtcclxuICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTEuZmluZEluZGV4KHAgPT4gcC5jaGlsZElkID09PSBpdGVtLmlkICYmIHAucm9vdElkID09PSBpdGVtLnBhcmVudElkKTtcclxuICAgICAgICAgIGlmIChwb3NpdGlvbiA+IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxyXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgIGl0ZW1OYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbVR5cGU6IHRoaXMuaXRlbVR5cGUsXHJcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXHJcbiAgICAgICAgICAgICAgcGFyZW50TmFtZTogdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dLnBhcmVudElkID8gdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dLnN1Yk5hbWUgOiB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0ucm9vdE5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0uZGlzcGxheUlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgbGV2ZWxUeXBlOiBpdGVtLmxldmVsVHlwZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbLi4udGhpcy5jaGVja2VkTm9kZUxpc3QsIC4uLnRoaXMuc2luZ2xlUHJvY2Vzc0xpc3RdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgJiYgdGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgPiAwKSB7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlTGlzdCA9IHRoaXMuY2hlY2tlZE5vZGVMaXN0LnNsaWNlKDAsIHRoaXMubWF4U2VsZWN0SXRlbUNvdW50ICogLTEpO1xyXG4gICAgICAgIGlmIChyZW1vdmVMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmVtb3ZlTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUNoZWNrZWROb2RlTGlzdCh7XHJcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogaXRlbS5pdGVtTmFtZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcclxuICAgICAgICAgICAgICBsZXZlbDogMCxcclxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGhhc0NoaWxkOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5zbGljZSh0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCAqIC0xKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RG9jdW1lbnRDaGVja2VkTm9kZShsaXN0OiBBcnJheTxUcmVlRmxhdE5vZGU+KSB7XHJcbiAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5kb2N1bWVudENoZWNrZWRMaXN0ID0gW107XHJcbiAgICB0aGlzLnNpbmdsZURvY3VtZW50TGlzdCA9IFtdO1xyXG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbLi4udGhpcy5zaW5nbGVQcm9jZXNzTGlzdF07XHJcblxyXG5cclxuICAgIGlmIChsaXN0Lmxlbmd0aCkge1xyXG4gICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5maW5kSW5kZXgoeCA9PiB4LmlkID09PSBpdGVtLmlkKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0uaWQgJiYgaW5kZXggPCAwKSB7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50Q2hlY2tlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZVNlbGVjdGVkTm9kZSkge1xyXG4gICAgICAgICAgbGV0IHBvc2l0aW9uOiBudW1iZXI7XHJcbiAgICAgICAgICBpZiAoaXRlbS5leHBhbmRhYmxlKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTIuZmluZEluZGV4KHAgPT4gcC5yb290SWQgPT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YTIuZmluZEluZGV4KHAgPT4gcC5jaGlsZElkID09PSBpdGVtLmlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChwb3NpdGlvbiA+IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlRG9jdW1lbnRMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxyXG4gICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgIGl0ZW1OYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbVR5cGU6IGl0ZW0uZXhwYW5kYWJsZSA/IHRoaXMuZGF0YVR5cGUuZm9sZGVyIDogdGhpcy5kYXRhVHlwZS5kb2N1bWVudCxcclxuICAgICAgICAgICAgICBpdGVtTnVtYmVySWQ6IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXS5kaXNwbGF5SWQudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcclxuICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBpZiAoaW5kZXggPCAwICYmICFpdGVtLmV4cGFuZGFibGUgJiYgIXRoaXMuc2luZ2xlU2VsZWN0ZWROb2RlKSB7XHJcbiAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMudHJlZURhdGEyLmZpbmRJbmRleChwID0+IHAuY2hpbGRJZCA9PT0gaXRlbS5pZCk7XHJcbiAgICAgICAgICBpZiAocG9zaXRpb24gPiAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcclxuICAgICAgICAgICAgICBpdGVtTmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1UeXBlOiB0aGlzLmRhdGFUeXBlLmRvY3VtZW50LFxyXG4gICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogdGhpcy50cmVlRGF0YTJbcG9zaXRpb25dLmRpc3BsYXlJZC50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxyXG4gICAgICAgICAgICAgIHBhcmVudE5hbWU6IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXS5yb290TmFtZSxcclxuICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zaW5nbGVTZWxlY3RlZE5vZGUpIHtcclxuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFsuLi50aGlzLmNoZWNrZWROb2RlTGlzdCwgLi4udGhpcy5zaW5nbGVEb2N1bWVudExpc3RdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgJiYgdGhpcy5tYXhTZWxlY3RJdGVtQ291bnQgPiAwKSB7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlTGlzdCA9IHRoaXMuY2hlY2tlZE5vZGVMaXN0LnNsaWNlKDAsIHRoaXMubWF4U2VsZWN0SXRlbUNvdW50ICogLTEpO1xyXG4gICAgICAgIGlmIChyZW1vdmVMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmVtb3ZlTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUNoZWNrZWROb2RlTGlzdCh7XHJcbiAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogaXRlbS5pdGVtTmFtZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogaXRlbS5wYXJlbnRJZCxcclxuICAgICAgICAgICAgICBsZXZlbDogMCxcclxuICAgICAgICAgICAgICBleHBhbmRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGhhc0NoaWxkOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5zbGljZSh0aGlzLm1heFNlbGVjdEl0ZW1Db3VudCAqIC0xKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbG9zZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZvbGRlciA9IG51bGw7XHJcbiAgICB0aGlzLml0ZW1JblNwbGl0dmlldyA9IFtdO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9O1xyXG5cclxuICBvbkFkZENsaWNrKCkge1xyXG4gICAgLy8gaWYgKHRoaXMudHJlZUNvbmZpZzEuc2hvd0NoZWNrQm94KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcclxuICAgIHRoaXMuaXRlbUluU3BsaXR2aWV3ID0gW107XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLmNoZWNrZWROb2RlTGlzdCk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5zZWxlY3RlZE5vZGUpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZ2V0T2Zmc2V0SGVpZ2h0KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpbmNsdWRlTWFyZ2luOiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgIGxldCBlbG1IZWlnaHQgPSAwLCBlbG1NYXJnaW4gPSAwO1xyXG5cclxuICAgIGVsbUhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgaWYgKGluY2x1ZGVNYXJnaW4pIHtcclxuICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcclxuICAgICAgZWxtTWFyZ2luID0gcGFyc2VGbG9hdChzdHlsZS5tYXJnaW5Ub3AucmVwbGFjZSgncHgnLCAnJykpICsgcGFyc2VGbG9hdChzdHlsZS5tYXJnaW5Cb3R0b20ucmVwbGFjZSgncHgnLCAnJykpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoZWxtSGVpZ2h0ICsgZWxtTWFyZ2luKTtcclxuICB9XHJcblxyXG4gIGdldEl0ZW1DaGlwTmFtZShpdGVtOiBTZWxlY3RlZE5vZGUpIHtcclxuICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSBEYXRhVHlwZS5jaGVja2xpc3QgfHwgaXRlbS5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZGV2aWF0aW9uKSB7XHJcbiAgICAgIHJldHVybiAoaXRlbS5wYXJlbnROYW1lICYmIGl0ZW0uaXRlbU5hbWUgIT09IGl0ZW0ucGFyZW50TmFtZSkgPyBgJHtpdGVtLnBhcmVudE5hbWV9LyR7aXRlbS5pdGVtTmFtZX1gIDogaXRlbS5pdGVtTmFtZTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtLml0ZW1OYW1lO1xyXG4gIH1cclxuXHJcbiAgaXNFbGxpcHNpc0FjdGl2ZShlOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGUgPyAoZS5jbGllbnRXaWR0aCA8IGUuc2Nyb2xsV2lkdGgpIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXROb2RlSWNvbihpdGVtOiBJUmVsYXRlZCkge1xyXG4gICAgc3dpdGNoIChpdGVtLml0ZW1UeXBlKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOiB7XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLmxldmVsVHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkRlcGFydG1lbnRGb2xkZXI6XHJcbiAgICAgICAgICAgIHJldHVybiAnZGVwYXJ0bWVudF9mb2xkZXJfb3V0bGluZWQnO1xyXG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ3JlZ2lvbmFsX2ZvbGRlcl9vdXRsaW5lZCc7XHJcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuVG9wRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2VudGVycHJpc2VfZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Gb2xkZXI6XHJcbiAgICAgICAgICAgIHJldHVybiAnbG9jYWxfZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDoge1xyXG4gICAgICAgIHN3aXRjaCAoaXRlbS5sZXZlbFR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2RlcGFydG1lbnQnO1xyXG4gICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlJlZ2lvbmFsRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X3JlZ2lvbmFsJztcclxuICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XHJcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnRfZW50ZXJwcmlzZSc7XHJcbiAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRm9sZGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2xvY2FsJztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiAnZG9jdW1lbnQnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjYXNlIERhdGFUeXBlLmFyZWE6XHJcbiAgICAgICAgcmV0dXJuICdwcm9jZXNzX2FyZWFfb3V0bGluZWQnO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLnByb2Nlc3M6XHJcbiAgICAgICAgcmV0dXJuICdwcm9jZXNzJztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kZXZpYXRpb246XHJcbiAgICAgICAgcmV0dXJuICdkZXZpYXRpb24nO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICByZXR1cm4gJ2NoZWNrbGlzdCc7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucmlzazpcclxuICAgICAgICByZXR1cm4gJ3Jpc2snO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFNlYXJjaE9yZGVyKCkge1xyXG4gICAgbGV0IHNlYXJjaFR5cGVzID0gT2JqZWN0LmtleXModGhpcy5kYXRhVHlwZSlcclxuICAgICAgLm1hcChrZXkgPT4gKHsgdmFsdWU6IHRoaXMuZGF0YVR5cGVba2V5XSwga2V5OiBrZXkgfSkpO1xyXG4gICAgc2VhcmNoVHlwZXMgPSBzZWFyY2hUeXBlcy5zbGljZShzZWFyY2hUeXBlcy5sZW5ndGggLyAyKTtcclxuICAgIHJldHVybiBzZWFyY2hUeXBlcztcclxuICB9XHJcblxyXG4gIGdldFRpdGxlKHR5cGU6IG51bWJlcikge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLlBST0NFU1NFUztcclxuICAgICAgY2FzZSBEYXRhVHlwZS5hcmVhOlxyXG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuUFJPQ0VTU19BUkVBO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmRvY3VtZW50OlxyXG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuRE9DVU1FTlRTO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmZvbGRlcjpcclxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkZPTERFUjtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5kZXZpYXRpb246XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuTEFORy5ERVZJQVRJT047XHJcbiAgICAgIGNhc2UgRGF0YVR5cGUuZGV2aWF0aW9uVHlwZTpcclxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkRFVklBVElPTl9UWVBFO1xyXG4gICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkNIRUNLTElTVDtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5jaGVja2xpc3RDYXRlZ29yeTpcclxuICAgICAgICByZXR1cm4gdGhpcy5MQU5HLkNIRUNLTElTVF9DQVRFR09SWTtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrOlxyXG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuQVNTRVNTTUVOVDtcclxuICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrRm9sZGVyOlxyXG4gICAgICAgIHJldHVybiB0aGlzLkxBTkcuRk9MREVSO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UGFyZW50TmFtZShpdGVtOiBJUmVsYXRlZCkge1xyXG4gICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0IHx8IGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uKSB7XHJcbiAgICAgIHJldHVybiBpdGVtLnBhcmVudE5hbWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGdldEl0ZW1JZChpdGVtOiBJUmVsYXRlZCkge1xyXG4gICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUucHJvY2Vzcykge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5MQU5HLlBST0NFU1NfSUR9OiAke2l0ZW0uaXRlbU51bWJlcklkfTsgJHtpdGVtLnN0YXR1c05hbWV9YDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUuZG9jdW1lbnQpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuTEFORy5ET0NVTUVOVF9JRH06ICR7aXRlbS5pdGVtTnVtYmVySWR9OyAke2l0ZW0uc3RhdHVzTmFtZX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTZWxlY3RJdGVtKG5vZGU6IElSZWxhdGVkKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZE5vZGUgPSB0aGlzLmNoZWNrZWROb2RlTGlzdC5maW5kKHggPT4gKHguaWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5pZC50b0xvd2VyQ2FzZSgpICYmIHgucGFyZW50SWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICBpZiAoc2VsZWN0ZWROb2RlKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ2hlY2tlZE5vZGVMaXN0KHtcclxuICAgICAgICBpZDogc2VsZWN0ZWROb2RlLmlkLFxyXG4gICAgICAgIG5hbWU6IG5vZGUuaXRlbU5hbWUsXHJcbiAgICAgICAgcGFyZW50SWQ6IHNlbGVjdGVkTm9kZS5wYXJlbnRJZCxcclxuICAgICAgICBoYXNDaGlsZDogZmFsc2UsXHJcbiAgICAgICAgZXhwYW5kYWJsZTogZmFsc2UsXHJcbiAgICAgICAgbGV2ZWw6IDAsXHJcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdFJlbGF0ZWQobm9kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc05vZGVTZWxlY3RlZChub2RlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja2VkTm9kZUxpc3QuZmlsdGVyKHggPT4gKHguaWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5pZC50b0xvd2VyQ2FzZSgpICYmIHgucGFyZW50SWQudG9Mb3dlckNhc2UoKSA9PT0gbm9kZS5wYXJlbnRJZC50b0xvd2VyQ2FzZSgpKSkubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG5cclxuICBnZXRDaGlsZHJlbk9mRm9sZGVyKG5vZGU6IFRyZWVGbGF0Tm9kZSwgdHlwZTogRGF0YVR5cGUpIHtcclxuICAgIGlmICh0aGlzLnNwbGl0Vmlldykge1xyXG4gICAgICBjb25zdCBwYXJlbnRUZXh0cyA9IHRoaXMuZWxlbS5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50ZXh0LW5vZGUtcGFyZW50Jyk7XHJcbiAgICAgIFtdLmZvckVhY2guY2FsbChwYXJlbnRUZXh0cywgKGVsKSA9PiB7XHJcbiAgICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlLWl0ZW0nKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGl0ZW1FbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgI18ke25vZGUucGFyZW50SWQgPyBub2RlLnBhcmVudElkIDogJyd9XyR7bm9kZS5pZH1fJHtub2RlLmxldmVsfWApO1xyXG4gICAgICBbXS5mb3JFYWNoLmNhbGwoaXRlbUVsZW1lbnQsIChlbCkgPT4ge1xyXG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZS1pdGVtJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgaXRlbSA9IG5ldyBJUmVsYXRlZCgpO1xyXG4gICAgICBpdGVtLmlkID0gbm9kZS5pZDtcclxuICAgICAgaXRlbS5pdGVtVHlwZSA9IHR5cGU7XHJcbiAgICAgIGl0ZW0uaXRlbU5hbWUgPSBub2RlLm5hbWU7XHJcbiAgICAgIGl0ZW0ubGV2ZWxUeXBlID0gbm9kZS5sZXZlbFR5cGU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBub2RlO1xyXG4gICAgICBpZiAodHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5mb2xkZXIpIHtcclxuICAgICAgICB0aGlzLnNwbGl0Vmlld1RpdGxlID0gYCR7dGhpcy5MQU5HLk1FU1NBR0UuRE9DVU1FTlRTX0lOLnRvVXBwZXJDYXNlKCl9IFwiJHtub2RlLm5hbWV9XCJgO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHR5cGUgPT09IHRoaXMuZGF0YVR5cGUuYXJlYSkge1xyXG4gICAgICAgIHRoaXMuc3BsaXRWaWV3VGl0bGUgPSBgJHt0aGlzLkxBTkcuTUVTU0FHRS5QUk9DRVNTRVNfSU4udG9VcHBlckNhc2UoKX0gXCIke25vZGUubmFtZX1cImA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbkV4cGFuZEZvbGRlci5lbWl0KGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuU2hvd1NlYXJjaE9wdGlvbihtb2R1bGVJZDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5jYW5Pbmx5U2VsZWN0SXRlbSAmJlxyXG4gICAgICAobW9kdWxlSWQgPT09IERhdGFUeXBlLmNoZWNrbGlzdENhdGVnb3J5XHJcbiAgICAgICAgfHwgbW9kdWxlSWQgPT09IERhdGFUeXBlLnJpc2tGb2xkZXJcclxuICAgICAgICB8fCBtb2R1bGVJZCA9PT0gRGF0YVR5cGUuZGV2aWF0aW9uVHlwZVxyXG4gICAgICAgIHx8IChtb2R1bGVJZCA9PT0gRGF0YVR5cGUuYXJlYSAmJiB0aGlzLnRyZWVDb25maWcxICYmICF0aGlzLnRyZWVDb25maWcxLnNpbmdsZVNlbGVjdGVkTm9kZSlcclxuICAgICAgICB8fCAobW9kdWxlSWQgPT09IERhdGFUeXBlLmZvbGRlciAmJiB0aGlzLnRyZWVDb25maWcyICYmICF0aGlzLnRyZWVDb25maWcyLnNpbmdsZVNlbGVjdGVkTm9kZSlcclxuICAgICAgKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGVGaWx0ZXJlZE9wdGlvbnMobW9kdWxlSWQpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBzZWxlY3ROb2RlVHJlZUV2ZW50KG5vZGUpIHtcclxuICAgIGxldCBwb3NpdGlvbiA9IC0xO1xyXG4gICAgbGV0IHBhcmVudE5hbWUgPSAnJztcclxuICAgIGxldCBpdGVtTnVtYmVySWQgPSAnJztcclxuXHJcbiAgICBpZiAobm9kZS5pdGVtVHlwZSA9PSBEYXRhVHlwZS5mb2xkZXIgfHwgbm9kZS5pdGVtVHlwZSA9PSBEYXRhVHlwZS5kb2N1bWVudCkge1xyXG4gICAgICBwb3NpdGlvbiA9ICFub2RlLmV4cGFuZGFibGUgPyB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IG5vZGUuaWQgJiYgcC5yb290SWQgPT09IG5vZGUucGFyZW50SWQpIDpcclxuICAgICAgICB0aGlzLnRyZWVEYXRhMi5maW5kSW5kZXgocCA9PiBwLnJvb3RJZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgIHBhcmVudE5hbWUgPSB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl0ucGFyZW50SWQgPyB0aGlzLnRyZWVEYXRhMltwb3NpdGlvbl0uc3ViTmFtZSA6IHRoaXMudHJlZURhdGEyW3Bvc2l0aW9uXS5yb290TmFtZTtcclxuICAgICAgaXRlbU51bWJlcklkID0gdGhpcy50cmVlRGF0YTJbcG9zaXRpb25dPy5kaXNwbGF5SWQ/LnRvU3RyaW5nKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwb3NpdGlvbiA9ICFub2RlLmV4cGFuZGFibGUgPyB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IG5vZGUuaWQgJiYgcC5yb290SWQgPT09IG5vZGUucGFyZW50SWQpIDpcclxuICAgICAgICB0aGlzLnRyZWVEYXRhMS5maW5kSW5kZXgocCA9PiBwLnJvb3RJZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgIHBhcmVudE5hbWUgPSB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0ucGFyZW50SWQgPyB0aGlzLnRyZWVEYXRhMVtwb3NpdGlvbl0uc3ViTmFtZSA6IHRoaXMudHJlZURhdGExW3Bvc2l0aW9uXS5yb290TmFtZTtcclxuICAgICAgaXRlbU51bWJlcklkID0gdGhpcy50cmVlRGF0YTFbcG9zaXRpb25dPy5kaXNwbGF5SWQ/LnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xyXG4gICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgIGl0ZW1OYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgIGl0ZW1UeXBlOiBub2RlLml0ZW1UeXBlLFxyXG4gICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZCxcclxuICAgICAgcGFyZW50TmFtZTogcGFyZW50TmFtZSxcclxuICAgICAgaXRlbU51bWJlcklkOiBpdGVtTnVtYmVySWQsXHJcbiAgICAgIGxldmVsVHlwZTogbm9kZS5sZXZlbFR5cGVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGROb2RlU2VsZWN0T25lKGxpc3RDaGlsZHJlbikge1xyXG4gICAgdGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUgPSBbXTtcclxuICAgIHRoaXMubGlzdENoaWxkcmVuU2VsZWN0T25lID0gbGlzdENoaWxkcmVuO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGlkPVwicW1zbGliX3JlbGF0ZWRfcG9wdXBcIiBjbGFzcz1cInFtc2xpYl9fcmVsYXRlZF9fcG9wdXBfX2NvbnRhaW5lclwiPlxyXG4gIDxkaXYgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cF9oZWFkZXJcIj5cclxuICAgIDxzcGFuIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImJ1dHRvbl9fY2xvc2VcIiAoY2xpY2spPVwib25DbG9zZUNsaWNrKClcIj5cclxuICAgICAgPG1hdC1pY29uIG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxkaXYgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cF9oZWFkZXJfMDAxXCIgbWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgICA8c3Bhbj57eyBtb2R1bGVOYW1lIHwgdXBwZXJjYXNlIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgIGlkPVwicW1zbGliX3JlbGF0ZWRfcG9wdXBfc2VhcmNoXCJcclxuICAgIGNsYXNzPVwiaW5wdXRfX2ZpZWxkXCJcclxuICAgIChjbGljayk9XCJzaG93U2VhcmNoUmVzdWx0KClcIlxyXG4gID5cclxuICAgIDxpbnB1dFxyXG4gICAgICAjbmFtZVxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgTEFORy5TRUFSQ0ggfX1cIlxyXG4gICAgICBtYXRJbnB1dFxyXG4gICAgICBbZm9ybUNvbnRyb2xdPVwibXlDb250cm9sXCJcclxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcclxuICAgICAgI2F1dG9Db21wbGV0ZUlucHV0U2VhcmNoXHJcbiAgICAvPlxyXG4gICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJsaW5lX19kaXZpZGVyXCI+PC9kaXY+XHJcblxyXG4gIDxtYXQtYXV0b2NvbXBsZXRlXHJcbiAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXHJcbiAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheVJlbGF0ZWRcIlxyXG4gICAgY2xhc3M9XCJtYXQtYXV0b2NvbXBsZXRlX3JlbGF0ZWQtdmlld3BvcnRcIlxyXG4gID5cclxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICAgcW1zLXNjcm9sbGJhclxyXG4gICAgICBpdGVtU2l6ZT1cIjEwXCJcclxuICAgICAgY2xhc3M9XCJyZWxhdGVkLXZpZXdwb3J0XCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdHlwZSBvZiBzZWFyY2hPcmRlclwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic2VhcmNoX19tb2R1bGUtcmVzdWx0XCJcclxuICAgICAgICAgICpuZ0lmPVwiY2FuU2hvd1NlYXJjaE9wdGlvbih0eXBlLnZhbHVlKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2hfX21vZHVsZS10aXRsZVwiPnt7IGdldFRpdGxlKHR5cGUudmFsdWUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2hfX29wdGlvblwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZ2V0TW9kdWxlRmlsdGVyZWRPcHRpb25zKHR5cGUudmFsdWUpXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSZWxhdGVkKG9wdGlvbilcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8cW1zLWxpc3QtaXRlbSB0eXBlPVwiaW1hZ2Utc3F1YXJlXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgICAgICAgICBsZWFkaW5nLWljb25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJpbWFnZS1zcXVhcmVcIlxyXG4gICAgICAgICAgICAgICAgW3N2Z0ljb25dPVwiZ2V0Tm9kZUljb24ob3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgPjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPGRpdiBxbXMtbGlzdC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIHFtcy1saW5lXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjYXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgcW1zLXRvb2wtdGlwPVwie3tcclxuICAgICAgICAgICAgICAgICAgICBpc0VsbGlwc2lzQWN0aXZlKHNlYXJjaEl0ZW1SZXN1bHQpID8gb3B0aW9uLnBhcmVudE5hbWUgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgIG1vZGU9XCJkYXJrXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRQYXJlbnROYW1lKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAjc2VhcmNoSXRlbVJlc3VsdCBjbGFzcz1cInNlYXJjaF9fcmVzdWx0X19wYXJlbnQtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5wYXJlbnROYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBxbXMtbGluZSB0eXBlPVwic3VidGl0bGVcIiBjbGFzcz1cInNlYXJjaF9fb3B0aW9uLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLml0ZW1OYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24uYnJlYWRjdW1icyAmJiBvcHRpb24uYnJlYWRjdW1icy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8cW1zLWJyZWFkY3J1bWJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJyZWFkY3J1bWItY29udGFpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbnVtRGlzcGxheUl0ZW09XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICBbbm9kZXNdPVwib3B0aW9uLmJyZWFkY3VtYnNcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvcW1zLWJyZWFkY3J1bWI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IHFtcy1saW5lIGNvbG9yPVwiZGVmYXVsdC1zdWJ0aXRsZVwiICpuZ0lmPVwiZ2V0SXRlbUlkKG9wdGlvbilcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgc2VhcmNoX19kZXNjcmlwdGlvbi1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgIGxvY2FsX29mZmVyXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRJdGVtSWQob3B0aW9uKSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3Ftcy1saXN0LWl0ZW0+XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwicW1zLXNjcm9sbGJhciBxbXNsaWJfcmVsYXRlZF9wb3B1cF9jb250ZW50XCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgIHBhbmVsX19jb250ZW50X2l0ZW06IGNoZWNrZWROb2RlTGlzdC5sZW5ndGgsXHJcbiAgICAgICAgcGFuZWxfX2NvbnRlbnQ6ICFjaGVja2VkTm9kZUxpc3QubGVuZ3RoLFxyXG4gICAgICAgICdjb2wtNic6IHNwbGl0VmlldyxcclxuICAgICAgICAnY29sLTEyJzogIXNwbGl0Vmlld1xyXG4gICAgICB9XCJcclxuICAgID5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWxcclxuICAgICAgICBoaWRlVG9nZ2xlXHJcbiAgICAgICAgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cF9jb21tb25fMDAxXCJcclxuICAgICAgICBbZXhwYW5kZWRdPVwiaXNDb21tb25FeHBhbmRlZFwiXHJcbiAgICAgICAgKG9wZW5lZCk9XCJpc0NvbW1vbkV4cGFuZGVkID0gdHJ1ZVwiXHJcbiAgICAgICAgKGNsb3NlZCk9XCJpc0NvbW1vbkV4cGFuZGVkID0gZmFsc2VcIlxyXG4gICAgICAgIGNsYXNzPVwicGFuZWwtdHJlZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgY2xhc3M9XCJwYWRkaW5nLTVcIj5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgKm5nSWY9XCJtb2R1bGVJZCA9PT0gbW9kdWxlLmRvY3VtZW50UHJvY2Vzc1wiPlxyXG4gICAgICAgICAgICB7eyBMQU5HLlBST0NFU1NFUyB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlICpuZ0lmPVwibW9kdWxlSWQgPT09IG1vZHVsZS5kZXZpYXRpb25cIj5cclxuICAgICAgICAgICAge3sgTEFORy5ERVZJQVRJT04gfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgPG1hdC1wYW5lbC10aXRsZSAqbmdJZj1cIm1vZHVsZUlkID09PSBtb2R1bGUuY2hlY2tsaXN0XCI+XHJcbiAgICAgICAgICAgIHt7IExBTkcuQ0hFQ0tMSVNUIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgKm5nSWY9XCJtb2R1bGVJZCA9PT0gbW9kdWxlLnJpc2tcIj5cclxuICAgICAgICAgICAge3sgTEFORy5BU1NFU1NNRU5UIHwgdXBwZXJjYXNlIH19XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIDxidXR0b24gcW1zLWJ0bi1pY29uIGNsYXNzPVwicmVsYXRlZF9wb3B1cF90b2dnbGUtYnRuXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgaXNDb21tb25FeHBhbmRlZCA/IFwia2V5Ym9hcmRfYXJyb3dfdXBcIiA6IFwia2V5Ym9hcmRfYXJyb3dfZG93blwiXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgPGRpdiBpZD1cInFtc2xpYl9yZWxhdGVkX3BvcHVwX2NvbW1vbl8wMDJcIj5cclxuICAgICAgICAgIDxxbXMtdHJlZVxyXG4gICAgICAgICAgICBbdHJlZURhdGFdPVwidHJlZURhdGExXCJcclxuICAgICAgICAgICAgW3RyZWVDb25maWddPVwidHJlZUNvbmZpZzFcIlxyXG4gICAgICAgICAgICBbc2VsZWN0ZWREYXRhXT1cInNlbGVjdGVkRGF0YVwiXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZFJpc2tEYXRhXT1cInNlbGVjdGVkUmlza0RhdGFcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRMaXN0XT1cImRpc2FibGVkTGlzdFwiXHJcbiAgICAgICAgICAgIChjaGVja0JveEV2ZW50KT1cImdldENvbW1vbkNoZWNrZWROb2RlKCRldmVudClcIlxyXG4gICAgICAgICAgICAobm9kZUV4cGFuZEV2ZW50KT1cImdldENoaWxkcmVuT2ZGb2xkZXIoJGV2ZW50LCBkYXRhVHlwZS5hcmVhKVwiXHJcbiAgICAgICAgICAgIChzZWxlY3ROb2RlRXZlbnQpPVwic2VsZWN0Tm9kZVRyZWVFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGdldENoaWxkTm9kZVNlbGVjdE9uZSk9XCJnZXRDaGlsZE5vZGVTZWxlY3RPbmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFtleHBhbmRPblRpdGxlQ2xpY2tdPVwiIXNwbGl0Vmlld1wiXHJcbiAgICAgICAgICA+PC9xbXMtdHJlZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwibW9kdWxlSWQgPT09IG1vZHVsZS5kb2N1bWVudFByb2Nlc3NcIlxyXG4gICAgICAgIGNsYXNzPVwibGluZV9fZGl2aWRlclwiXHJcbiAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsXHJcbiAgICAgICAgaGlkZVRvZ2dsZVxyXG4gICAgICAgICpuZ0lmPVwibW9kdWxlSWQgPT09IG1vZHVsZS5kb2N1bWVudFByb2Nlc3NcIlxyXG4gICAgICAgIGlkPVwicW1zbGliX3JlbGF0ZWRfcG9wdXBfZG9jdW1lbnRfMDAxXCJcclxuICAgICAgICBbZXhwYW5kZWRdPVwiaXNEb2N1bWVudEV4cGFuZGVkXCJcclxuICAgICAgICAob3BlbmVkKT1cImlzRG9jdW1lbnRFeHBhbmRlZCA9IHRydWVcIlxyXG4gICAgICAgIChjbG9zZWQpPVwiaXNEb2N1bWVudEV4cGFuZGVkID0gZmFsc2VcIlxyXG4gICAgICAgIGNsYXNzPVwicGFuZWwtdHJlZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgY2xhc3M9XCJwYWRkaW5nLTVcIj5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+IHt7IExBTkcuRE9DVU1FTlRTIHwgdXBwZXJjYXNlIH19IDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgPGJ1dHRvbiBxbXMtYnRuLWljb24gY2xhc3M9XCJyZWxhdGVkX3BvcHVwX3RvZ2dsZS1idG5cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICBpc0RvY3VtZW50RXhwYW5kZWQgPyBcImtleWJvYXJkX2Fycm93X3VwXCIgOiBcImtleWJvYXJkX2Fycm93X2Rvd25cIlxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJxbXNsaWJfcmVsYXRlZF9wb3B1cF9kb2N1bWVudF8wMDJcIj5cclxuICAgICAgICAgIDxxbXMtdHJlZVxyXG4gICAgICAgICAgICBbdHJlZURhdGFdPVwidHJlZURhdGEyXCJcclxuICAgICAgICAgICAgW3RyZWVDb25maWddPVwidHJlZUNvbmZpZzJcIlxyXG4gICAgICAgICAgICBbc2VsZWN0ZWREYXRhXT1cInNlbGVjdGVkRGF0YTJcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRMaXN0XT1cImRpc2FibGVkTGlzdDJcIlxyXG4gICAgICAgICAgICAoY2hlY2tCb3hFdmVudCk9XCJnZXREb2N1bWVudENoZWNrZWROb2RlKCRldmVudClcIlxyXG4gICAgICAgICAgICAobm9kZUV4cGFuZEV2ZW50KT1cImdldENoaWxkcmVuT2ZGb2xkZXIoJGV2ZW50LCBkYXRhVHlwZS5mb2xkZXIpXCJcclxuICAgICAgICAgICAgKHNlbGVjdE5vZGVFdmVudCk9XCJzZWxlY3ROb2RlVHJlZUV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICAoZ2V0Q2hpbGROb2RlU2VsZWN0T25lKT1cImdldENoaWxkTm9kZVNlbGVjdE9uZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2V4cGFuZE9uVGl0bGVDbGlja109XCIhc3BsaXRWaWV3XCJcclxuICAgICAgICAgID48L3Ftcy10cmVlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJzcGxpdFZpZXdcIlxyXG4gICAgICBjbGFzcz1cIlxyXG4gICAgICAgIHFtcy1zY3JvbGxiYXJcclxuICAgICAgICBxbXNsaWItcmVsYXRlZC1wb3B1cC1zcGxpdHZpZXcgcW1zbGliX3JlbGF0ZWRfcG9wdXBfY29udGVudFxyXG4gICAgICAgIGNvbC02XHJcbiAgICAgIFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICBwYW5lbF9fY29udGVudF9pdGVtOiBjaGVja2VkTm9kZUxpc3QubGVuZ3RoLFxyXG4gICAgICAgIHBhbmVsX19jb250ZW50OiAhY2hlY2tlZE5vZGVMaXN0Lmxlbmd0aFxyXG4gICAgICB9XCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cInNwbGl0dmlldy1oZWFkZXJcIiAqbmdJZj1cInNlbGVjdGVkRm9sZGVyXCI+XHJcbiAgICAgICAge3sgc3BsaXRWaWV3VGl0bGUgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJleHBhbmQtbm9kZVwiICpuZ0Zvcj1cImxldCBub2RlIG9mIGl0ZW1JblNwbGl0dmlld1wiPlxyXG4gICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgIHFtcy1ncm91cC1vcHRpb25zXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICBjb2xvcj1cImRlZmF1bHRcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNOb2RlU2VsZWN0ZWQobm9kZSlcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RJdGVtKG5vZGUpXCJcclxuICAgICAgICA+PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgICBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3IgbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIlxyXG4gICAgICAgICAgW3N2Z0ljb25dPVwiZ2V0Tm9kZUljb24obm9kZSlcIlxyXG4gICAgICAgID48L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ub2RlXCI+e3sgbm9kZS5pdGVtTmFtZSB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImNoZWNrZWROb2RlTGlzdC5sZW5ndGhcIiBjbGFzcz1cImxpbmVfX2RpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImNoZWNrZWROb2RlTGlzdC5sZW5ndGhcIiBjbGFzcz1cInBhbmVsX19pdGVtIHFtcy1zY3JvbGxiYXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGVkX19pdGVtX19pbmxpbmVcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjaGVja2VkTm9kZUxpc3RcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiaXRlbS5pdGVtTmFtZVwiXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwicmVsYXRlZF9faXRlbV9fY29udGVudFwiXHJcbiAgICAgICAgcW1zLXRvb2wtdGlwPVwie3tcclxuICAgICAgICAgIGlzRWxsaXBzaXNBY3RpdmUoaXRlbU5hbWUpID8gZ2V0SXRlbUNoaXBOYW1lKGl0ZW0pIDogJydcclxuICAgICAgICB9fVwiXHJcbiAgICAgICAgbW9kZT1cImRhcmtcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGVkX19pdGVtX19jb250ZW50X25hbWVcIiAjaXRlbU5hbWU+e3tcclxuICAgICAgICAgIGdldEl0ZW1DaGlwTmFtZShpdGVtKVxyXG4gICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgKm5nSWY9XCIhKHRyZWVDb25maWcxPy5zZWxlY3RPbmUgfHwgdHJlZUNvbmZpZzI/LnNlbGVjdE9uZSlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNoZWNrZWROb2RlTGlzdChpdGVtKVwiXHJcbiAgICAgICAgICA+Y2FuY2VsPC9tYXQtaWNvblxyXG4gICAgICAgID5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImxpbmVfX2RpdmlkZXJcIj48L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbmZpcm1fX2J1dHRvbl9fZ3JvdXBzXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiIWNoZWNrZWROb2RlTGlzdC5sZW5ndGhcIlxyXG4gICAgICBxbXMtYnRuXHJcbiAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogN3B4XCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWRkQ2xpY2soKVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IExBTkcuQUREIH19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJjaGVja2VkTm9kZUxpc3QubGVuZ3RoXCJcclxuICAgICAgcW1zLWJ0blxyXG4gICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDBweFwiXHJcbiAgICAgIChjbGljayk9XCJvbkFkZENsaWNrKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyBMQU5HLkFERCB9fSAoe3sgY2hlY2tlZE5vZGVMaXN0Lmxlbmd0aCB9fSlcclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBxbXMtYnRuLXRleHRcclxuICAgICAgW25nU3R5bGVdPVwieyAnbWFyZ2luLXRvcCc6IGNoZWNrZWROb2RlTGlzdC5sZW5ndGggPyAnMHB4JyA6ICc3cHgnIH1cIlxyXG4gICAgICAoY2xpY2spPVwib25DbG9zZUNsaWNrKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyBMQU5HLkNBTkNFTCB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
@@ -16,7 +16,6 @@ import { QmsAngularModule } from '../../qms-angular.module';
|
|
16
16
|
import { QMSAppIconModule } from "../app-icon/app-icon.module";
|
17
17
|
import { QMSBreadcrumbModule } from "../breadcrumb/breadcrumb.module";
|
18
18
|
import { QMSListModule } from "../list/list.module";
|
19
|
-
import { QMSTreeModule } from "../tree/tree.module";
|
20
19
|
import { RelatedContentComponent } from "./content/related-content.component";
|
21
20
|
import { RelatedListComponent } from "./list-other-related/list-related.component";
|
22
21
|
import { RelatedPopupComponent } from "./popup/related-popup.component";
|
@@ -24,11 +23,13 @@ import { RiskAnalysisComponent } from "./risk/analysis/analysis.component";
|
|
24
23
|
import { RiskListComponent } from "./risk/list/list.component";
|
25
24
|
import { RiskResultComponent } from "./risk/result/result.component";
|
26
25
|
import { SidenavComponent } from "./sidenav/sidenav.component";
|
26
|
+
import { TreeComponent } from "./tree/tree.component";
|
27
27
|
import * as i0 from "@angular/core";
|
28
28
|
export class QMSRelatedModule {
|
29
29
|
}
|
30
30
|
QMSRelatedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QMSRelatedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
31
|
-
QMSRelatedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QMSRelatedModule, declarations: [
|
31
|
+
QMSRelatedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QMSRelatedModule, declarations: [TreeComponent,
|
32
|
+
RelatedPopupComponent,
|
32
33
|
RelatedContentComponent,
|
33
34
|
SidenavComponent,
|
34
35
|
RiskAnalysisComponent,
|
@@ -50,8 +51,8 @@ QMSRelatedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
|
|
50
51
|
QMSListModule,
|
51
52
|
QmsAngularModule,
|
52
53
|
QMSBreadcrumbModule,
|
53
|
-
QMSAppIconModule,
|
54
|
-
|
54
|
+
QMSAppIconModule], exports: [TreeComponent,
|
55
|
+
RelatedPopupComponent,
|
55
56
|
RelatedContentComponent,
|
56
57
|
SidenavComponent,
|
57
58
|
RiskAnalysisComponent,
|
@@ -75,13 +76,13 @@ QMSRelatedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
|
|
75
76
|
QMSListModule,
|
76
77
|
QmsAngularModule,
|
77
78
|
QMSBreadcrumbModule,
|
78
|
-
QMSAppIconModule
|
79
|
-
QMSTreeModule
|
79
|
+
QMSAppIconModule
|
80
80
|
]] });
|
81
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: QMSRelatedModule, decorators: [{
|
82
82
|
type: NgModule,
|
83
83
|
args: [{
|
84
84
|
declarations: [
|
85
|
+
TreeComponent,
|
85
86
|
RelatedPopupComponent,
|
86
87
|
RelatedContentComponent,
|
87
88
|
SidenavComponent,
|
@@ -107,10 +108,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImpor
|
|
107
108
|
QMSListModule,
|
108
109
|
QmsAngularModule,
|
109
110
|
QMSBreadcrumbModule,
|
110
|
-
QMSAppIconModule
|
111
|
-
QMSTreeModule
|
111
|
+
QMSAppIconModule
|
112
112
|
],
|
113
113
|
exports: [
|
114
|
+
TreeComponent,
|
114
115
|
RelatedPopupComponent,
|
115
116
|
RelatedContentComponent,
|
116
117
|
SidenavComponent,
|
@@ -121,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImpor
|
|
121
122
|
]
|
122
123
|
}]
|
123
124
|
}] });
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRlZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcmVsYXRlZC9yZWxhdGVkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQTJDdEQsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGlCQXZDekIsYUFBYTtRQUNiLHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsZ0JBQWdCO1FBQ2hCLHFCQUFxQjtRQUNyQixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLG9CQUFvQixhQUdwQixZQUFZO1FBQ1osYUFBYTtRQUNiLGFBQWE7UUFDYixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixxQkFBcUI7UUFDckIsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixvQkFBb0I7UUFDcEIsYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixtQkFBbUI7UUFDbkIsZ0JBQWdCLGFBR2hCLGFBQWE7UUFDYixxQkFBcUI7UUFDckIsdUJBQXVCO1FBQ3ZCLGdCQUFnQjtRQUNoQixxQkFBcUI7UUFDckIsbUJBQW1CO1FBQ25CLGlCQUFpQjtRQUNqQixvQkFBb0I7OEdBR1gsZ0JBQWdCLFlBOUJsQjtZQUNQLFlBQVk7WUFDWixhQUFhO1lBQ2IsYUFBYTtZQUNiLGVBQWU7WUFDZixpQkFBaUI7WUFDakIsa0JBQWtCO1lBQ2xCLHFCQUFxQjtZQUNyQixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLG9CQUFvQjtZQUNwQixhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixnQkFBZ0I7U0FDakI7MkZBWVUsZ0JBQWdCO2tCQXpDNUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLGdCQUFnQjtxQkFDakI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsb0JBQW9CO3FCQUNyQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NhcmRcIjtcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3hcIjtcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvblwiO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9saXN0XCI7XHJcbmltcG9ydCB7IE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgTWF0VHJlZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90cmVlXCI7XHJcbmltcG9ydCB7IFNoYXJlZE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi4vLi4vbWF0ZXJpYWwtbW9kdWxlJztcclxuaW1wb3J0IHsgUW1zQW5ndWxhck1vZHVsZSB9IGZyb20gJy4uLy4uL3Ftcy1hbmd1bGFyLm1vZHVsZSc7XHJcbmltcG9ydCB7IFFNU0FwcEljb25Nb2R1bGUgfSBmcm9tIFwiLi4vYXBwLWljb24vYXBwLWljb24ubW9kdWxlXCI7XHJcbmltcG9ydCB7IFFNU0JyZWFkY3J1bWJNb2R1bGUgfSBmcm9tIFwiLi4vYnJlYWRjcnVtYi9icmVhZGNydW1iLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBRTVNMaXN0TW9kdWxlIH0gZnJvbSBcIi4uL2xpc3QvbGlzdC5tb2R1bGVcIjtcclxuaW1wb3J0IHsgUmVsYXRlZENvbnRlbnRDb21wb25lbnQgfSBmcm9tIFwiLi9jb250ZW50L3JlbGF0ZWQtY29udGVudC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUmVsYXRlZExpc3RDb21wb25lbnQgfSBmcm9tIFwiLi9saXN0LW90aGVyLXJlbGF0ZWQvbGlzdC1yZWxhdGVkLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSZWxhdGVkUG9wdXBDb21wb25lbnQgfSBmcm9tIFwiLi9wb3B1cC9yZWxhdGVkLXBvcHVwLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSaXNrQW5hbHlzaXNDb21wb25lbnQgfSBmcm9tIFwiLi9yaXNrL2FuYWx5c2lzL2FuYWx5c2lzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSaXNrTGlzdENvbXBvbmVudCB9IGZyb20gXCIuL3Jpc2svbGlzdC9saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSaXNrUmVzdWx0Q29tcG9uZW50IH0gZnJvbSBcIi4vcmlzay9yZXN1bHQvcmVzdWx0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBTaWRlbmF2Q29tcG9uZW50IH0gZnJvbSBcIi4vc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBUcmVlQ29tcG9uZW50IH0gZnJvbSBcIi4vdHJlZS90cmVlLmNvbXBvbmVudFwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFRyZWVDb21wb25lbnQsXHJcbiAgICBSZWxhdGVkUG9wdXBDb21wb25lbnQsXHJcbiAgICBSZWxhdGVkQ29udGVudENvbXBvbmVudCxcclxuICAgIFNpZGVuYXZDb21wb25lbnQsXHJcbiAgICBSaXNrQW5hbHlzaXNDb21wb25lbnQsXHJcbiAgICBSaXNrUmVzdWx0Q29tcG9uZW50LFxyXG4gICAgUmlza0xpc3RDb21wb25lbnQsXHJcbiAgICBSZWxhdGVkTGlzdENvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0VHJlZU1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBTY3JvbGxpbmdNb2R1bGUsXHJcbiAgICBNYXRDYXJkTW9kdWxlLFxyXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcclxuICAgIE1hdExpc3RNb2R1bGUsXHJcbiAgICBTaGFyZWRNYXRlcmlhbE1vZHVsZSxcclxuICAgIFFNU0xpc3RNb2R1bGUsXHJcbiAgICBRbXNBbmd1bGFyTW9kdWxlLFxyXG4gICAgUU1TQnJlYWRjcnVtYk1vZHVsZSxcclxuICAgIFFNU0FwcEljb25Nb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFRyZWVDb21wb25lbnQsXHJcbiAgICBSZWxhdGVkUG9wdXBDb21wb25lbnQsXHJcbiAgICBSZWxhdGVkQ29udGVudENvbXBvbmVudCxcclxuICAgIFNpZGVuYXZDb21wb25lbnQsXHJcbiAgICBSaXNrQW5hbHlzaXNDb21wb25lbnQsXHJcbiAgICBSaXNrUmVzdWx0Q29tcG9uZW50LFxyXG4gICAgUmlza0xpc3RDb21wb25lbnQsXHJcbiAgICBSZWxhdGVkTGlzdENvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU1JlbGF0ZWRNb2R1bGUgeyB9XHJcbiJdfQ==
|