@softheon/armature 17.12.7 → 17.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/ag-grid-components/public-api.d.ts +1 -0
  2. package/ag-grid-components/src/ag-grid-components.module.d.ts +21 -20
  3. package/ag-grid-components/src/sof-table/sof-table.component.d.ts +25 -23
  4. package/ag-grid-components/src/table-cell/table-cell.component.d.ts +18 -0
  5. package/assets/styles/_variables.scss +3 -0
  6. package/assets/styles/sof-styles.scss +6 -2
  7. package/esm2022/ag-grid-components/public-api.mjs +2 -1
  8. package/esm2022/ag-grid-components/src/ag-grid-components.module.mjs +9 -4
  9. package/esm2022/ag-grid-components/src/sof-table/sof-table.component.mjs +41 -33
  10. package/esm2022/ag-grid-components/src/table-cell/table-cell.component.mjs +23 -0
  11. package/esm2022/lib/base-components/sof-utility-button/sof-utility-button.component.mjs +4 -10
  12. package/esm2022/lib/core/components/app-template/app-template.component.mjs +1 -1
  13. package/esm2022/lib/core/models/base-config.mjs +1 -1
  14. package/esm2022/lib/core/models/nav-panel-config.mjs +2 -0
  15. package/esm2022/lib/navigation/components/{side-navigation → navigation}/navigation.component.mjs +1 -1
  16. package/esm2022/lib/navigation/components/sof-navigation-panel/models/nav-panel-nodes.mjs +2 -0
  17. package/esm2022/lib/navigation/components/sof-navigation-panel/models/nav-panel-settings.mjs +2 -0
  18. package/esm2022/lib/navigation/components/sof-navigation-panel/sof-nav-panel.component.mjs +136 -0
  19. package/esm2022/lib/navigation/navigation-api.mjs +5 -2
  20. package/esm2022/lib/navigation/navigation.module.mjs +2 -2
  21. package/fesm2022/softheon-armature-ag-grid-components.mjs +69 -37
  22. package/fesm2022/softheon-armature-ag-grid-components.mjs.map +1 -1
  23. package/fesm2022/softheon-armature.mjs +126 -12
  24. package/fesm2022/softheon-armature.mjs.map +1 -1
  25. package/lib/base-components/sof-utility-button/sof-utility-button.component.d.ts +2 -9
  26. package/lib/core/models/base-config.d.ts +5 -0
  27. package/lib/core/models/nav-panel-config.d.ts +17 -0
  28. package/lib/navigation/components/sof-navigation-panel/models/nav-panel-nodes.d.ts +99 -0
  29. package/lib/navigation/components/sof-navigation-panel/models/nav-panel-settings.d.ts +26 -0
  30. package/lib/navigation/components/sof-navigation-panel/sof-nav-panel.component.d.ts +82 -0
  31. package/lib/navigation/navigation-api.d.ts +4 -1
  32. package/lib/navigation/navigation.module.d.ts +1 -1
  33. package/package.json +1 -1
  34. package/ag-grid-components/package.json +0 -3
  35. /package/lib/navigation/components/{side-navigation → navigation}/navigation.component.d.ts +0 -0
@@ -553,4 +553,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
553
553
  }], setLanguage$: [{
554
554
  type: Output
555
555
  }] } });
556
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL25hdmlnYXRpb24vY29tcG9uZW50cy9zaWRlLW5hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL25hdmlnYXRpb24vY29tcG9uZW50cy9zaWRlLW5hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQW9DLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJMUssT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVXhDLDBGQUEwRjtBQUUxRjs7R0FFRztBQVNILE1BQU0sT0FBTywyQkFBMkI7SUFzQ3RDLGlDQUFpQztJQUNqQyxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQWdGRDs7Ozs7Ozs7T0FRRztJQUNILFlBQ1csaUJBQW9DLEVBQ3BDLEtBQW1CLEVBQ1gsTUFBYyxFQUN2QixhQUE0QixFQUNuQixvQkFBMEMsRUFD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QGFuZ3VsYXIvY2RrL2xheW91dCc7XHJcbmltcG9ydCB7IFNURVBQRVJfR0xPQkFMX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvblBhbmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0U2lkZW5hdiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xyXG5pbXBvcnQgeyBNYXRTdGVwcGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlcic7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJhc2VDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9iYXNlLWNvbmZpZyc7XHJcbmltcG9ydCB7IEF1dGhvcml6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9hdXRob3JpemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9iYW5uZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9iYXNlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVhZGVyTGFuZ3VhZ2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL2hlYWRlci9tb2RlbHMvaGVhZGVyLWxhbmd1YWdlLnNldHRpbmdzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblRoZW1lU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvbmF2LXRoZW1lLnNldHRpbmdzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MsIE5hdmlnYXRpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9uYXYuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBOYXZOb2RlLCBTdWJOYXZOb2RlcyB9IGZyb20gJy4uLy4uL21vZGVscy9uYXZpZ2F0aW9uJztcclxuXHJcbi8vIFRPRE86IHNlZSBob3cgdGhpcyBjYW4gZml0IHdpdGggdGhlIGBzb2YtcHJvZ3Jlc3MtYmFyYCBjb21wb25lbnQuIFBvc3NpYmx5IGNvbWJpbmUgdGhlbVxyXG5cclxuLyoqXHJcbiAqIFRoZSBOYXZpZ2F0aW9uIENvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzb2YtYXItbmF2aWdhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBTVEVQUEVSX0dMT0JBTF9PUFRJT05TLCB1c2VWYWx1ZTogeyBkaXNwbGF5RGVmYXVsdEluZGljYXRvclR5cGU6IGZhbHNlIH1cclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJtYXR1cmVOYXZpZ2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvKiogVGhlIHBhcmVudCBzdGVwcGVyICovXHJcbiAgQFZpZXdDaGlsZCgndmVydFN0ZXBwZXInKSBwdWJsaWMgc3RlcHBlcjogTWF0U3RlcHBlcjtcclxuXHJcbiAgLyoqIFRoZSBzaWRlIG1vYmlsZSBuYXYgKi9cclxuICBAVmlld0NoaWxkKCdzbmF2JykgcHVibGljIHNpZGVuYXY6IE1hdFNpZGVuYXY7XHJcblxyXG4gIC8qKiBUaGUgbW9iaWxlIGV4cGFuc2lvbiBwYW5lbCBmb3IgcHJvZ3Jlc3MgbWVudSAqL1xyXG4gIEBWaWV3Q2hpbGQoJ3BhbmVsJykgcHVibGljIGV4cGFuc2lvblBhbmVsOiBNYXRFeHBhbnNpb25QYW5lbDtcclxuXHJcbiAgLyoqIFRoZSBjaGlsZCBzdGVwcGVycyAqL1xyXG4gIEBWaWV3Q2hpbGRyZW4oJ3ZlcnRTdGVwcGVySW5uZXInKSBwdWJsaWMgaW5uZXJTdGVwcGVyczogUXVlcnlMaXN0PE1hdFN0ZXBwZXI+O1xyXG5cclxuICAvKiogQ29tcG9uZW50IElucHV0IC0gdGhlIG5hdmlnYXRpb24gZGF0YSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBuYXZpZ2F0aW9uRGF0YTogTmF2Tm9kZVtdO1xyXG5cclxuICAvKiogQ29tcG9uZW50IElucHV0IC0gdGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc2V0dGluZ3M6IE5hdmlnYXRpb25TZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogQ29tcG9uZW50IElucHV0IC0gdGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYWR2YW5jZWRTZXR0aW5nczogTmF2aWdhdGlvbkFkdmFuY2VkU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIENvbXBvbmVudCBJbnB1dCAtIHRoZSBuYXZpZ2F0aW9uIHNldHRpbmdzICovXHJcbiAgQElucHV0KCkgcHVibGljIHRoZW1lU2V0dGluZ3M6IE5hdmlnYXRpb25UaGVtZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBDb21wb25lbnQgSW5wdXQgLSB0aGUgbmF2aWdhdGlvbiBsYW5ndWFnZSBzZXR0aW5ncyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYW5ndWFnZVNldHRpbmdzOiBIZWFkZXJMYW5ndWFnZVNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBDdXJyZW50IGxhbmd1YWdlICoqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50TGFuZzogc3RyaW5nO1xyXG5cclxuICAvKiogbG9nT3V0IHRleHQgKiovXHJcbiAgQElucHV0KCkgcHVibGljIGxvZ091dFRleHQ6IHN0cmluZztcclxuXHJcbiAgLyoqIFNldHMgbGFuZ3VhZ2UgKiovXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBzZXRMYW5ndWFnZSQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8qKiBnZXRzIHRoZSBub24gdXNlZCBsYW5ndWFnZSAqL1xyXG4gIHB1YmxpYyBnZXQgb3RoZXJMYW5nVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VTZXR0aW5ncz8ubGFuZ3VhZ2VzPy5maW5kKHggPT4geCAhPT0gdGhpcy5jdXJyZW50TGFuZyk7XHJcbiAgfVxyXG5cclxuICAvKiogV2hldGhlciBzaWRlIG5hdiBpcyBvcGVuIG9yIG5vdCAqL1xyXG4gIHB1YmxpYyBpc05hdk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIE1vYmlsZSBTdWJOYXYgLSB3aGV0aGVyIG9yIG5vdCB0aGUgbW9iaWxlIFN1Yk5hdiBpcyBvcGVuICovXHJcbiAgcHVibGljIGlzTW9iaWxlU3ViTmF2T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogTW9iaWxlIFN1Yk5hdiAtdGhlIGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBtb2JpbGUgU3ViTmF2ICovXHJcbiAgcHVibGljIGN1cnJlbnRNb2JpbGVOYXY6IE5hdk5vZGU7XHJcblxyXG4gIC8qKiBTZXR0aW5ncyAtIHRoZSBtYWluIG1lbnUgdGV4dCB0aGF0IGFwcGVhcnMgaW4gdGhlIG1vYmlsZSBTdWJOYXYgKi9cclxuICBwdWJsaWMgbWFpbk1lbnVUZXh0OiBzdHJpbmc7XHJcblxyXG4gIC8qKiB0aGUgbW9iaWxlIHF1ZXJ5ICovXHJcbiAgcHVibGljIG1vYmlsZVF1ZXJ5OiBNZWRpYVF1ZXJ5TGlzdDtcclxuXHJcbiAgLyoqIFRoZSBzZWxlY3RlZCBwYXJlbnQgaW5kZXggKi9cclxuICBwdWJsaWMgc2VsZWN0ZWRQYXJlbnRJbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqIFRoZSBzZWxlY3RlZCBjaGlsZCBpbmRleCAqL1xyXG4gIHB1YmxpYyBzZWxlY3RlZENoaWxkSW5kZXhlczogeyBba2V5OiBudW1iZXJdOiBudW1iZXIgfSA9IHt9O1xyXG5cclxuICAvKiogVGhlIG5hdmlnYXRpb24gcHJvZ3Jlc3MgY291bnQgKi9cclxuICBwdWJsaWMgbmF2UHJvZ3Jlc3NDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqIFRoZSBjdXJyZW50IGFjdGl2ZSBwYXJlbnQgbm9kZSAqL1xyXG4gIHB1YmxpYyBhY3RpdmVQYXJlbnROb2RlOiBOYXZOb2RlO1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgYWN0aXZlIHN1YiBub2RlICovXHJcbiAgcHVibGljIGFjdGl2ZVN1Yk5vZGU6IFN1Yk5hdk5vZGVzO1xyXG5cclxuICAvKiogVHJ1ZSBpZiB0aGUgZXhwYW5zaW9uIHBhbmVsIGlzIG9wZW4gKi9cclxuICBwdWJsaWMgcGFuZWxPcGVuU3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFRoZSBmb290ZXIgbmF2aWdhdGlvbiBkYXRhICovXHJcbiAgcHVibGljIGZvb3Rlck5hdmlnYXRpb25EYXRhOiBOYXZOb2RlW11cclxuXHJcbiAgLyoqIHVzZXIgbmFtZSAqKi9cclxuICBwdWJsaWMgdXNlck5hbWU6IHN0cmluZztcclxuXHJcbiAgLyoqIFRoZSBjb25maWcgb2JzZXJ2YWJsZSAqL1xyXG4gIHB1YmxpYyBjb25maWckOiBPYnNlcnZhYmxlPEJhc2VDb25maWc+O1xyXG5cclxuICAvKiogVGhlIHBhcmVudCBub2RlIGluZGV4IHRvIGJlIHNldCB3aGVuIG5hdiBpcyB0b2dnbGVkIHRvIHByb2dyZXNzIG1lbnUgc3R5bGUgKi9cclxuICBwdWJsaWMgdG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleDogbnVtYmVyO1xyXG5cclxuICAvKiogVGhlIGNoaWxkIG5vZGUgaW5kZXggdG8gYmUgc2V0IHdoZW4gbmF2IGlzIHRvZ2dsZWQgdG8gcHJvZ3Jlc3MgbWVudSBzdHlsZSAqL1xyXG4gIHB1YmxpYyB0b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXg6IG51bWJlcjtcclxuXHJcbiAgLyoqIHRoZSBtb2JpbGUgcXVlcnkgbGlzdGVuZXIyICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9iaWxlUXVlcnlMaXN0ZW5lcjogKCkgPT4gdm9pZDtcclxuXHJcbiAgLyoqIFRoZSBuYXYgYmluZCBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIG5hdkJpbmRTdWI6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgLyoqIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXkgKi9cclxuICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAvKiogV2hldGhlciB3ZSBzaG91bGQgdGhlIG1lc3NhZ2UgKi9cclxuICBwdWJsaWMgc2hvd01lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFdoZXRoZXIgc2hvdWxkIHNob3cgY2hlY2sgbWFyayBvciBub3QgKi9cclxuICBwdWJsaWMgc2hvd0NoZWNrTWFyazogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKiBUaGUgbmF2IGJpbmQgc3Vic2NyaXB0aW9uICovXHJcbiAgcHJpdmF0ZSBsb2dJblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAvKiogVGhlIGNvdW50IG9mIGZvb3RlciBpdGVtcyovXHJcbiAgcHVibGljIGZvb3Rlckl0ZW1Db3VudDogbnVtYmVyO1xyXG5cclxuICAvKiogVGhlIGJhbm5lciBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIGJhbm5lclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAvKiogVGhlIGNvbmZpZyBzdWJzY3JpcHRpb24gKi9cclxuICBwdWJsaWMgY29uZmlnU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIC8qKiBUaGUgc2lkZW5hdiBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIHNpZGVOYXZTdWI6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogdGhlIGNvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgcmVmZXJlbmNlXHJcbiAgICogQHBhcmFtIG1lZGlhIHRoZSBtZWRpYSBtYXRjaGVyXHJcbiAgICogQHBhcmFtIHJvdXRlciBUaGUgcm91dGVyXHJcbiAgICogQHBhcmFtIGJhbm5lclNlcnZpY2UgVGhlIEJhbm5lciBTZXJ2aWNlXHJcbiAgICogQHBhcmFtIGFjdGl2YXRlZFJvdXRlIFRoZSBhY3RpdmF0ZWQgcm91dGVcclxuICAgKiBAcGFyYW0gY29uZmlnU2VydmljZSBUaGUgY29uZmlnIHNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHJlYWRvbmx5IG1lZGlhOiBNZWRpYU1hdGNoZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBiYW5uZXJTZXJ2aWNlOiBCYW5uZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRob3JpemF0aW9uU2VydmljZTogQXV0aG9yaXphdGlvblNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IEJhc2VDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1vYmlsZVF1ZXJ5ID0gbWVkaWEubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogOTU5cHgpJyk7XHJcbiAgICB0aGlzLl9tb2JpbGVRdWVyeUxpc3RlbmVyID0gKCkgPT4ge1xyXG4gICAgICBjaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIC8vIGNsb3NlIHRoZSBzaWRlbmF2IHdoZW4gc2NyZWVuIHNpemUgaXMgY2hhbmdlZFxyXG4gICAgICBpZiAoIXRoaXMubW9iaWxlUXVlcnkubWF0Y2hlcyAmJiB0aGlzLnNldHRpbmdzLm1lbnVTdHlsZSA9PT0gJ3Byb2dyZXNzJykge1xyXG4gICAgICAgIHRoaXMuc2lkZW5hdi5jbG9zZSgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy8gYmVsb3cgaWYgc3RhdGVtZW50IGlzIGZvciBlZGdlIHN1cHBvcnQgc2luY2UgYWRkRXZlbnRMaXN0ZW5lciBkb2Vzbid0IGV4aXN0IGZvciBNZWRpYVF1ZXJ5TGlzdHNcclxuICAgIGlmICh0aGlzLm1vYmlsZVF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5tb2JpbGVRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLl9tb2JpbGVRdWVyeUxpc3RlbmVyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm1vYmlsZVF1ZXJ5LmFkZExpc3RlbmVyKHRoaXMuX21vYmlsZVF1ZXJ5TGlzdGVuZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIE9uIEluaXQgLSBjb25maWd1cmUgdGhlIHNldHRpbmdzICovXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuYmFubmVyU3Vic2NyaXB0aW9uLmFkZCh0aGlzLmJhbm5lclNlcnZpY2Uuc2hvd0Jhbm5lciQuc3Vic2NyaWJlKHZhbCA9PiB0aGlzLnNob3dNZXNzYWdlID0gdmFsKSk7XHJcbiAgICB0aGlzLmJhbm5lclN1YnNjcmlwdGlvbi5hZGQodGhpcy5iYW5uZXJTZXJ2aWNlLm1lc3NhZ2UkLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5tZXNzYWdlID0gdmFsKSk7XHJcbiAgICB0aGlzLmJhbm5lclN1YnNjcmlwdGlvbi5hZGQodGhpcy5iYW5uZXJTZXJ2aWNlLnNob3dDaGVja01hcmskLnN1YnNjcmliZSh2YWwgPT4gdGhpcy5zaG93Q2hlY2tNYXJrID0gdmFsKSk7XHJcblxyXG4gICAgdGhpcy5mb290ZXJOYXZpZ2F0aW9uRGF0YSA9IHRoaXMubmF2aWdhdGlvbkRhdGE/LmZpbHRlcihub2RlID0+IG5vZGU/LmFsdExvY2F0aW9uID09IHRydWUpO1xyXG4gICAgdGhpcy5mb290ZXJJdGVtQ291bnQgPSB0aGlzLmZvb3Rlck5hdmlnYXRpb25EYXRhID8gdGhpcy5mb290ZXJOYXZpZ2F0aW9uRGF0YS5sZW5ndGggOiAwO1xyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRGF0YSA9IHRoaXMubmF2aWdhdGlvbkRhdGE/LmZpbHRlcihub2RlID0+IG5vZGU/LmFsdExvY2F0aW9uICE9IHRydWUpO1xyXG5cclxuICAgIC8vIGlmIHBhcmVudHMgaGF2ZSBubyByb3V0ZSwgZ3JhYiBmaXJzdCByb3V0ZSBvZiBjaGlsZFxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRGF0YT8uZm9yRWFjaChuID0+IHtcclxuICAgICAgaWYgKCFuLnJvdXRlKSB7XHJcbiAgICAgICAgbi5yb3V0ZSA9IG4uc3ViTm9kZXMgJiYgbi5zdWJOb2Rlcy5sZW5ndGggPiAwID8gbi5zdWJOb2Rlc1swXS5yb3V0ZSA6IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgICAvLyBlbmFibGUgYWxsIHBhZ2VzIGJ5IGRlZmF1bHRcclxuICAgICAgaWYgKG4uaXNEaXNhYmxlZCA9PSBudWxsKSB7XHJcbiAgICAgICAgbi5pc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaW5pdEJhc2ljU2V0dGluZ3MoKTtcclxuICAgIHRoaXMuaW5pdEFkdmFuY2VkU2V0dGluZ3MoKTtcclxuICAgIHRoaXMuaW5pdFRoZW1lU2V0dGluZ3MoKTtcclxuXHJcbiAgICAvLyBpbml0IGJpbmRpbmcgZm9yIHByb2dyZXNzIG5hdlxyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MubWVudVN0eWxlID09PSAncHJvZ3Jlc3MnKSB7XHJcbiAgICAgIC8vIHNldCB0aGUgZmlyc3Qgbm9kZSBhbmQgY2hpbGQgbm9kZSBhcyB2aXNpdGVkXHJcbiAgICAgIGlmICh0aGlzLm5hdmlnYXRpb25EYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5uYXZpZ2F0aW9uRGF0YVswXS5yb3V0ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvbkRhdGFbMF0uc3ViTm9kZXMgJiYgdGhpcy5uYXZpZ2F0aW9uRGF0YVswXS5zdWJOb2Rlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnN1Yk5vZGVzWzBdLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnN1Yk5vZGVzWzBdLnJvdXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHNldCBpbml0aWFsIHByb2dyZXNzIGJhclxyXG4gICAgICB0aGlzLm5hdlByb2dyZXNzQ291bnQgPSAodGhpcy5zZWxlY3RlZFBhcmVudEluZGV4ICsgMSkgLyB0aGlzLm5hdmlnYXRpb25EYXRhLmxlbmd0aCAqIDEwMDtcclxuXHJcblxyXG4gICAgICB0aGlzLm5hdkJpbmRTdWIuYWRkKFxyXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgICAgICAgICAgLy8gZmluZCBwYXJlbnQgaW5kZXggd2l0aCBhY3RpdmUgY2hpbGRcclxuICAgICAgICAgICAgdGhpcy5nZXRBY3RpdmVQYXJlbnRBbmRDaGlsZChldmVudC51cmwpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuc2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMubG9nSW5TdWJzY3JpcHRpb24gPSB0aGlzLmF1dGhvcml6YXRpb25TZXJ2aWNlLmlzTG9nZ2VkSW4kLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMudXNlck5hbWUgPSB0aGlzLmF1dGhvcml6YXRpb25TZXJ2aWNlLnVzZXJOYW1lKClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZSkge1xyXG4gICAgICB0aGlzLmNvbmZpZ1N1YnNjcmlwdGlvbiA9IHRoaXMuY29uZmlnU2VydmljZS5jb25maWckLnN1YnNjcmliZShjb25maWcgPT4ge1xyXG4gICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnPy5uYXZpZ2F0aW9uPy5ub2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YSA9IGNvbmZpZz8ubmF2aWdhdGlvbj8ubm9kZXM7XHJcbiAgICAgICAgICBpZiAoY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8ucmVzZXROYXYpIHtcclxuICAgICAgICAgICAgdGhpcy5uYXZQcm9ncmVzc0NvdW50ID0gMDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudEluZGV4ID0gMDtcclxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnJvdXRlKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHBlcikge1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4ID0gMDtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHBlci5yZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbm5lclN0ZXBwZXJzPy5mb3JFYWNoKHN0ZXBwZXIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBzdGVwcGVyLnNlbGVjdGVkSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICBzdGVwcGVyLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgbi52aXNpdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgbi5jb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIG4uc3ViTm9kZXM/LmZvckVhY2gocyA9PiB7XHJcbiAgICAgICAgICAgICAgICBzLnZpc2l0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHMuY29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gcmVzZXQgYmFjayB0byBmYWxzZSB0byBhdm9pZCBtdWx0aXBsZSB0cmlnZ2VycyBvbiBmdXR1cmUgY2FsbHNcclxuICAgICAgICAgICAgY29uZmlnLm5hdmlnYXRpb24uc2V0dGluZ3MucmVzZXROYXYgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGNvbmZpZztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBpZiB0aGUgdmFsdWVzIHdlcmUgY2hhbmdlZCBhbmQgbm90IG51bGwsIGl0IG1lYW5zIHRoYXQgdGhlIG5hdiB3YXMgdG9nZ2xlZCB0byBwcm9ncmVzc1xyXG4gICAgICAgICAgaWYgKGNvbmZpZz8ubmF2aWdhdGlvbj8uc2V0dGluZ3M/LnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXggIT0gbnVsbFxyXG4gICAgICAgICAgICAmJiB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXggIT0gY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleFxyXG4gICAgICAgICAgICAmJiB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleCAhPSBjb25maWc/Lm5hdmlnYXRpb24/LnNldHRpbmdzPy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXhcclxuICAgICAgICAgICAgJiYgY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4ICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleCA9IGNvbmZpZy5uYXZpZ2F0aW9uLnNldHRpbmdzLnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXg7XHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4ID0gY29uZmlnLm5hdmlnYXRpb24uc2V0dGluZ3MudG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4O1xyXG5cclxuICAgICAgICAgICAgLy8gYWRkIHRoZSByb3V0ZXIgc3ViXHJcbiAgICAgICAgICAgIHRoaXMubmF2QmluZFN1Yi5hZGQoXHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAvLyBmaW5kIHBhcmVudCBpbmRleCB3aXRoIGFjdGl2ZSBjaGlsZFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldEFjdGl2ZVBhcmVudEFuZENoaWxkKGV2ZW50LnVybCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBpZiB0aGUgY2hpbGQgbm9kZSBpbmRleCBpcyB2YWxpZFxyXG4gICAgICAgICAgICBpZiAoY29uZmlnLm5hdmlnYXRpb24ubm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XS5zdWJOb2Rlcz8ubGVuZ3RoID4gdGhpcy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldE5vZGVTdGF0ZXMoY29uZmlnLm5hdmlnYXRpb24ubm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XSxcclxuICAgICAgICAgICAgICAgIGNvbmZpZy5uYXZpZ2F0aW9uLm5vZGVzW3RoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleF0uc3ViTm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXhdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldE5vZGVTdGF0ZXMoY29uZmlnLm5hdmlnYXRpb24ubm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XSwgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGluZGV4ZXNcclxuICAgICAgICAgICAgdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4ID0gY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleFxyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleCA9IGNvbmZpZz8ubmF2aWdhdGlvbj8uc2V0dGluZ3M/LnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIExpZmUgY3ljbGUgaG9vayBmb3IgYWZ0ZXIgY29tcG9uZW50IHZpZXcgaW5pdGlhbGl6YXRpb24gKi9cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MubWVudVN0eWxlID09PSAnc3RlcHBlcicpIHtcclxuICAgICAgdGhpcy5iaW5kU3RlcHBlclRvUm91dGVzKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RlcHBlci5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgc3RlcC5zZWxlY3QgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRJbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlKHRoaXMubmF2aWdhdGlvbkRhdGFbaW5kZXhdLnJvdXRlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmlubmVyU3RlcHBlcnMuZm9yRWFjaCgoc3RlcHBlciwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHN0ZXBwZXIuc3RlcHMuZm9yRWFjaCgoc3RlcCwgamluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHN0ZXAuc2VsZWN0ID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGlsZEluZGV4ZXNbaW5kZXhdID0gamluZGV4O1xyXG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5uYXZpZ2F0aW9uRGF0YVtpbmRleF0uc3ViTm9kZXNbamluZGV4XS5yb3V0ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuc2lkZU5hdlN1YiA9IHRoaXMuc2lkZW5hdi5vcGVuZWRDaGFuZ2Uuc3Vic2NyaWJlKGRyYXdlclN0YXRlID0+IHtcclxuICAgICAgdGhpcy5pc05hdk9wZW4gPSBkcmF3ZXJTdGF0ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIE9uIERlc3Ryb3kgKi9cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLm1vYmlsZVF1ZXJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX21vYmlsZVF1ZXJ5TGlzdGVuZXIpO1xyXG4gICAgdGhpcy5uYXZCaW5kU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmxvZ0luU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmJhbm5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5jb25maWdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuc2lkZU5hdlN1Yi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW9iaWxlIFN1Yk5hdiAtIG9wZW4gdGhlIFN1Yk5hdlxyXG4gICAqIEBwYXJhbSBuYXYgdGhlIG5hdiBkYXRhIHRvIGJlIHBhc3NlZCB0byB0aGUgU3ViTmF2XHJcbiAgICovXHJcbiAgcHVibGljIG9wZW5Nb2JpbGVTdWJOYXYobmF2OiBOYXZOb2RlKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTW9iaWxlU3ViTmF2T3BlbiA9IHRydWU7XHJcbiAgICB0aGlzLmN1cnJlbnRNb2JpbGVOYXYgPSBuYXY7XHJcbiAgICB0aGlzLnNpZGVuYXYub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW9iaWxlIFN1Yk5hdiAtIGNsb3NlcyB0aGUgU3ViTmF2XHJcbiAgICovXHJcbiAgcHVibGljIGNsb3NlTW9iaWxlU3ViTmF2KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc01vYmlsZVN1Yk5hdk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuc2lkZW5hdi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGhlbWUgY29sb3JcclxuICAgKiBAcGFyYW0gdmFyaWFibGUgdGhlIGNzcyB2YXJpYWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIGNvbG9yIHRoZSBjb2xvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRUaGVtZUNvbG9yKHZhcmlhYmxlOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShgLS1zb2YtbmF2LSR7dmFyaWFibGV9YCwgY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyB0aGUgc3RlcCBzdGF0ZVxyXG4gICAqIEBwYXJhbSBwYXJlbnRJbmRleCBUaGUgcGFyZW50IGluZGV4XHJcbiAgICogQHBhcmFtIGNoaWxkSW5kZXggVGhlIGNoaWxkIGluZGV4XHJcbiAgICogQHJldHVybnMgVGhlIHN0ZXAgc3RhdGVcclxuICAgKi9cclxuICBwdWJsaWMgZGV0ZXJtaW5lU3RlcFN0YXRlKHBhcmVudEluZGV4OiBudW1iZXIsIGNoaWxkSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAvLyBub3QgcGFzc2VkICYmIG5vdCBhY3RpdmVcclxuICAgIGlmIChjaGlsZEluZGV4ID09PSAtMSkge1xyXG4gICAgICBpZiAoIXRoaXMuc3RlcHBlcikge1xyXG4gICAgICAgIHJldHVybiAnbnVtYmVyJztcclxuICAgICAgfVxyXG4gICAgICAvLyBub3QgcGFzc2VkICYmIGFjdGl2ZVxyXG4gICAgICBpZiAocGFyZW50SW5kZXggPT09IHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0udmlzaXRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiAnYWN0aXZlJztcclxuICAgICAgfVxyXG4gICAgICAvLyBwYXNzZWQgYnV0IG5hdiBiYWNrXHJcbiAgICAgIGVsc2UgaWYgKHBhcmVudEluZGV4ID4gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggJiYgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0udmlzaXRlZCkge1xyXG4gICAgICAgIHRoaXMuc3RlcHBlci5zdGVwcy5maW5kKChzLCBpbmRleCkgPT4gaW5kZXggPT09IHBhcmVudEluZGV4KVxyXG4gICAgICAgICAgLnJlc2V0KCk7XHJcblxyXG4gICAgICAgIHJldHVybiAnYWN0aXZlJztcclxuICAgICAgfVxyXG4gICAgICAvLyBwYXNzZWQgJiYgbm90IGFjdGl2ZVxyXG4gICAgICBlbHNlIGlmIChwYXJlbnRJbmRleCA8IHRoaXMuc3RlcHBlci5zZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0udmlzaXRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiAnZG9uZSc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICdudW1iZXInO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmlubmVyU3RlcHBlcnMpIHtcclxuICAgICAgICByZXR1cm4gJ25vbmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGlubmVyU3RlcHBlciA9IHRoaXMuaW5uZXJTdGVwcGVycy5maW5kKChzLCBpbmRleCkgPT4gaW5kZXggPT09IHBhcmVudEluZGV4KTtcclxuICAgICAgaWYgKGNoaWxkSW5kZXggPT09IGlubmVyU3RlcHBlci5zZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0uc3ViTm9kZXNbY2hpbGRJbmRleF0udmlzaXRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiAnYWN0aXZlJztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChjaGlsZEluZGV4ID4gaW5uZXJTdGVwcGVyLnNlbGVjdGVkSW5kZXggJiYgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0uc3ViTm9kZXNbY2hpbGRJbmRleF0udmlzaXRlZCkge1xyXG4gICAgICAgIGlubmVyU3RlcHBlci5zdGVwcy5maW5kKChzLCBpbmRleCkgPT4gaW5kZXggPT09IGNoaWxkSW5kZXgpXHJcbiAgICAgICAgICAucmVzZXQoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGNoaWxkSW5kZXggPCBpbm5lclN0ZXBwZXIuc2VsZWN0ZWRJbmRleCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkRhdGFbcGFyZW50SW5kZXhdLnN1Yk5vZGVzW2NoaWxkSW5kZXhdLnZpc2l0ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICByZXR1cm4gJ2RvbmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnbm9uZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJvdmlkZWQgcm91dGVcclxuICAgKiBAcGFyYW0gcm91dGUgVGhlIHJvdXRlXHJcbiAgICovXHJcbiAgcHVibGljIG5hdmlnYXRlKHJvdXRlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tZmxvYXRpbmctcHJvbWlzZXNcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVzIHRvIGdpdmVuIHN0ZXBcclxuICAgKiBAcGFyYW0gc3RlcE51bWJlciBUaGUgc3RlcCBudW1iZXIgdG8gbmF2aWdhdGUgdG9cclxuICAgKi9cclxuICBwdWJsaWMgbmF2aWdhdGVUb1N0ZXAoc3RlcE51bWJlcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoc3RlcE51bWJlciA8IHRoaXMuc2VsZWN0ZWRQYXJlbnRJbmRleCkge1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWZsb2F0aW5nLXByb21pc2VzXHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5uYXZpZ2F0aW9uRGF0YVtzdGVwTnVtYmVyXS5yb3V0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBhY3RpdmUgcGFyZW50IGFuZCBjaGlsZCBub2RlcyBcclxuICAgKiBAcGFyYW0gdXJsIFRoZSByb3V0ZXIgdXJsXHJcbiAgICovXHJcbiAgcHVibGljIGdldEFjdGl2ZVBhcmVudEFuZENoaWxkKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgY2hpbGRJbmRleDtcclxuICAgIGxldCBwYXJlbnRJbmRleCA9IHRoaXMubmF2aWdhdGlvbkRhdGEuZmluZEluZGV4KG4gPT4ge1xyXG4gICAgICBjaGlsZEluZGV4ID0gbi5zdWJOb2Rlcz8uZmluZEluZGV4KHMgPT4gdXJsLmluY2x1ZGVzKHMucm91dGUucmVwbGFjZSgnLicsICcnKSkpO1xyXG4gICAgICByZXR1cm4gY2hpbGRJbmRleCA+IC0xIHx8IHRoaXMucm91dGVyLnVybC5pbmNsdWRlcyhuLnJvdXRlLnJlcGxhY2UoJy4nLCAnJykpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHBhcmVudEluZGV4ID09IC0xKSB7XHJcbiAgICAgIHBhcmVudEluZGV4ID0gMFxyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldCB0aGUgYWN0aXZlIHBhcmVudCBub2RlIGFuZCBzdWIgbm9kZVxyXG4gICAgdGhpcy5hY3RpdmVQYXJlbnROb2RlID0gdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF07XHJcbiAgICB0aGlzLmFjdGl2ZVN1Yk5vZGUgPSBjaGlsZEluZGV4ID4gLTEgJiYgdGhpcy5hY3RpdmVQYXJlbnROb2RlLnN1Yk5vZGVzLmxlbmd0aCA+IDAgPyB0aGlzLmFjdGl2ZVBhcmVudE5vZGUuc3ViTm9kZXNbY2hpbGRJbmRleF0gOiBudWxsO1xyXG5cclxuICAgIC8vIGNvbXB1dGUgdGhlIHByb2dyZXNzIGJhclxyXG4gICAgdGhpcy5uYXZQcm9ncmVzc0NvdW50ID0gKHBhcmVudEluZGV4ICsgMSkgLyB0aGlzLm5hdmlnYXRpb25EYXRhLmxlbmd0aCAqIDEwMDtcclxuXHJcbiAgICAvLyBzZXQgdGhlIG5vZGUgc3RhdGVzXHJcbiAgICB0aGlzLnNldE5vZGVTdGF0ZXModGhpcy5hY3RpdmVQYXJlbnROb2RlLCB0aGlzLmFjdGl2ZVN1Yk5vZGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgY29tcGxldGUgYW5kIHZpc2l0ZWQgc3RhdGVzIGZvciBhbGwgTmF2Tm9kZXMgXHJcbiAgICogQHBhcmFtIHBhcmVudE5vZGUgVGhlIHBhcmVudCBub2RlXHJcbiAgICogQHBhcmFtIGNoaWxkTm9kZSBUaGUgY2hpbGQgbm9kZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXROb2RlU3RhdGVzKHBhcmVudE5vZGU6IE5hdk5vZGUsIGNoaWxkTm9kZTogU3ViTmF2Tm9kZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGlsZE5vZGUpIHtcclxuICAgICAgdGhpcy5hY3RpdmVTdWJOb2RlID0gY2hpbGROb2RlO1xyXG4gICAgICBsZXQgY2hpbGRJbmRleCA9IHBhcmVudE5vZGUuc3ViTm9kZXMuaW5kZXhPZihjaGlsZE5vZGUpID4gLTEgPyBwYXJlbnROb2RlLnN1Yk5vZGVzLmluZGV4T2YoY2hpbGROb2RlKSA6IDA7XHJcbiAgICAgIC8vIGFsbCBzdWJub2RlcyBiZWZvcmUgdGhpcyB3ZXJlIGNvbXBsZXRlZCBhbmQgdmlzaXRlZFxyXG4gICAgICBwYXJlbnROb2RlLnN1Yk5vZGVzLnNsaWNlKDAsIGNoaWxkSW5kZXgpLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgZWxlbWVudC5jb21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgZWxlbWVudC52aXNpdGVkID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xyXG4gICAgLy8gc2V0IGFsbCBwcmV2aW91cyBub2RlcyB0byBjb21wbGV0ZVxyXG4gICAgbGV0IHBhcmVudEluZGV4ID0gdGhpcy5uYXZpZ2F0aW9uRGF0YS5pbmRleE9mKHBhcmVudE5vZGUpID4gLTEgPyB0aGlzLm5hdmlnYXRpb25EYXRhLmluZGV4T2YocGFyZW50Tm9kZSkgOiAwO1xyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRGF0YS5zbGljZSgwLCBwYXJlbnRJbmRleCkuZm9yRWFjaChkID0+IHtcclxuICAgICAgZC5jb21wbGV0ZSA9IHRydWU7XHJcblxyXG4gICAgICAvLyBzZXQgYWxsIHN1Ym5vZGVzIG9mIHByZXZpb3VzIG5vZGVzIHRvIGNvbXBsZXRlIG9ubHkgaWYgdGhlIG5vZGUgd2FzIG5vdCBkaXNhYmxlZFxyXG4gICAgICBpZiAoIWQuaXNEaXNhYmxlZCkge1xyXG4gICAgICAgIGQuc3ViTm9kZXMuZm9yRWFjaChzID0+IHtcclxuICAgICAgICAgIHMuY29tcGxldGUgPSB0cnVlO1xyXG4gICAgICAgICAgcy52aXNpdGVkID0gdHJ1ZTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgLy8gc2V0IHRoZSBjdXJyZW50IG5vZGVzIGFzIHZpc2l0ZWRcclxuICAgIHBhcmVudE5vZGUudmlzaXRlZCA9IHRydWU7XHJcbiAgICBpZiAoY2hpbGROb2RlKSB7XHJcbiAgICAgIGNoaWxkTm9kZS52aXNpdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlcyB0aGUgZXhwYW5zaW9uIHBhbmVsIGFuZCBuYXZpZ2F0ZXMgdG8gdGhlIGdpdmVuIG5vZGVcclxuICAgKiBAcGFyYW0gZWwgVGhlIG1hdCBleHBhbnNpb24gcGFuZWwgXHJcbiAgICogQHBhcmFtIGluZGV4IFRoZSBwYXJlbnQgbm9kZSBpbmRleCBcclxuICAgKi9cclxuICBwdWJsaWMgZGlzYWJsZVBhbmVsKGVsLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBlbC5jbG9zZSgpO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLm5hdmlnYXRpb25EYXRhW2luZGV4XS5yb3V0ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEhpZGVzIHRoZSBtZXNzYWdlXHJcbiAgKi9cclxuICBwdWJsaWMgaGlkZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd01lc3NhZ2UgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZ3Mgb3V0IG9uY2UgdXNlciBpcyBhdXRob3JpemVkXHJcbiAgICogKi9cclxuICBwdWJsaWMgbG9nT3V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdXRob3JpemF0aW9uU2VydmljZS5hdXRob3JpemVVc2VyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZXMgbW9iaWxlIG5hdmlnYXRpb24gYWZ0ZXIgc2VsZWN0aW9uLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbG9zZU5hdmlnYXRpb25Gb3JNb2JpbGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5tb2JpbGVRdWVyeS5tYXRjaGVzKSB7XHJcbiAgICAgIHRoaXMuc2lkZW5hdi5jbG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXMgdGhlIG5hdmlnYXRpb24gc2VsZWN0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgaXNOYXZTZWxlY3RlZChub2RlOiBOYXZOb2RlIHwgU3ViTmF2Tm9kZXMpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJvdXRlci5pc0FjdGl2ZShub2RlLnJvdXRlLCB7cGF0aHM6ICdleGFjdCcsIHF1ZXJ5UGFyYW1zOiAnZXhhY3QnLCBmcmFnbWVudDogJ2lnbm9yZWQnLCBtYXRyaXhQYXJhbXM6ICdpZ25vcmVkJ30pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFNldHMgdGhlIHdpZHRoIGZvciB0aGUgc2lkZSBuYXYgKi9cclxuICBwdWJsaWMgc2V0TmF2V2lkdGgod2lkdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gd2lkdGguaW5jbHVkZXMoJyUnKSB8fCB3aWR0aC5pbmNsdWRlcygncHgnKSA/IHdpZHRoIDogd2lkdGggKyAncHgnO1xyXG4gIH1cclxuXHJcbiAgLyoqIEJpbmRzIHRoZSBzdGVwcGVyIHRvIHRoZSByb3V0ZXIgKi9cclxuICBwcml2YXRlIGJpbmRTdGVwcGVyVG9Sb3V0ZXMoKTogdm9pZCB7XHJcbiAgICAvLyBmaW5kIHBhcmVudHNcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyBmaW5kIHBhcmVudCBpbmRleCB3aXRoIGFjdGl2ZSBjaGlsZFxyXG4gICAgICBsZXQgY2hpbGRJbmRleDtcclxuICAgICAgbGV0IHBhcmVudEluZGV4ID0gdGhpcy5uYXZpZ2F0aW9uRGF0YS5maW5kSW5kZXgobiA9PiB7XHJcbiAgICAgICAgY2hpbGRJbmRleCA9IG4uc3ViTm9kZXM/LmZpbmRJbmRleChzID0+IHRoaXMucm91dGVyLnVybC5pbmNsdWRlcyhzLnJvdXRlLnJlcGxhY2UoJy4nLCAnJykpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNoaWxkSW5kZXggPiAtMSB8fCB0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMobi5yb3V0ZS5yZXBsYWNlKCcuJywgJycpKTtcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIGlmIG5vIGNoaWxkcmVuIG9yIG5vIGluZGV4ZXMgYWN0aXZhdGUgZmlyc3QgcGFyZW50XHJcbiAgICAgIGlmIChwYXJlbnRJbmRleCA9PT0gLTEpIHtcclxuICAgICAgICBwYXJlbnRJbmRleCA9IDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRJbmRleCA9IHBhcmVudEluZGV4O1xyXG4gICAgICBpZiAoY2hpbGRJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5pbm5lclN0ZXBwZXJzLmZpbmQoKGlzLCBpbmRleCkgPT4gaW5kZXggPT09IHBhcmVudEluZGV4KS5zZWxlY3RlZEluZGV4ID0gY2hpbGRJbmRleDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gZmluZCBwYXJlbnRzXHJcbiAgICB0aGlzLm5hdkJpbmRTdWIuYWRkKFxyXG4gICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xyXG4gICAgICAgICAgLy8gZmluZCBwYXJlbnQgaW5kZXggd2l0aCBhY3RpdmUgY2hpbGRcclxuICAgICAgICAgIGxldCBjaGlsZEluZGV4O1xyXG4gICAgICAgICAgbGV0IHBhcmVudEluZGV4ID0gdGhpcy5uYXZpZ2F0aW9uRGF0YS5maW5kSW5kZXgobiA9PiB7XHJcbiAgICAgICAgICAgIGNoaWxkSW5kZXggPSBuLnN1Yk5vZGVzPy5maW5kSW5kZXgocyA9PiBldmVudC51cmxBZnRlclJlZGlyZWN0cy5pbmNsdWRlcyhzLnJvdXRlLnJlcGxhY2UoJy4nLCAnJykpKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBjaGlsZEluZGV4ID4gLTEgfHwgZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMuaW5jbHVkZXMobi5yb3V0ZS5yZXBsYWNlKCcuJywgJycpKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy8gaWYgbm8gY2hpbGRyZW4gb3Igbm8gaW5kZXhlcyBhY3RpdmF0ZSBmaXJzdCBwYXJlbnRcclxuICAgICAgICAgIGlmIChwYXJlbnRJbmRleCA9PT0gLTEpIHtcclxuICAgICAgICAgICAgcGFyZW50SW5kZXggPSAwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRJbmRleCA9IHBhcmVudEluZGV4O1xyXG4gICAgICAgICAgaWYgKGNoaWxkSW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmlubmVyU3RlcHBlcnMuZmluZCgoaXMsIGluZGV4KSA9PiBpbmRleCA9PT0gcGFyZW50SW5kZXgpLnNlbGVjdGVkSW5kZXggPSBjaGlsZEluZGV4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqIEluaXRpYWxpemVzIHRoZSBhZHZhbmNlZCBuYXYgc2V0dGluZ3MgKi9cclxuICBwcml2YXRlIGluaXRBZHZhbmNlZFNldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZHZhbmNlZFNldHRpbmdzLnRvcEdhcERlc2t0b3AgPSB0aGlzLmFkdmFuY2VkU2V0dGluZ3MudG9wR2FwRGVza3RvcCB8fCAwO1xyXG4gICAgdGhpcy5hZHZhbmNlZFNldHRpbmdzLnRvcEdhcE1vYmlsZSA9IHRoaXMuYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBNb2JpbGUgfHwgdGhpcy5zZXR0aW5ncy5oZWFkZXJIZWlnaHQ7XHJcbiAgICB0aGlzLmFkdmFuY2VkU2V0dGluZ3MubWFyZ2luVG9wRGVza3RvcCA9IHRoaXMuYWR2YW5jZWRTZXR0aW5ncy5tYXJnaW5Ub3BEZXNrdG9wIHx8IDA7XHJcbiAgICB0aGlzLmFkdmFuY2VkU2V0dGluZ3MubWFyZ2luVG9wTW9iaWxlID0gdGhpcy5hZHZhbmNlZFNldHRpbmdzLm1hcmdpblRvcE1vYmlsZSB8fCAwO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKiBJbml0aWFsaXplcyB0aGUgbmF2IHRoZW1lIHNldHRpbmdzICovXHJcbiAgcHJpdmF0ZSBpbml0VGhlbWVTZXR0aW5ncygpOiB2b2lkIHtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5jb250ZW50QmdDb2xvciA/IHRoaXMuc2V0VGhlbWVDb2xvcignY29udGVudC1iZy1jb2xvcicsIHRoaXMudGhlbWVTZXR0aW5ncy5jb250ZW50QmdDb2xvcikgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuZm9udENvbG9yID8gdGhpcy5zZXRUaGVtZUNvbG9yKCdmb250LWNvbG9yJywgdGhpcy50aGVtZVNldHRpbmdzLmZvbnRDb2xvcikgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuZm9udENvbG9yID0gdGhpcy50aGVtZVNldHRpbmdzLmZvbnRDb2xvciB8fCAnIzAwMCc7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MubW9iaWxlQmdDb2xvciA9IHRoaXMudGhlbWVTZXR0aW5ncy5tb2JpbGVCZ0NvbG9yIHx8ICcjZmZmZmZmJztcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5iZ0dyYWRpZW50Q29sb3IxID8gdGhpcy5zZXRUaGVtZUNvbG9yKCdiZy1ncmFkaWVudC1jb2xvci0xJywgdGhpcy50aGVtZVNldHRpbmdzLmJnR3JhZGllbnRDb2xvcjEpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmJnR3JhZGllbnRDb2xvcjIgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2JnLWdyYWRpZW50LWNvbG9yLTInLCB0aGlzLnRoZW1lU2V0dGluZ3MuYmdHcmFkaWVudENvbG9yMikgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuYm9yZGVyUmlnaHRDb2xvciA/IHRoaXMuc2V0VGhlbWVDb2xvcignYm9yZGVyLXJpZ2h0LWNvbG9yJywgdGhpcy50aGVtZVNldHRpbmdzLmJvcmRlclJpZ2h0Q29sb3IpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmxpc3RCb3JkZXJDb2xvciA/IHRoaXMuc2V0VGhlbWVDb2xvcignbGlzdC1ib3JkZXItY29sb3InLCB0aGlzLnRoZW1lU2V0dGluZ3MubGlzdEJvcmRlckNvbG9yKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5oaWdobGlnaHRHcmFkaWVudDEgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2hpZ2hsaWdodC1ncmFkaWVudC0xJywgdGhpcy50aGVtZVNldHRpbmdzLmhpZ2hsaWdodEdyYWRpZW50MSkgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0R3JhZGllbnQyID8gdGhpcy5zZXRUaGVtZUNvbG9yKCdoaWdobGlnaHQtZ3JhZGllbnQtMicsIHRoaXMudGhlbWVTZXR0aW5ncy5oaWdobGlnaHRHcmFkaWVudDIpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLnN1YkhpZ2hsaWdodEJvcmRlckNvbG9yID9cclxuICAgICAgdGhpcy5zZXRUaGVtZUNvbG9yKCdzdWItaGlnaGxpZ2h0LWJvcmRlci1jb2xvcicsIHRoaXMudGhlbWVTZXR0aW5ncy5zdWJIaWdobGlnaHRCb3JkZXJDb2xvcikgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3Muc3ViSGlnaGxpZ2h0QmdDb2xvciA/XHJcbiAgICAgIHRoaXMuc2V0VGhlbWVDb2xvcignc3ViLWhpZ2hsaWdodC1iZy1jb2xvcicsIHRoaXMudGhlbWVTZXR0aW5ncy5zdWJIaWdobGlnaHRCZ0NvbG9yKSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKiBJbml0aWFsaXplcyB0aGUgYmFzaWMgbmF2IHNldHRpbmdzICovXHJcbiAgcHJpdmF0ZSBpbml0QmFzaWNTZXR0aW5ncygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0dGluZ3MuZm9udEF3ZXNvbWVNZW51SWNvbiA9IHRoaXMuc2V0dGluZ3MuZm9udEF3ZXNvbWVNZW51SWNvbiB8fCAnZmFzIGZhLWFuZ2xlLWRvdWJsZS1sZWZ0JztcclxuICAgIHRoaXMuc2V0dGluZ3MuZm9udEF3ZXNvbWVNZW51SWNvbkNsb3NlZCA9IHRoaXMuc2V0dGluZ3MuZm9udEF3ZXNvbWVNZW51SWNvbkNsb3NlZCB8fCAnZmFzIGZhLWFuZ2xlLWRvdWJsZS1yaWdodCc7XHJcbiAgICB0aGlzLnNldHRpbmdzLmFsbG93TmF2VG9nZ2xlID0gdGhpcy5zZXR0aW5ncy5hbGxvd05hdlRvZ2dsZSA9PSBudWxsID8gdHJ1ZSA6IHRoaXMuc2V0dGluZ3MuYWxsb3dOYXZUb2dnbGU7XHJcbiAgICB0aGlzLnNldHRpbmdzLm1haW5NZW51VGV4dCA/IHRoaXMubWFpbk1lbnVUZXh0ID0gdGhpcy5zZXR0aW5ncy5tYWluTWVudVRleHQgOiB0aGlzLm1haW5NZW51VGV4dCA9ICdNYWluIE1lbnUnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5oZWFkZXJIZWlnaHQgPSB0aGlzLnNldHRpbmdzLmhlYWRlckhlaWdodCB8fCA2MDtcclxuICAgIHRoaXMuc2V0dGluZ3MubWVudUJ1dHRvblNSVGV4dCA9IHRoaXMuc2V0dGluZ3MubWVudUJ1dHRvblNSVGV4dCB8fCAnTWVudSBCdXR0b24nO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5tZW51U3R5bGUgPSB0aGlzLnNldHRpbmdzLm1lbnVTdHlsZSB8fCAnc3RhdGljJztcclxuICAgIHRoaXMuc2V0dGluZ3MuZGlzcGxheU51bWJlcnMgPSB0aGlzLnNldHRpbmdzLmRpc3BsYXlOdW1iZXJzID09IG51bGwgPyB0cnVlIDogdGhpcy5zZXR0aW5ncy5kaXNwbGF5TnVtYmVycztcclxuICAgIHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ29tcGxldGVJY29uID0gdGhpcy5zZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25Db21wbGV0ZUljb24gfHwgJ2ZhcyBmYS1jaGVjay1jaXJjbGUnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25GdXR1cmVJY29uID0gdGhpcy5zZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25GdXR1cmVJY29uIHx8ICdmYXIgZmEtY2lyY2xlJztcclxuICAgIHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ3VycmVudEljb24gPSB0aGlzLnNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkN1cnJlbnRJY29uIHx8ICdmYXMgZmEtY2lyY2xlJztcclxuICAgIHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NNZW51Q29tcGxldGVJY29uID0gdGhpcy5zZXR0aW5ncy5wcm9ncmVzc01lbnVDb21wbGV0ZUljb24gfHwgJ2ZhciBmYS1jaGVjayc7XHJcbiAgICB0aGlzLnNldHRpbmdzLnNob3dQcm9ncmVzc0JhciA9IHRoaXMuc2V0dGluZ3Muc2hvd1Byb2dyZXNzQmFyID09IG51bGwgPyB0cnVlIDogdGhpcy5zZXR0aW5ncy5zaG93UHJvZ3Jlc3NCYXJcclxuICAgIHRoaXMuc2V0dGluZ3Muc2lkZU5hdldpZHRoRGVza3RvcCA9IHRoaXMuc2V0dGluZ3Muc2lkZU5hdldpZHRoRGVza3RvcCB8fCAnMzUwJztcclxuICAgIHRoaXMuc2V0dGluZ3Muc2lkZU5hdldpZHRoTW9iaWxlID0gdGhpcy5zZXR0aW5ncy5zaWRlTmF2V2lkdGhNb2JpbGUgfHwgJzM1MCc7XHJcbiAgICB0aGlzLnNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvbiA9IHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uIHx8IGZhbHNlO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5wcm9ncmVzc01lbnVXaWR0aCA9IHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NNZW51V2lkdGggfHwgJzI4MCc7XHJcbiAgICB0aGlzLnNldHRpbmdzLnVzZUN1c3RvbU1vYmlsZUZvb3RlciA9IHRoaXMuc2V0dGluZ3MudXNlQ3VzdG9tTW9iaWxlRm9vdGVyICE9IG51bGwgPyB0aGlzLnNldHRpbmdzLnVzZUN1c3RvbU1vYmlsZUZvb3RlciA6IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic29mLWFyLW5hdi1jb250YWluZXJcIlxyXG4gIFtzdHlsZS50b3BdPVwibW9iaWxlUXVlcnkubWF0Y2hlcyAmJiBhZHZhbmNlZFNldHRpbmdzLnRvcEdhcE1vYmlsZSA/IGFkdmFuY2VkU2V0dGluZ3MudG9wR2FwTW9iaWxlICsgJ3B4JyA6IHNldHRpbmdzLmhlYWRlckhlaWdodCArICdweCdcIlxyXG4gIFtjbGFzcy5zb2YtYXItbmF2LW1vYmlsZV09XCJtb2JpbGVRdWVyeS5tYXRjaGVzXCI+XHJcbiAgPGRpdiAqbmdJZj1cInNob3dNZXNzYWdlXCIgbS1hLTAgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIiBzd3MtYWxlcnQtLXNlY29uZGFyeSByb2xlPVwiYWxlcnRcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgPGkgKm5nSWY9XCJzaG93Q2hlY2tNYXJrXCIgbS1yLTUgbS1sLTUgY2xhc3M9XCJmYXMgZmEtY2hlY2stY2lyY2xlIGljb24tY29udGFpbmVyXCI+PC9pPlxyXG4gICAgICA8cCBjbGFzcz1cIm1lc3NhZ2UtY29udGFpbmVyXCIgbS1yLTUgbS1sLTUgW2lubmVySHRtbF09XCJtZXNzYWdlIHwgdHJhbnNsYXRlXCI+PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgIDxidXR0b24gaWQ9XCJidG5DbG9zZVwiIChjbGljayk9XCJoaWRlKClcIiBtYXQtaWNvbi1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInY29tbW9uLmNsb3NlJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtdGltZXMgZmEtbGdcIj48L2k+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxidXR0b24gaWQ9XCJzb2YtYXItbmF2LWJ0bi1tZW51XCIgYXJpYS1sYWJlbD1cIk1lbnUgQnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxyXG4gICAgKGNsaWNrKT1cInNuYXYudG9nZ2xlKClcIiBjbGFzcz1cInNvZi1hci1uYXYtbWVudS1idG5cIlxyXG4gICAgW2NsYXNzLmhpZGRlbl09XCIhKG1vYmlsZVF1ZXJ5Lm1hdGNoZXMgfHwgc2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUpIHx8IHNldHRpbmdzLmhpZGVOYXZpZ2F0aW9uXCI+XHJcbiAgICA8c3BhbiAqbmdJZj1cImlzTmF2T3BlbjsgZWxzZSBjbG9zZWRJY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJzb2YtYXItbmF2LW1lbnUtaWNvblwiPlxyXG4gICAgICA8aSBjbGFzcz1cInt7c2V0dGluZ3MuZm9udEF3ZXNvbWVNZW51SWNvbn19IG1lbnUtaWNvblwiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjY2xvc2VkSWNvbj5cclxuICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJzb2YtYXItbmF2LW1lbnUtaWNvblwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwie3tzZXR0aW5ncy5mb250QXdlc29tZU1lbnVJY29uQ2xvc2VkfX0gbWVudS1pY29uXCI+PC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3tzZXR0aW5ncy5tZW51QnV0dG9uU1JUZXh0IHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDxtYXQtc2lkZW5hdi1jb250YWluZXIgYXV0b3NpemUgY2xhc3M9XCJzb2YtYXItbmF2LXNpZGVuYXYtY29udGFpbmVyXCIgW3N0eWxlLm1hcmdpblRvcC5weF09XCJcclxuICAgICAgbW9iaWxlUXVlcnkubWF0Y2hlcyA/IGFkdmFuY2VkU2V0dGluZ3MubWFyZ2luVG9wTW9iaWxlIDogYWR2YW5jZWRTZXR0aW5ncy5tYXJnaW5Ub3BEZXNrdG9wXCI+XHJcbiAgICA8bWF0LXNpZGVuYXYgW2Rpc2FibGVDbG9zZV09XCIhbW9iaWxlUXVlcnkubWF0Y2hlc1wiIGNsYXNzPVwic29mLWFyLW5hdi1zaWRlbmF2XCIgI3NuYXZcclxuICAgICAgW21vZGVdPVwibW9iaWxlUXVlcnkubWF0Y2hlcyA/ICdvdmVyJyA6ICdzaWRlJ1wiIFtmaXhlZEluVmlld3BvcnRdPVwibW9iaWxlUXVlcnkubWF0Y2hlc1wiXHJcbiAgICAgIFtmaXhlZFRvcEdhcF09XCJtb2JpbGVRdWVyeS5tYXRjaGVzID8gYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBNb2JpbGUgOiBhZHZhbmNlZFNldHRpbmdzLnRvcEdhcERlc2t0b3BcIlxyXG4gICAgICBbb3BlbmVkXT1cIiFtb2JpbGVRdWVyeS5tYXRjaGVzICYmICFzZXR0aW5ncy5oaWRlTmF2aWdhdGlvbiAmJiBzZXR0aW5ncy5tZW51U3R5bGUhPT0ncHJvZ3Jlc3MnIFwiXHJcbiAgICAgIFtzdHlsZS53aWR0aF09XCJtb2JpbGVRdWVyeS5tYXRjaGVzID8gc2V0TmF2V2lkdGgoc2V0dGluZ3Muc2lkZU5hdldpZHRoTW9iaWxlKSA6IHNldE5hdldpZHRoKHNldHRpbmdzLnNpZGVOYXZXaWR0aERlc2t0b3ApXCJcclxuICAgICAgW25nU3R5bGVdPVwie2JhY2tncm91bmQ6bW9iaWxlUXVlcnkubWF0Y2hlcyA/IHRoZW1lU2V0dGluZ3M/Lm1vYmlsZUJnQ29sb3IgOiB1bmRlZmluZWR9XCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhc2V0dGluZ3MuZGlzYWJsZVVzZXJuYW1lTW9iaWxlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgJiYgdXNlck5hbWUgJiYgIXNldHRpbmdzLmN1c3RvbVVzZXJOYW1lXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXItbmFtZVwiPlxyXG4gICAgICAgICAgICB7e3VzZXJOYW1lfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9iaWxlUXVlcnkubWF0Y2hlcyAmJiBzZXR0aW5ncy5jdXN0b21Vc2VyTmFtZVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyLW5hbWVcIj5cclxuICAgICAgICAgICAge3tzZXR0aW5ncy5jdXN0b21Vc2VyTmFtZSB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIE5hdiBIZWFkZXIgQ29udGVudCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5hdi1oZWFkZXItY29udGVudFwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzb2YtYXItbmF2LWhlYWRlcl1cIj4gPC9uZy1jb250ZW50PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gU3RhdGljIE5hdmlnYXRpb24gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuYXYtY29udGVudC1pdGVtIHNpZGVuYXYtYmFja2dyb3VuZFwiICpuZ0lmPVwic2V0dGluZ3MubWVudVN0eWxlID09PSAnc3RhdGljJ1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwieydwYWRkaW5nLWJvdHRvbS5weCc6IChmb290ZXJJdGVtQ291bnQqNjQpKzEyOH1cIj5cclxuICAgICAgICA8bmF2ICpuZ0lmPVwic2V0dGluZ3MubWVudVN0eWxlID09PSAnc3RhdGljJ1wiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ21haW4nXCI+XHJcbiAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbmF2IG9mIG5hdmlnYXRpb25EYXRhXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8uc3ViTm9kZXM/Lmxlbmd0aCAmJiAhbmF2LmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1hY2NvcmRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIFtleHBhbmRlZF09XCJuYXYuZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW25nQ2xhc3NdPVwieyAnc29mLWFyLW5hdi1zZWxlY3RlZCc6IGlzTmF2U2VsZWN0ZWQobmF2KSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIE5hdmlnYXRpb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIElmIHRoZXJlIGlzIGEgcm91dGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LnJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgW2F0dHIucm9sZV09XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1pdGVtXCIgbWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109XCJuYXY/LnJvdXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzb2YtYXItbmF2LWFjdGl2ZS1yb3V0ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LmZvbnRBd2Vzb21lSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7bmF2Py5mb250QXdlc29tZUljb259fVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvZi1hci1uYXYtaGVhZGVyLXRleHRcIj57e25hdi50ZXh0IHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIElmIHRoZXJlIGlzIG5vdCBhIHJvdXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5hdj8ucm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW5hdi1saXN0IFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIiBbYXR0ci5yb2xlXT1cIm51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWl0ZW1cIiBtYXQtbGlzdC1pdGVtIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1hY3RpdmUtcm91dGUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5mb250QXdlc29tZUljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e25hdj8uZm9udEF3ZXNvbWVJY29ufX1cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzb2YtYXItbmF2LWhlYWRlci10ZXh0XCI+e3tuYXYudGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdWJOYXYgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgW25nQ2xhc3NdPVwieyAnc29mLWFyLW5hdi1zZWxlY3RlZCc6IGlzTmF2U2VsZWN0ZWQoc3VibmF2KSB9XCIgY2xhc3M9XCJzdWJuYXYtY29udGVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIiAqbmdGb3I9XCJsZXQgc3VibmF2IG9mIG5hdj8uc3ViTm9kZXNcIiAoY2xpY2spPVwiY2xvc2VOYXZpZ2F0aW9uRm9yTW9iaWxlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cIm51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtaXRlbSBuYXYtaXRlbS1tYXJnaW5cIiBtYXQtbGlzdC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzb2YtYXItbmF2LXN1Yi1hY3RpdmUtcm91dGUnXVwiIFtyb3V0ZXJMaW5rXT1cInN1Ym5hdi5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIobmF2LnRleHQgfCB0cmFuc2xhdGUpICsgJyAnICsgKHN1Ym5hdi50ZXh0IHwgdHJhbnNsYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mLWFyLW5hdi1oZWFkZXItdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihuYXYudGV4dCB8IHRyYW5zbGF0ZSkgKyAnICcgKyAoc3VibmF2LnRleHQgfCB0cmFuc2xhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N1Ym5hdi50ZXh0IHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1hY2NvcmRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPCEtLSBJZiBzdWJub2RlcyBhcmUgbm90IHRoZXJlIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5hdj8uc3ViTm9kZXM/Lmxlbmd0aCAmJiAhbmF2Py5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBJZiB0aGVyZSBpcyBhIHJvdXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgW25nQ2xhc3NdPVwieyAnc29mLWFyLW5hdi1zZWxlY3RlZCc6IGlzTmF2U2VsZWN0ZWQobmF2KSB9XCIgY2xhc3M9XCJuYXYtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIiAoY2xpY2spPVwiY2xvc2VOYXZpZ2F0aW9uRm9yTW9iaWxlKClcIiBbYXR0ci5yb2xlXT1cIm51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0tbWFyZ2luXCIgbWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua109XCJuYXY/LnJvdXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzb2YtYXItbmF2LWFjdGl2ZS1yb3V0ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LmZvbnRBd2Vzb21lSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+PGkgY2xhc3M9XCJ7e25hdj8uZm9udEF3ZXNvbWVJY29ufX1cIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzb2YtYXItbmF2LWhlYWRlci10ZXh0XCI+e3tuYXYudGV4dCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBJZiB0aGVyZSBpcyBub3QgYSByb3V0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXY/LnJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgW2F0dHIucm9sZV09XCJudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1pdGVtXCIgbWF0LWxpc3QtaXRlbSBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3NvZi1hci1uYXYtYWN0aXZlLXJvdXRlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8uZm9udEF3ZXNvbWVJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJpY29uLXN0eWxpbmdcIj48aSBjbGFzcz1cInt7bmF2Py5mb250QXdlc29tZUljb259fVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvZi1hci1uYXYtaGVhZGVyLXRleHRcIj57e25hdi50ZXh0IHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbmF2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gU3RlcHBlciAtLT5cclxuICAgICAgPG1hdC12ZXJ0aWNhbC1zdGVwcGVyICpuZ0lmPVwic2V0dGluZ3MubWVudVN0eWxlID09PSAnc3RlcHBlcidcIiBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZFBhcmVudEluZGV4XCIgI3ZlcnRTdGVwcGVyXHJcbiAgICAgICAgW2xpbmVhcl09XCJmYWxzZVwiIGNsYXNzPVwic2lkZW5hdi1iYWNrZ3JvdW5kXCI+XHJcbiAgICAgICAgPCEtLSBBbHRlcm5hdGUgc3RlcCBzdGF0ZXMgZm9yIG5hdiwgaWNhb25zIHNob3VsZCBhbHdheXMgYmUgd2hpdGUgb25seSB3b3JrZWQgd2l0aCBzdHlsZXMgLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiY3JlYXRlXCI+XHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWQgZmEtcGVuY2lsLWFsdFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnRcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJlZGl0XCI+XHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWQgZmEtcGVuY2lsLWFsdFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnRcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJhY3RpdmVcIj5cclxuICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhZCBmYS1wZW5jaWwtYWx0XCIgc3R5bGU9XCJjb2xvcjogd2hpdGUgIWltcG9ydGFudFwiPjwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImRvbmVcIj5cclxuICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGVja1wiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnRcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSBuYXYgc3RlcHMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbmF2IG9mIG5hdmlnYXRpb25EYXRhOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8bWF0LXN0ZXAgKm5nSWY9XCIhbmF2Py5oaWRkZW5cIiBzdGF0ZT1cInt7IGRldGVybWluZVN0ZXBTdGF0ZShpLCAtMSkgfX1cIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbCAqbmdJZj1cIiFuYXYuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBpZD1cImRpdlN0ZXB7eyBpIH19XCIgc3R5bGU9XCJoZWlnaHQ6IDcycHhcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7IG5hdi50ZXh0IHwgdHJhbnNsYXRlIH19XCIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCInYWZ0ZXInXCIgZnhGbGV4PVwiMTAwJVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgaWQ9XCJzdGVwe3sgaSB9fVwiIGZ4RmxleD1cIjEwMCVcIiBjbGFzcz1cIm1hdC1idXR0b24gc3RlcC1saW5rXCIgW3JvdXRlckxpbmtdPVwibmF2LnJvdXRlXCJcclxuICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogdGhlbWVTZXR0aW5ncz8uZm9udENvbG9yIH1cIiBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3N0ZXAtYWN0aXZlJ11cIj5cclxuICAgICAgICAgICAgICAgICAge3sgbmF2LnRleHQgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPHAgW2lubmVySFRNTF09XCJuYXYuc3RlcENvbnRlbnQgfCB0cmFuc2xhdGVcIj48L3A+XHJcbiAgICAgICAgICAgIDwhLS0gc3ViIG5hdiAtLT5cclxuICAgICAgICAgICAgPG1hdC12ZXJ0aWNhbC1zdGVwcGVyICpuZ0lmPVwibmF2Py5zdWJOb2Rlc1wiIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkQ2hpbGRJbmRleGVzW2ldXCIgW2xpbmVhcl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgI3ZlcnRTdGVwcGVySW5uZXI+XHJcbiAgICAgICAgICAgICAgPCEtLSBBbHRlcm5hdGUgc3RlcCBzdGF0ZXMgZm9yIHN1YiBuYXYsIGljb25zIHNob3VsZCBhbHdheXMgYmUgd2hpdGUgb25seSB3b3JrZWQgd2l0aCBzdHlsZXMgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiY3JlYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWQgZmEtcGVuY2lsLWFsdFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJlZGl0XCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWQgZmEtcGVuY2lsLWFsdFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJkb25lXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hlY2tcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiYWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGVuY2lsLWFsdFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8IS0tIHN1YiBuYXYgc3RlcHMgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VibmF2IG9mIG5hdj8uc3ViTm9kZXM7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtc3RlcCBzdGF0ZT1cInt7IGRldGVybWluZVN0ZXBTdGF0ZShpLCBqKSB9fVwiICpuZ0lmPVwiIXN1Ym5hdi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiZGl2U3ViU3RlcHt7IGkgfX0te3sgaiB9fVwiIHN0eWxlPVwiaGVpZ2h0OiA3MnB4XCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyBzdWJuYXYudGV4dCB8IHRyYW5zbGF0ZSB9fVwiIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2FmdGVyJ1wiIGZ4RmxleD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPVwic3ViU3RlcHt7IGkgfX0te3sgaiB9fVwiIGNsYXNzPVwibWF0LWJ1dHRvbiBzdGVwLWxpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGNvbG9yOiB0aGVtZVNldHRpbmdzPy5mb250Q29sb3IgfVwiIFtyb3V0ZXJMaW5rXT1cInN1Ym5hdi5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc3RlcC1hY3RpdmUnXVwiPnt7IHN1Ym5hdi50ZXh0IHwgdHJhbnNsYXRlIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cInN1Ym5hdi5zdGVwQ29udGVudCB8IHRyYW5zbGF0ZVwiPjwvcD5cclxuICAgICAgICAgICAgICAgIDwvbWF0LXN0ZXA+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8L21hdC12ZXJ0aWNhbC1zdGVwcGVyPlxyXG4gICAgICAgICAgPC9tYXQtc3RlcD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwvbWF0LXZlcnRpY2FsLXN0ZXBwZXI+XHJcblxyXG4gICAgICA8IS0tIE5hdiBGb290ZXIgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuYXYtZm9vdGVyLWl0ZW1cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2V0dGluZ3MubWVudVN0eWxlID09PSAnc3RhdGljJ1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbmF2IG9mIGZvb3Rlck5hdmlnYXRpb25EYXRhXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPCEtLSBEZXNrdG9wIE5hdiAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5hdj8uc3ViTm9kZXM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBJZiB0aGVyZSBpcyBhIHJvdXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8ucm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCBjbGFzcz1cIm5hdi1oZWFkZXJcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtaXRlbSBuYXYtaXRlbS1tYXJnaW5cIiBtYXQtbGlzdC1pdGVtIFtyb3V0ZXJMaW5rXT1cIm5hdj8ucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzb2YtYXItbmF2LWFjdGl2ZS1yb3V0ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5mb250QXdlc29tZUljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJpY29uLXN0eWxpbmdcIj48aSBjbGFzcz1cInt7bmF2Py5mb250QXdlc29tZUljb259fVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7bmF2LnRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgbm90IGEgcm91dGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5hdj8ucm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwic29mLWFyLW5hdi1idG4tbm9kZVwiIGNsYXNzPVwibmF2LWl0ZW1cIiBtYXQtbGlzdC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3NvZi1hci1uYXYtYWN0aXZlLXJvdXRlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LmZvbnRBd2Vzb21lSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPjxpIGNsYXNzPVwie3tuYXY/LmZvbnRBd2Vzb21lSWNvbn19XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tuYXYudGV4dCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibmF2aWdhdGlvbkZvb3RlclwiPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIHRoZSBtb2JpbGUgcHJvZ3Jlc3MgbWVudS0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2V0dGluZ3M/Lm1lbnVTdHlsZSA9PT0gJ3Byb2dyZXNzJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlbmF2LWJhY2tncm91bmRcIiBbbmdTdHlsZV09XCJ7J3BhZGRpbmctYm90dG9tLnB4JzogKGZvb3Rlckl0ZW1Db3VudCo2NCkrMTI4fVwiPlxyXG4gICAgICAgICAgPG1hdC1hY2NvcmRpb24+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0ZXAgb2YgbmF2aWdhdGlvbkRhdGE7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdWJOb2RlcyAmJiBzdGVwLnN1Yk5vZGVzLmxlbmd0aCA+IDAgJiYgIXN0ZXAuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBoaWRlVG9nZ2xlIGNsYXNzPVwicHJvZ3Jlc3MtbW9iaWxlLWV4cGFuc2lvbi1wYW5lbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoIXN0ZXAudmlzaXRlZCB8fCBzdGVwLmlzRGlzYWJsZWQpICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAob3BlbmVkKT1cInBhbmVsT3BlblN0YXRlID0gdHJ1ZVwiIChjbG9zZWQpPVwicGFuZWxPcGVuU3RhdGUgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZSBjbGFzcz1cInByb2dyZXNzLW1vYmlsZS1wYW5lbC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAtd2Via2l0LWZpbGwtYXZhaWxhYmxlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOighc3RlcC52aXNpdGVkIHx8IHN0ZXAuaXNEaXNhYmxlZCkgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvbiAmJiAhc3RlcC5jb21wbGV0ZSwnY29sb3ItcHJpbWFyeSc6c3RlcC5jb21wbGV0ZSAmJiBzdGVwIT09YWN0aXZlUGFyZW50Tm9kZSwncHJvZ3Jlc3MtbWVudS1hY3RpdmUnOnN0ZXA9PT1hY3RpdmVQYXJlbnROb2RlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvZ3Jlc3NQYXJlbnROb2RlSWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c3RlcDpzdGVwfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmdzPy5kaXNwbGF5TnVtYmVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7aSA8IDEwID8gXCIwXCIgKyAoaSArIDEpICsgXCIuIFwiIDogaSArIFwiIC4gXCIgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtYnRuLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RlcC50ZXh0IHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFwYW5lbE9wZW5TdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gcGFuZWwtaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGFuZWxPcGVuU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi11cCBwYW5lbC1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBtb2JpbGUgc3ViIG1lbnUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1uYXYtbWVudVwiICpuZ0Zvcj1cImxldCBzdWJOb2RlIG9mIHN0ZXAuc3ViTm9kZXM7IGxldCBpZHggPSBpbmRleDtcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwic3RlcC5zdWJOb2Rlc1tpZHhdLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gcm9sZT1cImxpbmtcIiBpZD1cIm1vYmlsZU1lbnV7eyBpZHggfX1cIiBtYXQtYnV0dG9uIGNsYXNzPVwic3RlcC1saW5rIHByb2dyZXNzLW1lbnUtbW9iaWxlLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NvbG9yLXByaW1hcnknOnN1Yk5vZGUuY29tcGxldGUgJiYgc3ViTm9kZSE9PWFjdGl2ZVN1Yk5vZGV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsncHJvZ3Jlc3MtbWVudS1hY3RpdmUnXVwiIFtuZ1N0eWxlXT1cInsgJyBjb2xvcic6IHRoZW1lU2V0dGluZ3M/LmZvbnRDb2xvciB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cInN1Yk5vZGUucm91dGVcIiBbZGlzYWJsZWRdPVwiIXN1Yk5vZGUudmlzaXRlZCAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvZ3Jlc3NTdWJOb2RlSWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3N1Yk5vZGU6c3ViTm9kZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1tZW51LWJ0bi10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6KCFzdWJOb2RlLnZpc2l0ZWQpICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb24gJiYgIXN1Yk5vZGUuY29tcGxldGUsJ2NvbG9yLXByaW1hcnknOnN1Yk5vZGUuY29tcGxldGUgJiYgc3ViTm9kZSE9PWFjdGl2ZVN1Yk5vZGUsJ3Byb2dyZXNzLW1lbnUtYWN0aXZlJzpzdWJOb2RlPT09YWN0aXZlU3ViTm9kZX1cIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJOb2RlLnRleHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwhLS0gaWYgdGhlcmUgYXJlIG5vIHN1Yk5vZGVzIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoIXN0ZXAuc3ViTm9kZXMgfHwgc3RlcC5zdWJOb2Rlcy5sZW5ndGg9PT0wKSAmJiAhc3RlcC5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsICNwYW5lbCBoaWRlVG9nZ2xlIChvcGVuZWQpPVwiZGlzYWJsZVBhbmVsKHBhbmVsLGkpXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1tb2JpbGUtZXhwYW5zaW9uLXBhbmVsXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighc3RlcC52aXNpdGVkIHx8IHN0ZXAuaXNEaXNhYmxlZCkgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZSBjbGFzcz1cInByb2dyZXNzLW1vYmlsZS1wYW5lbC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzooIXN0ZXAudmlzaXRlZCB8fCBzdGVwLmlzRGlzYWJsZWQpICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb24gJiYgIXN0ZXAuY29tcGxldGUsJ2NvbG9yLXByaW1hcnknOnN0ZXAuY29tcGxldGUgJiYgc3RlcCE9PWFjdGl2ZVBhcmVudE5vZGUsJ3Byb2dyZXNzLW1lbnUtYWN0aXZlJzpzdGVwPT09YWN0aXZlUGFyZW50Tm9kZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzUGFyZW50Tm9kZUljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3N0ZXA6c3RlcH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZXR0aW5ncz8uZGlzcGxheU51bWJlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2kgPCAxMCA/IFwiMFwiICsgKGkgKyAxKSArIFwiLiBcIiA6IGkgKyBcIiAuIFwiIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWJ0bi10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0ZXAudGV4dCB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1hY2NvcmRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gdGhlIHByb2dyZXNzIG1lbnUgbGFuZ3VhZ2UgYW5kIGxvZ291dCBidXR0b25zLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1mb290ZXItaXRlbSBwcm9ncmVzcy1mb290ZXJcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJuYXZpZ2F0aW9uRm9vdGVyXCI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LXNpZGVuYXY+XHJcbiAgICA8bWF0LXNpZGVuYXYtY29udGVudD5cclxuICAgICAgPCEtLSBIb3Jpem9udGFsIFByb2dyZXNzIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2V0dGluZ3M/Lm1lbnVTdHlsZSA9PT0gJ3Byb2dyZXNzJ1wiPlxyXG4gICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwic2V0dGluZ3M/LnNob3dQcm9ncmVzc0JhclwiIG1vZGU9XCJkZXRlcm1pbmF0ZVwiIFt2YWx1ZV09XCJuYXZQcm9ncmVzc0NvdW50XCJcclxuICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA5cHhcIiBjb2xvcj1cImFjY2VudFwiPlxyXG4gICAgICAgIDwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgICAgICA8bmF2IFthdHRyLmFyaWEtbGFiZWxdPVwiJ21haW4nXCIgZnhIaWRlLmx0LW1kIGNsYXNzPVwic3RlcC10aXRsZXMgY2VudGVyXCIgZnhMYXlvdXQ9XCJyb3dcIiBzdHlsZT1cImp1c3RpZnktY29udGVudDpjZW50ZXIgIWltcG9ydGFudFwiXHJcbiAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cInNldHRpbmdzLmhpZGVOYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0ZXAgb2YgbmF2aWdhdGlvbkRhdGE7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImhvcml6b250YWwtcHJvZ3Jlc3MtZGl2XCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdGVwLnN1Yk5vZGVzPy5sZW5ndGggJiYgIXN0ZXAuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW3JvdXRlckxpbmtdPVwic3RlcC5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoIXN0ZXAudmlzaXRlZCB8fCBzdGVwLmlzRGlzYWJsZWQpICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLW1lbnUtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydjb2xvci1wcmltYXJ5JzpzdGVwLmNvbXBsZXRlICYmIHN0ZXAhPT1hY3RpdmVQYXJlbnROb2RlLCdwcm9ncmVzcy1tZW51LWFjdGl2ZSc6c3RlcD09PWFjdGl2ZVBhcmVudE5vZGV9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1BhcmVudE5vZGVJY29uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c3RlcDpzdGVwfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmdzPy5kaXNwbGF5TnVtYmVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7aSA8IDEwID8gXCIwXCIgKyAoaSArIDEpICsgXCIuIFwiIDogaSArIFwiIC4gXCIgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtYnRuLXRleHRcIj57eyBzdGVwLnRleHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8IS0tIGlmIHRoZXJlIGFyZSBzdWJub2RlcyBjcmVhdGUgbWVudXMgZm9yIGVhY2ggc3RlcCAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdWJOb2RlcyAmJiBzdGVwLnN1Yk5vZGVzLmxlbmd0aCAmJiAhc3RlcC5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydjb2xvci1wcmltYXJ5JzpzdGVwLmNvbXBsZXRlICYmIHN0ZXAhPT1hY3RpdmVQYXJlbnROb2RlLCdwcm9ncmVzcy1tZW51LWFjdGl2ZSc6c3RlcD09PWFjdGl2ZVBhcmVudE5vZGV9XCJcclxuICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvbiBbZGlzYWJsZWRdPVwiKCFzdGVwLnZpc2l0ZWQgfHwgc3RlcC5pc0Rpc2FibGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1tZW51LWJ0blwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1BhcmVudE5vZGVJY29uc1wiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c3RlcDpzdGVwfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmdzPy5kaXNwbGF5TnVtYmVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7aSA8IDEwID8gXCIwXCIgKyAoaSArIDEpICsgXCIuIFwiIDogaSArIFwiIC4gXCIgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtYnRuLXRleHRcIj57eyBzdGVwLnRleHQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cInNvZi1hci1tYXQtbWVudSBwcm9ncmVzcy1tZW51LXBhbmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1uYXYtbWVudVwiICpuZ0Zvcj1cImxldCBzdWJOb2RlIG9mIHN0ZXAuc3ViTm9kZXM7IGxldCBpZHggPSBpbmRleDtcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInt3aWR0aDpzZXR0aW5ncy5wcm9ncmVzc01lbnVXaWR0aCsncHgnfVwiIFtoaWRkZW5dPVwic3RlcC5zdWJOb2Rlc1tpZHhdLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gcm9sZT1cImxpbmtcIiBpZD1cInN1Ym1lbnV7eyBpZHggfX1cIiBtYXQtYnV0dG9uIGNsYXNzPVwic3RlcC1saW5rIHByb2dyZXNzLW1lbnUtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY29sb3ItcHJpbWFyeSc6c3ViTm9kZS5jb21wbGV0ZSAmJiBzdWJOb2RlIT09YWN0aXZlU3ViTm9kZSwnZGlzYWJsZWQnOiFzdWJOb2RlLnZpc2l0ZWQgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvbn1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydwcm9ncmVzcy1tZW51LWFjdGl2ZSddXCIgW25nU3R5bGVdPVwieyAnIGNvbG9yJzogdGhlbWVTZXR0aW5ncz8uZm9udENvbG9yIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwic3ViTm9kZS5yb3V0ZVwiIFtkaXNhYmxlZF09XCIhc3ViTm9kZS52aXNpdGVkICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1N1Yk5vZGVJY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c3ViTm9kZTpzdWJOb2RlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LW1lbnUtYnRuLXRleHRcIj57eyBzdWJOb2RlLnRleHQgfHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmF2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtcHJvZ3Jlc3MtY29udGFpbmVyXCIgZnhIaWRlLmd0LXNtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxuZy1jb250ZW50IHNvZi1hci1uYXYtY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1zaWRlbmF2LWNvbnRlbnQ+XHJcbiAgPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XHJcbiAgPCEtLSBUaGUgcHJvZ3Jlc3MgbWVudSBwYXJlbnQgbm9kZSBpY29uIHRlbXBsYXRlLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNwcm9ncmVzc1BhcmVudE5vZGVJY29ucyBsZXQtc3RlcD0nc3RlcCc+XHJcbiAgICA8c3BhbiAqbmdJZj1cInN0ZXAuY29tcGxldGUgJiYgc3RlcCAhPT0gYWN0aXZlUGFyZW50Tm9kZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMuY29tcGxldGUnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3sgc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ29tcGxldGVJY29uIH19IGNvbG9yLXByaW1hcnkgcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5jb21wbGV0ZScgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cInN0ZXAgPT09IGFjdGl2ZVBhcmVudE5vZGVcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLmluLXByb2dyZXNzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cInt7IHNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkN1cnJlbnRJY29uIH19IGNvbG9yLXByaW1hcnkgcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5pbi1wcm9ncmVzcycgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFzdGVwLmNvbXBsZXRlICYmIHN0ZXAgIT09IGFjdGl2ZVBhcmVudE5vZGVcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzohc3RlcC52aXNpdGVkICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb259XCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5ub3QtZG9uZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7eyBzZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25GdXR1cmVJY29uIH19IHByb2dyZXNzLW5hdi1pY29uXCJcclxuICAgICAgICBbdGl0bGVdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMubm90LWRvbmUnIHwgdHJhbnNsYXRlXCI+PC9pPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPCEtLSBUaGUgcHJvZ3Jlc3MgbWVudSBzdWIgbm9kZSBpY29uIHRlbXBsYXRlLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNwcm9ncmVzc1N1Yk5vZGVJY29ucyBsZXQtc3ViTm9kZT0nc3ViTm9kZSc+XHJcbiAgICA8c3BhbiAqbmdJZj1cInN1Yk5vZGUuY29tcGxldGUgJiYgYWN0aXZlU3ViTm9kZSAhPT0gc3ViTm9kZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMuY29tcGxldGUnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3tzZXR0aW5ncy5wcm9ncmVzc01lbnVDb21wbGV0ZUljb259fSBjb2xvci1wcmltYXJ5IHByb2dyZXNzLW5hdi1pY29uXCJcclxuICAgICAgICBbdGl0bGVdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMuY29tcGxldGUnIHwgdHJhbnNsYXRlXCI+PC9pPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJhY3RpdmVTdWJOb2RlID09PSBzdWJOb2RlXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5pbi1wcm9ncmVzcycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7eyBzZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25DdXJyZW50SWNvbiB9fSBjb2xvci1wcmltYXJ5IHByb2dyZXNzLW5hdi1pY29uXCJcclxuICAgICAgICBbdGl0bGVdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMuaW4tcHJvZ3Jlc3MnIHwgdHJhbnNsYXRlXCI+PC9pPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPHNwYW4gKm5nSWY9XCIhc3ViTm9kZS5jb21wbGV0ZSAmJiBhY3RpdmVTdWJOb2RlICE9PSBzdWJOb2RlXCJcclxuICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IXN1Yk5vZGUudmlzaXRlZCAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9ufVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMubm90LWRvbmUnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3sgc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uRnV0dXJlSWNvbiB9fSBwcm9ncmVzcy1uYXYtaWNvblwiXHJcbiAgICAgICAgW3RpdGxlXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLm5vdC1kb25lJyB8IHRyYW5zbGF0ZVwiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDwhLS0gVGhlIG5hdmlnYXRpb24gZm9vdGVyIHRlbXBsYXRlIGZvciBsYW5ndWFnZSBhbmQgbG9nb3V0IGJ1dHRvbnMgLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNuYXZpZ2F0aW9uRm9vdGVyPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1uYXYtbW9iaWxlLWZvb3Rlcl1cIj4gPC9uZy1jb250ZW50PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZXR0aW5ncy51c2VDdXN0b21Nb2JpbGVGb290ZXJcIj5cclxuICAgICAgPCEtLSBUaGUgbGFuZ3VhZ2UgYnV0dG9uIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJsYW5ndWFnZVNldHRpbmdzPy5kaXNwbGF5TGFuZ3VhZ2VPcHRpb25zICYmIGxhbmd1YWdlU2V0dGluZ3M/Lmxhbmd1YWdlcy5sZW5ndGggPiAyICYmIG1vYmlsZVF1ZXJ5Lm1hdGNoZXNcIj5cclxuICAgICAgICA8YnV0dG9uIGlkPVwic29mLWFyLW5hdi1sYW5nLWRyb3Bkb3duXCIgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImZhZGVkLWJ1dHRvbi01MCBsYW5ndWFnZS1idXR0b24gbmF2aWdhdGlvbkZvb3RlclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJoZWFkZXJMYW5ndWFnZU1lbnVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWdsb2JlIGxhbmd1YWdlLWdsb2JlXCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAge3tsYW5ndWFnZVNldHRpbmdzLmJ1dHRvblRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxtYXQtbWVudSAjaGVhZGVyTGFuZ3VhZ2VNZW51PVwibWF0TWVudVwiIGNsYXNzPVwic29mLWFyLW1hdC1tZW51XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGxhbmcgb2YgbGFuZ3VhZ2VTZXR0aW5ncy5sYW5ndWFnZXNcIiAoY2xpY2spPVwic2V0TGFuZ3VhZ2UkLmVtaXQobGFuZylcIlxyXG4gICAgICAgICAgICBpZD1cImFwcGx5LWxhbmctYnRuLXt7bGFuZ319XCI+XHJcbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCJhdXRvXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsYW5nIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCJhdXRvXCIgZnhMYXlvdXRBbGlnbj1cImVuZCBlbmRcIj5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY3VycmVudExhbmcgPT09IGxhbmdcIiBjbGFzcz1cImZhZCBmYS1jaGVjayBzZWxlY3RlZC1sYW5ndWFnZS1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nSWY9XCJsYW5ndWFnZVNldHRpbmdzPy5kaXNwbGF5TGFuZ3VhZ2VPcHRpb25zICYmIGxhbmd1YWdlU2V0dGluZ3M/Lmxhbmd1YWdlcy5sZW5ndGggPT09IDIgJiYgbW9iaWxlUXVlcnkubWF0Y2hlc1wiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJsYW5ndWFnZVNldHRpbmdzPy5sYW5ndWFnZXMubGVuZ3RoID09PSAyXCIgaWQ9XCJzb2YtYXItbmF2LWxhbmctYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImZhZGVkLWJ1dHRvbi01MCBsYW5ndWFnZS1idXR0b24gbmF2aWdhdGlvbkZvb3RlclwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhbmd1YWdlU2V0dGluZ3MuYnV0dG9uVGV4dCB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJzZXRMYW5ndWFnZSQuZW1pdCgpXCI+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1nbG9iZSBsYW5ndWFnZS1nbG9iZVwiPjwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIHt7b3RoZXJMYW5nVGV4dCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIFRoZSBsb2dvdXQgYnV0dG9uLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2JpbGVRdWVyeS5tYXRjaGVzICYmIHVzZXJOYW1lXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBpZD1cInNvZi1hci1oZWFkZXItbGFuZy1idXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJuYXZpZ2F0aW9uRm9vdGVyXCIgKGNsaWNrKT1cImxvZ091dCgpXCI+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zaWduLW91dC1hbHRcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICB7e2xvZ091dFRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PiJdfQ==
556
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL25hdmlnYXRpb24vY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9uYXZpZ2F0aW9uL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBb0MsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkxSyxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVeEMsMEZBQTBGO0FBRTFGOztHQUVHO0FBU0gsTUFBTSxPQUFPLDJCQUEyQjtJQXNDdEMsaUNBQWlDO0lBQ2pDLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBZ0ZEOzs7Ozs7OztPQVFHO0lBQ0gsWUFDVyxpQkFBb0MsRUFDcEMsS0FBbUIsRUFDWCxNQUFjLEVBQ3ZCLGFBQTRCLEVBQ25CLG9CQUEwQyxFQUM5QixhQUFnQztR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ZGsvbGF5b3V0JztcclxuaW1wb3J0IHsgU1RFUFBFUl9HTE9CQUxfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uUGFuZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XHJcbmltcG9ydCB7IE1hdFN0ZXBwZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL2Jhc2UtY29uZmlnJztcclxuaW1wb3J0IHsgQXV0aG9yaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2F1dGhvcml6YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEJhbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2Jhbm5lci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2Jhc2UtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIZWFkZXJMYW5ndWFnZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vaGVhZGVyL21vZGVscy9oZWFkZXItbGFuZ3VhZ2Uuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uVGhlbWVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9uYXYtdGhlbWUuc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5ncywgTmF2aWdhdGlvblNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL25hdi5zZXR0aW5ncyc7XHJcbmltcG9ydCB7IE5hdk5vZGUsIFN1Yk5hdk5vZGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL25hdmlnYXRpb24nO1xyXG5cclxuLy8gVE9ETzogc2VlIGhvdyB0aGlzIGNhbiBmaXQgd2l0aCB0aGUgYHNvZi1wcm9ncmVzcy1iYXJgIGNvbXBvbmVudC4gUG9zc2libHkgY29tYmluZSB0aGVtXHJcblxyXG4vKipcclxuICogVGhlIE5hdmlnYXRpb24gQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NvZi1hci1uYXZpZ2F0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmF2aWdhdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IFNURVBQRVJfR0xPQkFMX09QVElPTlMsIHVzZVZhbHVlOiB7IGRpc3BsYXlEZWZhdWx0SW5kaWNhdG9yVHlwZTogZmFsc2UgfVxyXG4gIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcm1hdHVyZU5hdmlnYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKiBUaGUgcGFyZW50IHN0ZXBwZXIgKi9cclxuICBAVmlld0NoaWxkKCd2ZXJ0U3RlcHBlcicpIHB1YmxpYyBzdGVwcGVyOiBNYXRTdGVwcGVyO1xyXG5cclxuICAvKiogVGhlIHNpZGUgbW9iaWxlIG5hdiAqL1xyXG4gIEBWaWV3Q2hpbGQoJ3NuYXYnKSBwdWJsaWMgc2lkZW5hdjogTWF0U2lkZW5hdjtcclxuXHJcbiAgLyoqIFRoZSBtb2JpbGUgZXhwYW5zaW9uIHBhbmVsIGZvciBwcm9ncmVzcyBtZW51ICovXHJcbiAgQFZpZXdDaGlsZCgncGFuZWwnKSBwdWJsaWMgZXhwYW5zaW9uUGFuZWw6IE1hdEV4cGFuc2lvblBhbmVsO1xyXG5cclxuICAvKiogVGhlIGNoaWxkIHN0ZXBwZXJzICovXHJcbiAgQFZpZXdDaGlsZHJlbigndmVydFN0ZXBwZXJJbm5lcicpIHB1YmxpYyBpbm5lclN0ZXBwZXJzOiBRdWVyeUxpc3Q8TWF0U3RlcHBlcj47XHJcblxyXG4gIC8qKiBDb21wb25lbnQgSW5wdXQgLSB0aGUgbmF2aWdhdGlvbiBkYXRhICovXHJcbiAgQElucHV0KCkgcHVibGljIG5hdmlnYXRpb25EYXRhOiBOYXZOb2RlW107XHJcblxyXG4gIC8qKiBDb21wb25lbnQgSW5wdXQgLSB0aGUgbmF2aWdhdGlvbiBzZXR0aW5ncyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXR0aW5nczogTmF2aWdhdGlvblNldHRpbmdzID0ge307XHJcblxyXG4gIC8qKiBDb21wb25lbnQgSW5wdXQgLSB0aGUgbmF2aWdhdGlvbiBzZXR0aW5ncyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhZHZhbmNlZFNldHRpbmdzOiBOYXZpZ2F0aW9uQWR2YW5jZWRTZXR0aW5ncyA9IHt9O1xyXG5cclxuICAvKiogQ29tcG9uZW50IElucHV0IC0gdGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdGhlbWVTZXR0aW5nczogTmF2aWdhdGlvblRoZW1lU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIENvbXBvbmVudCBJbnB1dCAtIHRoZSBuYXZpZ2F0aW9uIGxhbmd1YWdlIHNldHRpbmdzICovXHJcbiAgQElucHV0KCkgcHVibGljIGxhbmd1YWdlU2V0dGluZ3M6IEhlYWRlckxhbmd1YWdlU2V0dGluZ3MgPSB7fTtcclxuXHJcbiAgLyoqIEN1cnJlbnQgbGFuZ3VhZ2UgKiovXHJcbiAgQElucHV0KCkgcHVibGljIGN1cnJlbnRMYW5nOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBsb2dPdXQgdGV4dCAqKi9cclxuICBASW5wdXQoKSBwdWJsaWMgbG9nT3V0VGV4dDogc3RyaW5nO1xyXG5cclxuICAvKiogU2V0cyBsYW5ndWFnZSAqKi9cclxuICBAT3V0cHV0KCkgcHVibGljIHNldExhbmd1YWdlJDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLyoqIGdldHMgdGhlIG5vbiB1c2VkIGxhbmd1YWdlICovXHJcbiAgcHVibGljIGdldCBvdGhlckxhbmdUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZVNldHRpbmdzPy5sYW5ndWFnZXM/LmZpbmQoeCA9PiB4ICE9PSB0aGlzLmN1cnJlbnRMYW5nKTtcclxuICB9XHJcblxyXG4gIC8qKiBXaGV0aGVyIHNpZGUgbmF2IGlzIG9wZW4gb3Igbm90ICovXHJcbiAgcHVibGljIGlzTmF2T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogTW9iaWxlIFN1Yk5hdiAtIHdoZXRoZXIgb3Igbm90IHRoZSBtb2JpbGUgU3ViTmF2IGlzIG9wZW4gKi9cclxuICBwdWJsaWMgaXNNb2JpbGVTdWJOYXZPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBNb2JpbGUgU3ViTmF2IC10aGUgZGF0YSB0byBiZSBwYXNzZWQgdG8gdGhlIG1vYmlsZSBTdWJOYXYgKi9cclxuICBwdWJsaWMgY3VycmVudE1vYmlsZU5hdjogTmF2Tm9kZTtcclxuXHJcbiAgLyoqIFNldHRpbmdzIC0gdGhlIG1haW4gbWVudSB0ZXh0IHRoYXQgYXBwZWFycyBpbiB0aGUgbW9iaWxlIFN1Yk5hdiAqL1xyXG4gIHB1YmxpYyBtYWluTWVudVRleHQ6IHN0cmluZztcclxuXHJcbiAgLyoqIHRoZSBtb2JpbGUgcXVlcnkgKi9cclxuICBwdWJsaWMgbW9iaWxlUXVlcnk6IE1lZGlhUXVlcnlMaXN0O1xyXG5cclxuICAvKiogVGhlIHNlbGVjdGVkIHBhcmVudCBpbmRleCAqL1xyXG4gIHB1YmxpYyBzZWxlY3RlZFBhcmVudEluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICAvKiogVGhlIHNlbGVjdGVkIGNoaWxkIGluZGV4ICovXHJcbiAgcHVibGljIHNlbGVjdGVkQ2hpbGRJbmRleGVzOiB7IFtrZXk6IG51bWJlcl06IG51bWJlciB9ID0ge307XHJcblxyXG4gIC8qKiBUaGUgbmF2aWdhdGlvbiBwcm9ncmVzcyBjb3VudCAqL1xyXG4gIHB1YmxpYyBuYXZQcm9ncmVzc0NvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgYWN0aXZlIHBhcmVudCBub2RlICovXHJcbiAgcHVibGljIGFjdGl2ZVBhcmVudE5vZGU6IE5hdk5vZGU7XHJcblxyXG4gIC8qKiBUaGUgY3VycmVudCBhY3RpdmUgc3ViIG5vZGUgKi9cclxuICBwdWJsaWMgYWN0aXZlU3ViTm9kZTogU3ViTmF2Tm9kZXM7XHJcblxyXG4gIC8qKiBUcnVlIGlmIHRoZSBleHBhbnNpb24gcGFuZWwgaXMgb3BlbiAqL1xyXG4gIHB1YmxpYyBwYW5lbE9wZW5TdGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogVGhlIGZvb3RlciBuYXZpZ2F0aW9uIGRhdGEgKi9cclxuICBwdWJsaWMgZm9vdGVyTmF2aWdhdGlvbkRhdGE6IE5hdk5vZGVbXVxyXG5cclxuICAvKiogdXNlciBuYW1lICoqL1xyXG4gIHB1YmxpYyB1c2VyTmFtZTogc3RyaW5nO1xyXG5cclxuICAvKiogVGhlIGNvbmZpZyBvYnNlcnZhYmxlICovXHJcbiAgcHVibGljIGNvbmZpZyQ6IE9ic2VydmFibGU8QmFzZUNvbmZpZz47XHJcblxyXG4gIC8qKiBUaGUgcGFyZW50IG5vZGUgaW5kZXggdG8gYmUgc2V0IHdoZW4gbmF2IGlzIHRvZ2dsZWQgdG8gcHJvZ3Jlc3MgbWVudSBzdHlsZSAqL1xyXG4gIHB1YmxpYyB0b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4OiBudW1iZXI7XHJcblxyXG4gIC8qKiBUaGUgY2hpbGQgbm9kZSBpbmRleCB0byBiZSBzZXQgd2hlbiBuYXYgaXMgdG9nZ2xlZCB0byBwcm9ncmVzcyBtZW51IHN0eWxlICovXHJcbiAgcHVibGljIHRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleDogbnVtYmVyO1xyXG5cclxuICAvKiogdGhlIG1vYmlsZSBxdWVyeSBsaXN0ZW5lcjIgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IF9tb2JpbGVRdWVyeUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xyXG5cclxuICAvKiogVGhlIG5hdiBiaW5kIHN1YnNjcmlwdGlvbiAqL1xyXG4gIHByaXZhdGUgbmF2QmluZFN1YjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAvKiogVGhlIG1lc3NhZ2UgdG8gZGlzcGxheSAqL1xyXG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBXaGV0aGVyIHdlIHNob3VsZCB0aGUgbWVzc2FnZSAqL1xyXG4gIHB1YmxpYyBzaG93TWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogV2hldGhlciBzaG91bGQgc2hvdyBjaGVjayBtYXJrIG9yIG5vdCAqL1xyXG4gIHB1YmxpYyBzaG93Q2hlY2tNYXJrOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqIFRoZSBuYXYgYmluZCBzdWJzY3JpcHRpb24gKi9cclxuICBwcml2YXRlIGxvZ0luU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIC8qKiBUaGUgY291bnQgb2YgZm9vdGVyIGl0ZW1zKi9cclxuICBwdWJsaWMgZm9vdGVySXRlbUNvdW50OiBudW1iZXI7XHJcblxyXG4gIC8qKiBUaGUgYmFubmVyIHN1YnNjcmlwdGlvbiAqL1xyXG4gIHByaXZhdGUgYmFubmVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIC8qKiBUaGUgY29uZmlnIHN1YnNjcmlwdGlvbiAqL1xyXG4gIHB1YmxpYyBjb25maWdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgLyoqIFRoZSBzaWRlbmF2IHN1YnNjcmlwdGlvbiAqL1xyXG4gIHByaXZhdGUgc2lkZU5hdlN1YjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAvKipcclxuICAgKiB0aGUgY29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgdGhlIGNoYW5nZSBkZXRlY3RvciByZWZlcmVuY2VcclxuICAgKiBAcGFyYW0gbWVkaWEgdGhlIG1lZGlhIG1hdGNoZXJcclxuICAgKiBAcGFyYW0gcm91dGVyIFRoZSByb3V0ZXJcclxuICAgKiBAcGFyYW0gYmFubmVyU2VydmljZSBUaGUgQmFubmVyIFNlcnZpY2VcclxuICAgKiBAcGFyYW0gYWN0aXZhdGVkUm91dGUgVGhlIGFjdGl2YXRlZCByb3V0ZVxyXG4gICAqIEBwYXJhbSBjb25maWdTZXJ2aWNlIFRoZSBjb25maWcgc2VydmljZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcmVhZG9ubHkgbWVkaWE6IE1lZGlhTWF0Y2hlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGJhbm5lclNlcnZpY2U6IEJhbm5lclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhvcml6YXRpb25TZXJ2aWNlOiBBdXRob3JpemF0aW9uU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQmFzZUNvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMubW9iaWxlUXVlcnkgPSBtZWRpYS5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOiA5NTlweCknKTtcclxuICAgIHRoaXMuX21vYmlsZVF1ZXJ5TGlzdGVuZXIgPSAoKSA9PiB7XHJcbiAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgLy8gY2xvc2UgdGhlIHNpZGVuYXYgd2hlbiBzY3JlZW4gc2l6ZSBpcyBjaGFuZ2VkXHJcbiAgICAgIGlmICghdGhpcy5tb2JpbGVRdWVyeS5tYXRjaGVzICYmIHRoaXMuc2V0dGluZ3MubWVudVN0eWxlID09PSAncHJvZ3Jlc3MnKSB7XHJcbiAgICAgICAgdGhpcy5zaWRlbmF2LmNsb3NlKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICAvLyBiZWxvdyBpZiBzdGF0ZW1lbnQgaXMgZm9yIGVkZ2Ugc3VwcG9ydCBzaW5jZSBhZGRFdmVudExpc3RlbmVyIGRvZXNuJ3QgZXhpc3QgZm9yIE1lZGlhUXVlcnlMaXN0c1xyXG4gICAgaWYgKHRoaXMubW9iaWxlUXVlcnkuYWRkRXZlbnRMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLm1vYmlsZVF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuX21vYmlsZVF1ZXJ5TGlzdGVuZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubW9iaWxlUXVlcnkuYWRkTGlzdGVuZXIodGhpcy5fbW9iaWxlUXVlcnlMaXN0ZW5lcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogT24gSW5pdCAtIGNvbmZpZ3VyZSB0aGUgc2V0dGluZ3MgKi9cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5iYW5uZXJTdWJzY3JpcHRpb24uYWRkKHRoaXMuYmFubmVyU2VydmljZS5zaG93QmFubmVyJC5zdWJzY3JpYmUodmFsID0+IHRoaXMuc2hvd01lc3NhZ2UgPSB2YWwpKTtcclxuICAgIHRoaXMuYmFubmVyU3Vic2NyaXB0aW9uLmFkZCh0aGlzLmJhbm5lclNlcnZpY2UubWVzc2FnZSQuc3Vic2NyaWJlKHZhbCA9PiB0aGlzLm1lc3NhZ2UgPSB2YWwpKTtcclxuICAgIHRoaXMuYmFubmVyU3Vic2NyaXB0aW9uLmFkZCh0aGlzLmJhbm5lclNlcnZpY2Uuc2hvd0NoZWNrTWFyayQuc3Vic2NyaWJlKHZhbCA9PiB0aGlzLnNob3dDaGVja01hcmsgPSB2YWwpKTtcclxuXHJcbiAgICB0aGlzLmZvb3Rlck5hdmlnYXRpb25EYXRhID0gdGhpcy5uYXZpZ2F0aW9uRGF0YT8uZmlsdGVyKG5vZGUgPT4gbm9kZT8uYWx0TG9jYXRpb24gPT0gdHJ1ZSk7XHJcbiAgICB0aGlzLmZvb3Rlckl0ZW1Db3VudCA9IHRoaXMuZm9vdGVyTmF2aWdhdGlvbkRhdGEgPyB0aGlzLmZvb3Rlck5hdmlnYXRpb25EYXRhLmxlbmd0aCA6IDA7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25EYXRhID0gdGhpcy5uYXZpZ2F0aW9uRGF0YT8uZmlsdGVyKG5vZGUgPT4gbm9kZT8uYWx0TG9jYXRpb24gIT0gdHJ1ZSk7XHJcblxyXG4gICAgLy8gaWYgcGFyZW50cyBoYXZlIG5vIHJvdXRlLCBncmFiIGZpcnN0IHJvdXRlIG9mIGNoaWxkXHJcbiAgICB0aGlzLm5hdmlnYXRpb25EYXRhPy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICBpZiAoIW4ucm91dGUpIHtcclxuICAgICAgICBuLnJvdXRlID0gbi5zdWJOb2RlcyAmJiBuLnN1Yk5vZGVzLmxlbmd0aCA+IDAgPyBuLnN1Yk5vZGVzWzBdLnJvdXRlIDogdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVuYWJsZSBhbGwgcGFnZXMgYnkgZGVmYXVsdFxyXG4gICAgICBpZiAobi5pc0Rpc2FibGVkID09IG51bGwpIHtcclxuICAgICAgICBuLmlzRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5pbml0QmFzaWNTZXR0aW5ncygpO1xyXG4gICAgdGhpcy5pbml0QWR2YW5jZWRTZXR0aW5ncygpO1xyXG4gICAgdGhpcy5pbml0VGhlbWVTZXR0aW5ncygpO1xyXG5cclxuICAgIC8vIGluaXQgYmluZGluZyBmb3IgcHJvZ3Jlc3MgbmF2XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5tZW51U3R5bGUgPT09ICdwcm9ncmVzcycpIHtcclxuICAgICAgLy8gc2V0IHRoZSBmaXJzdCBub2RlIGFuZCBjaGlsZCBub2RlIGFzIHZpc2l0ZWRcclxuICAgICAgaWYgKHRoaXMubmF2aWdhdGlvbkRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkRhdGFbMF0udmlzaXRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnJvdXRlKTtcclxuICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uRGF0YVswXS5zdWJOb2RlcyAmJiB0aGlzLm5hdmlnYXRpb25EYXRhWzBdLnN1Yk5vZGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkRhdGFbMF0uc3ViTm9kZXNbMF0udmlzaXRlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlKHRoaXMubmF2aWdhdGlvbkRhdGFbMF0uc3ViTm9kZXNbMF0ucm91dGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gc2V0IGluaXRpYWwgcHJvZ3Jlc3MgYmFyXHJcbiAgICAgIHRoaXMubmF2UHJvZ3Jlc3NDb3VudCA9ICh0aGlzLnNlbGVjdGVkUGFyZW50SW5kZXggKyAxKSAvIHRoaXMubmF2aWdhdGlvbkRhdGEubGVuZ3RoICogMTAwO1xyXG5cclxuXHJcbiAgICAgIHRoaXMubmF2QmluZFN1Yi5hZGQoXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBmaW5kIHBhcmVudCBpbmRleCB3aXRoIGFjdGl2ZSBjaGlsZFxyXG4gICAgICAgICAgICB0aGlzLmdldEFjdGl2ZVBhcmVudEFuZENoaWxkKGV2ZW50LnVybCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5zZXR0aW5ncy5hbGxvd05hdlRvZ2dsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2dJblN1YnNjcmlwdGlvbiA9IHRoaXMuYXV0aG9yaXphdGlvblNlcnZpY2UuaXNMb2dnZWRJbiQuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy51c2VyTmFtZSA9IHRoaXMuYXV0aG9yaXphdGlvblNlcnZpY2UudXNlck5hbWUoKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnU3Vic2NyaXB0aW9uID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyQuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XHJcbiAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWc/Lm5hdmlnYXRpb24/Lm5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhID0gY29uZmlnPy5uYXZpZ2F0aW9uPy5ub2RlcztcclxuICAgICAgICAgIGlmIChjb25maWc/Lm5hdmlnYXRpb24/LnNldHRpbmdzPy5yZXNldE5hdikge1xyXG4gICAgICAgICAgICB0aGlzLm5hdlByb2dyZXNzQ291bnQgPSAwO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50SW5kZXggPSAwO1xyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlKHRoaXMubmF2aWdhdGlvbkRhdGFbMF0ucm91dGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGVwcGVyKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcGVyLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlubmVyU3RlcHBlcnM/LmZvckVhY2goc3RlcHBlciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHN0ZXBwZXIuc2VsZWN0ZWRJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIHN0ZXBwZXIucmVzZXQoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkRhdGEuZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICBuLnZpc2l0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICBuLmNvbXBsZXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgbi5zdWJOb2Rlcz8uZm9yRWFjaChzID0+IHtcclxuICAgICAgICAgICAgICAgIHMudmlzaXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgcy5jb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyByZXNldCBiYWNrIHRvIGZhbHNlIHRvIGF2b2lkIG11bHRpcGxlIHRyaWdnZXJzIG9uIGZ1dHVyZSBjYWxsc1xyXG4gICAgICAgICAgICBjb25maWcubmF2aWdhdGlvbi5zZXR0aW5ncy5yZXNldE5hdiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gY29uZmlnO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGlmIHRoZSB2YWx1ZXMgd2VyZSBjaGFuZ2VkIGFuZCBub3QgbnVsbCwgaXQgbWVhbnMgdGhhdCB0aGUgbmF2IHdhcyB0b2dnbGVkIHRvIHByb2dyZXNzXHJcbiAgICAgICAgICBpZiAoY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleCAhPSBudWxsXHJcbiAgICAgICAgICAgICYmIHRoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleCAhPSBjb25maWc/Lm5hdmlnYXRpb24/LnNldHRpbmdzPy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XHJcbiAgICAgICAgICAgICYmIHRoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4ICE9IGNvbmZpZz8ubmF2aWdhdGlvbj8uc2V0dGluZ3M/LnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleFxyXG4gICAgICAgICAgICAmJiBjb25maWc/Lm5hdmlnYXRpb24/LnNldHRpbmdzPy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXggIT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4ID0gY29uZmlnLm5hdmlnYXRpb24uc2V0dGluZ3MudG9nZ2xlUHJvZ3Jlc3NOYXZQYXJlbnRJbmRleDtcclxuICAgICAgICAgICAgdGhpcy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXggPSBjb25maWcubmF2aWdhdGlvbi5zZXR0aW5ncy50b2dnbGVQcm9ncmVzc05hdkNoaWxkSW5kZXg7XHJcblxyXG4gICAgICAgICAgICAvLyBhZGQgdGhlIHJvdXRlciBzdWJcclxuICAgICAgICAgICAgdGhpcy5uYXZCaW5kU3ViLmFkZChcclxuICAgICAgICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIGZpbmQgcGFyZW50IGluZGV4IHdpdGggYWN0aXZlIGNoaWxkXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWN0aXZlUGFyZW50QW5kQ2hpbGQoZXZlbnQudXJsKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGlmIHRoZSBjaGlsZCBub2RlIGluZGV4IGlzIHZhbGlkXHJcbiAgICAgICAgICAgIGlmIChjb25maWcubmF2aWdhdGlvbi5ub2Rlc1t0aGlzLnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXhdLnN1Yk5vZGVzPy5sZW5ndGggPiB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Tm9kZVN0YXRlcyhjb25maWcubmF2aWdhdGlvbi5ub2Rlc1t0aGlzLnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXhdLFxyXG4gICAgICAgICAgICAgICAgY29uZmlnLm5hdmlnYXRpb24ubm9kZXNbdGhpcy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XS5zdWJOb2Rlc1t0aGlzLnRvZ2dsZVByb2dyZXNzTmF2Q2hpbGRJbmRleF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Tm9kZVN0YXRlcyhjb25maWcubmF2aWdhdGlvbi5ub2Rlc1t0aGlzLnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXhdLCBudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgaW5kZXhlc1xyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVByb2dyZXNzTmF2UGFyZW50SW5kZXggPSBjb25maWc/Lm5hdmlnYXRpb24/LnNldHRpbmdzPy50b2dnbGVQcm9ncmVzc05hdlBhcmVudEluZGV4XHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4ID0gY29uZmlnPy5uYXZpZ2F0aW9uPy5zZXR0aW5ncz8udG9nZ2xlUHJvZ3Jlc3NOYXZDaGlsZEluZGV4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogTGlmZSBjeWNsZSBob29rIGZvciBhZnRlciBjb21wb25lbnQgdmlldyBpbml0aWFsaXphdGlvbiAqL1xyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5tZW51U3R5bGUgPT09ICdzdGVwcGVyJykge1xyXG4gICAgICB0aGlzLmJpbmRTdGVwcGVyVG9Sb3V0ZXMoKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdGVwcGVyLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBzdGVwLnNlbGVjdCA9ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGUodGhpcy5uYXZpZ2F0aW9uRGF0YVtpbmRleF0ucm91dGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaW5uZXJTdGVwcGVycy5mb3JFYWNoKChzdGVwcGVyLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgc3RlcHBlci5zdGVwcy5mb3JFYWNoKChzdGVwLCBqaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgc3RlcC5zZWxlY3QgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENoaWxkSW5kZXhlc1tpbmRleF0gPSBqaW5kZXg7XHJcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZSh0aGlzLm5hdmlnYXRpb25EYXRhW2luZGV4XS5zdWJOb2Rlc1tqaW5kZXhdLnJvdXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaWRlTmF2U3ViID0gdGhpcy5zaWRlbmF2Lm9wZW5lZENoYW5nZS5zdWJzY3JpYmUoZHJhd2VyU3RhdGUgPT4ge1xyXG4gICAgICB0aGlzLmlzTmF2T3BlbiA9IGRyYXdlclN0YXRlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogT24gRGVzdHJveSAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9iaWxlUXVlcnkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5fbW9iaWxlUXVlcnlMaXN0ZW5lcik7XHJcbiAgICB0aGlzLm5hdkJpbmRTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMubG9nSW5TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuYmFubmVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmNvbmZpZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zaWRlTmF2U3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb2JpbGUgU3ViTmF2IC0gb3BlbiB0aGUgU3ViTmF2XHJcbiAgICogQHBhcmFtIG5hdiB0aGUgbmF2IGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBTdWJOYXZcclxuICAgKi9cclxuICBwdWJsaWMgb3Blbk1vYmlsZVN1Yk5hdihuYXY6IE5hdk5vZGUpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNNb2JpbGVTdWJOYXZPcGVuID0gdHJ1ZTtcclxuICAgIHRoaXMuY3VycmVudE1vYmlsZU5hdiA9IG5hdjtcclxuICAgIHRoaXMuc2lkZW5hdi5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNb2JpbGUgU3ViTmF2IC0gY2xvc2VzIHRoZSBTdWJOYXZcclxuICAgKi9cclxuICBwdWJsaWMgY2xvc2VNb2JpbGVTdWJOYXYoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTW9iaWxlU3ViTmF2T3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaWRlbmF2LmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0aGVtZSBjb2xvclxyXG4gICAqIEBwYXJhbSB2YXJpYWJsZSB0aGUgY3NzIHZhcmlhYmxlIG5hbWVcclxuICAgKiBAcGFyYW0gY29sb3IgdGhlIGNvbG9yXHJcbiAgICovXHJcbiAgcHVibGljIHNldFRoZW1lQ29sb3IodmFyaWFibGU6IHN0cmluZywgY29sb3I6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGAtLXNvZi1uYXYtJHt2YXJpYWJsZX1gLCBjb2xvcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHRoZSBzdGVwIHN0YXRlXHJcbiAgICogQHBhcmFtIHBhcmVudEluZGV4IFRoZSBwYXJlbnQgaW5kZXhcclxuICAgKiBAcGFyYW0gY2hpbGRJbmRleCBUaGUgY2hpbGQgaW5kZXhcclxuICAgKiBAcmV0dXJucyBUaGUgc3RlcCBzdGF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZXRlcm1pbmVTdGVwU3RhdGUocGFyZW50SW5kZXg6IG51bWJlciwgY2hpbGRJbmRleDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIC8vIG5vdCBwYXNzZWQgJiYgbm90IGFjdGl2ZVxyXG4gICAgaWYgKGNoaWxkSW5kZXggPT09IC0xKSB7XHJcbiAgICAgIGlmICghdGhpcy5zdGVwcGVyKSB7XHJcbiAgICAgICAgcmV0dXJuICdudW1iZXInO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIG5vdCBwYXNzZWQgJiYgYWN0aXZlXHJcbiAgICAgIGlmIChwYXJlbnRJbmRleCA9PT0gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXgpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhW3BhcmVudEluZGV4XS52aXNpdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHBhc3NlZCBidXQgbmF2IGJhY2tcclxuICAgICAgZWxzZSBpZiAocGFyZW50SW5kZXggPiB0aGlzLnN0ZXBwZXIuc2VsZWN0ZWRJbmRleCAmJiB0aGlzLm5hdmlnYXRpb25EYXRhW3BhcmVudEluZGV4XS52aXNpdGVkKSB7XHJcbiAgICAgICAgdGhpcy5zdGVwcGVyLnN0ZXBzLmZpbmQoKHMsIGluZGV4KSA9PiBpbmRleCA9PT0gcGFyZW50SW5kZXgpXHJcbiAgICAgICAgICAucmVzZXQoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHBhc3NlZCAmJiBub3QgYWN0aXZlXHJcbiAgICAgIGVsc2UgaWYgKHBhcmVudEluZGV4IDwgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXgpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhW3BhcmVudEluZGV4XS52aXNpdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuICdkb25lJztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ251bWJlcic7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuaW5uZXJTdGVwcGVycykge1xyXG4gICAgICAgIHJldHVybiAnbm9uZSc7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaW5uZXJTdGVwcGVyID0gdGhpcy5pbm5lclN0ZXBwZXJzLmZpbmQoKHMsIGluZGV4KSA9PiBpbmRleCA9PT0gcGFyZW50SW5kZXgpO1xyXG4gICAgICBpZiAoY2hpbGRJbmRleCA9PT0gaW5uZXJTdGVwcGVyLnNlbGVjdGVkSW5kZXgpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRpb25EYXRhW3BhcmVudEluZGV4XS5zdWJOb2Rlc1tjaGlsZEluZGV4XS52aXNpdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGNoaWxkSW5kZXggPiBpbm5lclN0ZXBwZXIuc2VsZWN0ZWRJbmRleCAmJiB0aGlzLm5hdmlnYXRpb25EYXRhW3BhcmVudEluZGV4XS5zdWJOb2Rlc1tjaGlsZEluZGV4XS52aXNpdGVkKSB7XHJcbiAgICAgICAgaW5uZXJTdGVwcGVyLnN0ZXBzLmZpbmQoKHMsIGluZGV4KSA9PiBpbmRleCA9PT0gY2hpbGRJbmRleClcclxuICAgICAgICAgIC5yZXNldCgpO1xyXG5cclxuICAgICAgICByZXR1cm4gJ2FjdGl2ZSc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoY2hpbGRJbmRleCA8IGlubmVyU3RlcHBlci5zZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRGF0YVtwYXJlbnRJbmRleF0uc3ViTm9kZXNbY2hpbGRJbmRleF0udmlzaXRlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIHJldHVybiAnZG9uZSc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICdub25lJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcm92aWRlZCByb3V0ZVxyXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgcm91dGVcclxuICAgKi9cclxuICBwdWJsaWMgbmF2aWdhdGUocm91dGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1mbG9hdGluZy1wcm9taXNlc1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChyb3V0ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZXMgdG8gZ2l2ZW4gc3RlcFxyXG4gICAqIEBwYXJhbSBzdGVwTnVtYmVyIFRoZSBzdGVwIG51bWJlciB0byBuYXZpZ2F0ZSB0b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvU3RlcChzdGVwTnVtYmVyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChzdGVwTnVtYmVyIDwgdGhpcy5zZWxlY3RlZFBhcmVudEluZGV4KSB7XHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tZmxvYXRpbmctcHJvbWlzZXNcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLm5hdmlnYXRpb25EYXRhW3N0ZXBOdW1iZXJdLnJvdXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGFjdGl2ZSBwYXJlbnQgYW5kIGNoaWxkIG5vZGVzIFxyXG4gICAqIEBwYXJhbSB1cmwgVGhlIHJvdXRlciB1cmxcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0QWN0aXZlUGFyZW50QW5kQ2hpbGQodXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBjaGlsZEluZGV4O1xyXG4gICAgbGV0IHBhcmVudEluZGV4ID0gdGhpcy5uYXZpZ2F0aW9uRGF0YS5maW5kSW5kZXgobiA9PiB7XHJcbiAgICAgIGNoaWxkSW5kZXggPSBuLnN1Yk5vZGVzPy5maW5kSW5kZXgocyA9PiB1cmwuaW5jbHVkZXMocy5yb3V0ZS5yZXBsYWNlKCcuJywgJycpKSk7XHJcbiAgICAgIHJldHVybiBjaGlsZEluZGV4ID4gLTEgfHwgdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKG4ucm91dGUucmVwbGFjZSgnLicsICcnKSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAocGFyZW50SW5kZXggPT0gLTEpIHtcclxuICAgICAgcGFyZW50SW5kZXggPSAwXHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0IHRoZSBhY3RpdmUgcGFyZW50IG5vZGUgYW5kIHN1YiBub2RlXHJcbiAgICB0aGlzLmFjdGl2ZVBhcmVudE5vZGUgPSB0aGlzLm5hdmlnYXRpb25EYXRhW3BhcmVudEluZGV4XTtcclxuICAgIHRoaXMuYWN0aXZlU3ViTm9kZSA9IGNoaWxkSW5kZXggPiAtMSAmJiB0aGlzLmFjdGl2ZVBhcmVudE5vZGUuc3ViTm9kZXMubGVuZ3RoID4gMCA/IHRoaXMuYWN0aXZlUGFyZW50Tm9kZS5zdWJOb2Rlc1tjaGlsZEluZGV4XSA6IG51bGw7XHJcblxyXG4gICAgLy8gY29tcHV0ZSB0aGUgcHJvZ3Jlc3MgYmFyXHJcbiAgICB0aGlzLm5hdlByb2dyZXNzQ291bnQgPSAocGFyZW50SW5kZXggKyAxKSAvIHRoaXMubmF2aWdhdGlvbkRhdGEubGVuZ3RoICogMTAwO1xyXG5cclxuICAgIC8vIHNldCB0aGUgbm9kZSBzdGF0ZXNcclxuICAgIHRoaXMuc2V0Tm9kZVN0YXRlcyh0aGlzLmFjdGl2ZVBhcmVudE5vZGUsIHRoaXMuYWN0aXZlU3ViTm9kZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBjb21wbGV0ZSBhbmQgdmlzaXRlZCBzdGF0ZXMgZm9yIGFsbCBOYXZOb2RlcyBcclxuICAgKiBAcGFyYW0gcGFyZW50Tm9kZSBUaGUgcGFyZW50IG5vZGVcclxuICAgKiBAcGFyYW0gY2hpbGROb2RlIFRoZSBjaGlsZCBub2RlXHJcbiAgICovXHJcbiAgcHVibGljIHNldE5vZGVTdGF0ZXMocGFyZW50Tm9kZTogTmF2Tm9kZSwgY2hpbGROb2RlOiBTdWJOYXZOb2Rlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoaWxkTm9kZSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVN1Yk5vZGUgPSBjaGlsZE5vZGU7XHJcbiAgICAgIGxldCBjaGlsZEluZGV4ID0gcGFyZW50Tm9kZS5zdWJOb2Rlcy5pbmRleE9mKGNoaWxkTm9kZSkgPiAtMSA/IHBhcmVudE5vZGUuc3ViTm9kZXMuaW5kZXhPZihjaGlsZE5vZGUpIDogMDtcclxuICAgICAgLy8gYWxsIHN1Ym5vZGVzIGJlZm9yZSB0aGlzIHdlcmUgY29tcGxldGVkIGFuZCB2aXNpdGVkXHJcbiAgICAgIHBhcmVudE5vZGUuc3ViTm9kZXMuc2xpY2UoMCwgY2hpbGRJbmRleCkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBlbGVtZW50LmNvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICBlbGVtZW50LnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlUGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XHJcbiAgICAvLyBzZXQgYWxsIHByZXZpb3VzIG5vZGVzIHRvIGNvbXBsZXRlXHJcbiAgICBsZXQgcGFyZW50SW5kZXggPSB0aGlzLm5hdmlnYXRpb25EYXRhLmluZGV4T2YocGFyZW50Tm9kZSkgPiAtMSA/IHRoaXMubmF2aWdhdGlvbkRhdGEuaW5kZXhPZihwYXJlbnROb2RlKSA6IDA7XHJcbiAgICB0aGlzLm5hdmlnYXRpb25EYXRhLnNsaWNlKDAsIHBhcmVudEluZGV4KS5mb3JFYWNoKGQgPT4ge1xyXG4gICAgICBkLmNvbXBsZXRlID0gdHJ1ZTtcclxuXHJcbiAgICAgIC8vIHNldCBhbGwgc3Vibm9kZXMgb2YgcHJldmlvdXMgbm9kZXMgdG8gY29tcGxldGUgb25seSBpZiB0aGUgbm9kZSB3YXMgbm90IGRpc2FibGVkXHJcbiAgICAgIGlmICghZC5pc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgZC5zdWJOb2Rlcy5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgICAgcy5jb21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgICBzLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAvLyBzZXQgdGhlIGN1cnJlbnQgbm9kZXMgYXMgdmlzaXRlZFxyXG4gICAgcGFyZW50Tm9kZS52aXNpdGVkID0gdHJ1ZTtcclxuICAgIGlmIChjaGlsZE5vZGUpIHtcclxuICAgICAgY2hpbGROb2RlLnZpc2l0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSBleHBhbnNpb24gcGFuZWwgYW5kIG5hdmlnYXRlcyB0byB0aGUgZ2l2ZW4gbm9kZVxyXG4gICAqIEBwYXJhbSBlbCBUaGUgbWF0IGV4cGFuc2lvbiBwYW5lbCBcclxuICAgKiBAcGFyYW0gaW5kZXggVGhlIHBhcmVudCBub2RlIGluZGV4IFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkaXNhYmxlUGFuZWwoZWwsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGVsLmNsb3NlKCk7XHJcbiAgICB0aGlzLm5hdmlnYXRlKHRoaXMubmF2aWdhdGlvbkRhdGFbaW5kZXhdLnJvdXRlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogSGlkZXMgdGhlIG1lc3NhZ2VcclxuICAqL1xyXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93TWVzc2FnZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ncyBvdXQgb25jZSB1c2VyIGlzIGF1dGhvcml6ZWRcclxuICAgKiAqL1xyXG4gIHB1YmxpYyBsb2dPdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dGhvcml6YXRpb25TZXJ2aWNlLmF1dGhvcml6ZVVzZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlcyBtb2JpbGUgbmF2aWdhdGlvbiBhZnRlciBzZWxlY3Rpb24uXHJcbiAgICovXHJcbiAgcHVibGljIGNsb3NlTmF2aWdhdGlvbkZvck1vYmlsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm1vYmlsZVF1ZXJ5Lm1hdGNoZXMpIHtcclxuICAgICAgdGhpcy5zaWRlbmF2LmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJcyB0aGUgbmF2aWdhdGlvbiBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBpc05hdlNlbGVjdGVkKG5vZGU6IE5hdk5vZGUgfCBTdWJOYXZOb2Rlcyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmlzQWN0aXZlKG5vZGUucm91dGUsIHtwYXRoczogJ2V4YWN0JywgcXVlcnlQYXJhbXM6ICdleGFjdCcsIGZyYWdtZW50OiAnaWdub3JlZCcsIG1hdHJpeFBhcmFtczogJ2lnbm9yZWQnfSk7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0cyB0aGUgd2lkdGggZm9yIHRoZSBzaWRlIG5hdiAqL1xyXG4gIHB1YmxpYyBzZXROYXZXaWR0aCh3aWR0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB3aWR0aC5pbmNsdWRlcygnJScpIHx8IHdpZHRoLmluY2x1ZGVzKCdweCcpID8gd2lkdGggOiB3aWR0aCArICdweCc7XHJcbiAgfVxyXG5cclxuICAvKiogQmluZHMgdGhlIHN0ZXBwZXIgdG8gdGhlIHJvdXRlciAqL1xyXG4gIHByaXZhdGUgYmluZFN0ZXBwZXJUb1JvdXRlcygpOiB2b2lkIHtcclxuICAgIC8vIGZpbmQgcGFyZW50c1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIGZpbmQgcGFyZW50IGluZGV4IHdpdGggYWN0aXZlIGNoaWxkXHJcbiAgICAgIGxldCBjaGlsZEluZGV4O1xyXG4gICAgICBsZXQgcGFyZW50SW5kZXggPSB0aGlzLm5hdmlnYXRpb25EYXRhLmZpbmRJbmRleChuID0+IHtcclxuICAgICAgICBjaGlsZEluZGV4ID0gbi5zdWJOb2Rlcz8uZmluZEluZGV4KHMgPT4gdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKHMucm91dGUucmVwbGFjZSgnLicsICcnKSkpO1xyXG5cclxuICAgICAgICByZXR1cm4gY2hpbGRJbmRleCA+IC0xIHx8IHRoaXMucm91dGVyLnVybC5pbmNsdWRlcyhuLnJvdXRlLnJlcGxhY2UoJy4nLCAnJykpO1xyXG4gICAgICB9KTtcclxuICAgICAgLy8gaWYgbm8gY2hpbGRyZW4gb3Igbm8gaW5kZXhlcyBhY3RpdmF0ZSBmaXJzdCBwYXJlbnRcclxuICAgICAgaWYgKHBhcmVudEluZGV4ID09PSAtMSkge1xyXG4gICAgICAgIHBhcmVudEluZGV4ID0gMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudEluZGV4ID0gcGFyZW50SW5kZXg7XHJcbiAgICAgIGlmIChjaGlsZEluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLmlubmVyU3RlcHBlcnMuZmluZCgoaXMsIGluZGV4KSA9PiBpbmRleCA9PT0gcGFyZW50SW5kZXgpLnNlbGVjdGVkSW5kZXggPSBjaGlsZEluZGV4O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBmaW5kIHBhcmVudHNcclxuICAgIHRoaXMubmF2QmluZFN1Yi5hZGQoXHJcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcbiAgICAgICAgICAvLyBmaW5kIHBhcmVudCBpbmRleCB3aXRoIGFjdGl2ZSBjaGlsZFxyXG4gICAgICAgICAgbGV0IGNoaWxkSW5kZXg7XHJcbiAgICAgICAgICBsZXQgcGFyZW50SW5kZXggPSB0aGlzLm5hdmlnYXRpb25EYXRhLmZpbmRJbmRleChuID0+IHtcclxuICAgICAgICAgICAgY2hpbGRJbmRleCA9IG4uc3ViTm9kZXM/LmZpbmRJbmRleChzID0+IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzLmluY2x1ZGVzKHMucm91dGUucmVwbGFjZSgnLicsICcnKSkpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkSW5kZXggPiAtMSB8fCBldmVudC51cmxBZnRlclJlZGlyZWN0cy5pbmNsdWRlcyhuLnJvdXRlLnJlcGxhY2UoJy4nLCAnJykpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvLyBpZiBubyBjaGlsZHJlbiBvciBubyBpbmRleGVzIGFjdGl2YXRlIGZpcnN0IHBhcmVudFxyXG4gICAgICAgICAgaWYgKHBhcmVudEluZGV4ID09PSAtMSkge1xyXG4gICAgICAgICAgICBwYXJlbnRJbmRleCA9IDA7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudEluZGV4ID0gcGFyZW50SW5kZXg7XHJcbiAgICAgICAgICBpZiAoY2hpbGRJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5uZXJTdGVwcGVycy5maW5kKChpcywgaW5kZXgpID0+IGluZGV4ID09PSBwYXJlbnRJbmRleCkuc2VsZWN0ZWRJbmRleCA9IGNoaWxkSW5kZXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKiogSW5pdGlhbGl6ZXMgdGhlIGFkdmFuY2VkIG5hdiBzZXR0aW5ncyAqL1xyXG4gIHByaXZhdGUgaW5pdEFkdmFuY2VkU2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkdmFuY2VkU2V0dGluZ3MudG9wR2FwRGVza3RvcCA9IHRoaXMuYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBEZXNrdG9wIHx8IDA7XHJcbiAgICB0aGlzLmFkdmFuY2VkU2V0dGluZ3MudG9wR2FwTW9iaWxlID0gdGhpcy5hZHZhbmNlZFNldHRpbmdzLnRvcEdhcE1vYmlsZSB8fCB0aGlzLnNldHRpbmdzLmhlYWRlckhlaWdodDtcclxuICAgIHRoaXMuYWR2YW5jZWRTZXR0aW5ncy5tYXJnaW5Ub3BEZXNrdG9wID0gdGhpcy5hZHZhbmNlZFNldHRpbmdzLm1hcmdpblRvcERlc2t0b3AgfHwgMDtcclxuICAgIHRoaXMuYWR2YW5jZWRTZXR0aW5ncy5tYXJnaW5Ub3BNb2JpbGUgPSB0aGlzLmFkdmFuY2VkU2V0dGluZ3MubWFyZ2luVG9wTW9iaWxlIHx8IDA7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIEluaXRpYWxpemVzIHRoZSBuYXYgdGhlbWUgc2V0dGluZ3MgKi9cclxuICBwcml2YXRlIGluaXRUaGVtZVNldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmNvbnRlbnRCZ0NvbG9yID8gdGhpcy5zZXRUaGVtZUNvbG9yKCdjb250ZW50LWJnLWNvbG9yJywgdGhpcy50aGVtZVNldHRpbmdzLmNvbnRlbnRCZ0NvbG9yKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5mb250Q29sb3IgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2ZvbnQtY29sb3InLCB0aGlzLnRoZW1lU2V0dGluZ3MuZm9udENvbG9yKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5mb250Q29sb3IgPSB0aGlzLnRoZW1lU2V0dGluZ3MuZm9udENvbG9yIHx8ICcjMDAwJztcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5tb2JpbGVCZ0NvbG9yID0gdGhpcy50aGVtZVNldHRpbmdzLm1vYmlsZUJnQ29sb3IgfHwgJyNmZmZmZmYnO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmJnR3JhZGllbnRDb2xvcjEgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2JnLWdyYWRpZW50LWNvbG9yLTEnLCB0aGlzLnRoZW1lU2V0dGluZ3MuYmdHcmFkaWVudENvbG9yMSkgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MuYmdHcmFkaWVudENvbG9yMiA/IHRoaXMuc2V0VGhlbWVDb2xvcignYmctZ3JhZGllbnQtY29sb3ItMicsIHRoaXMudGhlbWVTZXR0aW5ncy5iZ0dyYWRpZW50Q29sb3IyKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5ib3JkZXJSaWdodENvbG9yID8gdGhpcy5zZXRUaGVtZUNvbG9yKCdib3JkZXItcmlnaHQtY29sb3InLCB0aGlzLnRoZW1lU2V0dGluZ3MuYm9yZGVyUmlnaHRDb2xvcikgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3MubGlzdEJvcmRlckNvbG9yID8gdGhpcy5zZXRUaGVtZUNvbG9yKCdsaXN0LWJvcmRlci1jb2xvcicsIHRoaXMudGhlbWVTZXR0aW5ncy5saXN0Qm9yZGVyQ29sb3IpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aGVtZVNldHRpbmdzLmhpZ2hsaWdodEdyYWRpZW50MSA/IHRoaXMuc2V0VGhlbWVDb2xvcignaGlnaGxpZ2h0LWdyYWRpZW50LTEnLCB0aGlzLnRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0R3JhZGllbnQxKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5oaWdobGlnaHRHcmFkaWVudDIgPyB0aGlzLnNldFRoZW1lQ29sb3IoJ2hpZ2hsaWdodC1ncmFkaWVudC0yJywgdGhpcy50aGVtZVNldHRpbmdzLmhpZ2hsaWdodEdyYWRpZW50MikgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRoZW1lU2V0dGluZ3Muc3ViSGlnaGxpZ2h0Qm9yZGVyQ29sb3IgP1xyXG4gICAgICB0aGlzLnNldFRoZW1lQ29sb3IoJ3N1Yi1oaWdobGlnaHQtYm9yZGVyLWNvbG9yJywgdGhpcy50aGVtZVNldHRpbmdzLnN1YkhpZ2hsaWdodEJvcmRlckNvbG9yKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudGhlbWVTZXR0aW5ncy5zdWJIaWdobGlnaHRCZ0NvbG9yID9cclxuICAgICAgdGhpcy5zZXRUaGVtZUNvbG9yKCdzdWItaGlnaGxpZ2h0LWJnLWNvbG9yJywgdGhpcy50aGVtZVNldHRpbmdzLnN1YkhpZ2hsaWdodEJnQ29sb3IpIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqIEluaXRpYWxpemVzIHRoZSBiYXNpYyBuYXYgc2V0dGluZ3MgKi9cclxuICBwcml2YXRlIGluaXRCYXNpY1NldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXR0aW5ncy5mb250QXdlc29tZU1lbnVJY29uID0gdGhpcy5zZXR0aW5ncy5mb250QXdlc29tZU1lbnVJY29uIHx8ICdmYXMgZmEtYW5nbGUtZG91YmxlLWxlZnQnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5mb250QXdlc29tZU1lbnVJY29uQ2xvc2VkID0gdGhpcy5zZXR0aW5ncy5mb250QXdlc29tZU1lbnVJY29uQ2xvc2VkIHx8ICdmYXMgZmEtYW5nbGUtZG91YmxlLXJpZ2h0JztcclxuICAgIHRoaXMuc2V0dGluZ3MuYWxsb3dOYXZUb2dnbGUgPSB0aGlzLnNldHRpbmdzLmFsbG93TmF2VG9nZ2xlID09IG51bGwgPyB0cnVlIDogdGhpcy5zZXR0aW5ncy5hbGxvd05hdlRvZ2dsZTtcclxuICAgIHRoaXMuc2V0dGluZ3MubWFpbk1lbnVUZXh0ID8gdGhpcy5tYWluTWVudVRleHQgPSB0aGlzLnNldHRpbmdzLm1haW5NZW51VGV4dCA6IHRoaXMubWFpbk1lbnVUZXh0ID0gJ01haW4gTWVudSc7XHJcbiAgICB0aGlzLnNldHRpbmdzLmhlYWRlckhlaWdodCA9IHRoaXMuc2V0dGluZ3MuaGVhZGVySGVpZ2h0IHx8IDYwO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5tZW51QnV0dG9uU1JUZXh0ID0gdGhpcy5zZXR0aW5ncy5tZW51QnV0dG9uU1JUZXh0IHx8ICdNZW51IEJ1dHRvbic7XHJcbiAgICB0aGlzLnNldHRpbmdzLm1lbnVTdHlsZSA9IHRoaXMuc2V0dGluZ3MubWVudVN0eWxlIHx8ICdzdGF0aWMnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5kaXNwbGF5TnVtYmVycyA9IHRoaXMuc2V0dGluZ3MuZGlzcGxheU51bWJlcnMgPT0gbnVsbCA/IHRydWUgOiB0aGlzLnNldHRpbmdzLmRpc3BsYXlOdW1iZXJzO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25Db21wbGV0ZUljb24gPSB0aGlzLnNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkNvbXBsZXRlSWNvbiB8fCAnZmFzIGZhLWNoZWNrLWNpcmNsZSc7XHJcbiAgICB0aGlzLnNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkZ1dHVyZUljb24gPSB0aGlzLnNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkZ1dHVyZUljb24gfHwgJ2ZhciBmYS1jaXJjbGUnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25DdXJyZW50SWNvbiA9IHRoaXMuc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ3VycmVudEljb24gfHwgJ2ZhcyBmYS1jaXJjbGUnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5wcm9ncmVzc01lbnVDb21wbGV0ZUljb24gPSB0aGlzLnNldHRpbmdzLnByb2dyZXNzTWVudUNvbXBsZXRlSWNvbiB8fCAnZmFyIGZhLWNoZWNrJztcclxuICAgIHRoaXMuc2V0dGluZ3Muc2hvd1Byb2dyZXNzQmFyID0gdGhpcy5zZXR0aW5ncy5zaG93UHJvZ3Jlc3NCYXIgPT0gbnVsbCA/IHRydWUgOiB0aGlzLnNldHRpbmdzLnNob3dQcm9ncmVzc0JhclxyXG4gICAgdGhpcy5zZXR0aW5ncy5zaWRlTmF2V2lkdGhEZXNrdG9wID0gdGhpcy5zZXR0aW5ncy5zaWRlTmF2V2lkdGhEZXNrdG9wIHx8ICczNTAnO1xyXG4gICAgdGhpcy5zZXR0aW5ncy5zaWRlTmF2V2lkdGhNb2JpbGUgPSB0aGlzLnNldHRpbmdzLnNpZGVOYXZXaWR0aE1vYmlsZSB8fCAnMzUwJztcclxuICAgIHRoaXMuc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uID0gdGhpcy5zZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb24gfHwgZmFsc2U7XHJcbiAgICB0aGlzLnNldHRpbmdzLnByb2dyZXNzTWVudVdpZHRoID0gdGhpcy5zZXR0aW5ncy5wcm9ncmVzc01lbnVXaWR0aCB8fCAnMjgwJztcclxuICAgIHRoaXMuc2V0dGluZ3MudXNlQ3VzdG9tTW9iaWxlRm9vdGVyID0gdGhpcy5zZXR0aW5ncy51c2VDdXN0b21Nb2JpbGVGb290ZXIgIT0gbnVsbCA/IHRoaXMuc2V0dGluZ3MudXNlQ3VzdG9tTW9iaWxlRm9vdGVyIDogZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzb2YtYXItbmF2LWNvbnRhaW5lclwiXHJcbiAgW3N0eWxlLnRvcF09XCJtb2JpbGVRdWVyeS5tYXRjaGVzICYmIGFkdmFuY2VkU2V0dGluZ3MudG9wR2FwTW9iaWxlID8gYWR2YW5jZWRTZXR0aW5ncy50b3BHYXBNb2JpbGUgKyAncHgnIDogc2V0dGluZ3MuaGVhZGVySGVpZ2h0ICsgJ3B4J1wiXHJcbiAgW2NsYXNzLnNvZi1hci1uYXYtbW9iaWxlXT1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXNcIj5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd01lc3NhZ2VcIiBtLWEtMCBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIHN3cy1hbGVydC0tc2Vjb25kYXJ5IHJvbGU9XCJhbGVydFwiPlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICA8aSAqbmdJZj1cInNob3dDaGVja01hcmtcIiBtLXItNSBtLWwtNSBjbGFzcz1cImZhcyBmYS1jaGVjay1jaXJjbGUgaWNvbi1jb250YWluZXJcIj48L2k+XHJcbiAgICAgIDxwIGNsYXNzPVwibWVzc2FnZS1jb250YWluZXJcIiBtLXItNSBtLWwtNSBbaW5uZXJIdG1sXT1cIm1lc3NhZ2UgfCB0cmFuc2xhdGVcIj48L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgICAgPGJ1dHRvbiBpZD1cImJ0bkNsb3NlXCIgKGNsaWNrKT1cImhpZGUoKVwiIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidjb21tb24uY2xvc2UnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS10aW1lcyBmYS1sZ1wiPjwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGJ1dHRvbiBpZD1cInNvZi1hci1uYXYtYnRuLW1lbnVcIiBhcmlhLWxhYmVsPVwiTWVudSBCdXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXHJcbiAgICAoY2xpY2spPVwic25hdi50b2dnbGUoKVwiIGNsYXNzPVwic29mLWFyLW5hdi1tZW51LWJ0blwiXHJcbiAgICBbY2xhc3MuaGlkZGVuXT1cIiEobW9iaWxlUXVlcnkubWF0Y2hlcyB8fCBzZXR0aW5ncy5hbGxvd05hdlRvZ2dsZSkgfHwgc2V0dGluZ3MuaGlkZU5hdmlnYXRpb25cIj5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXNOYXZPcGVuOyBlbHNlIGNsb3NlZEljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cInNvZi1hci1uYXYtbWVudS1pY29uXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3tzZXR0aW5ncy5mb250QXdlc29tZU1lbnVJY29ufX0gbWVudS1pY29uXCI+PC9pPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPG5nLXRlbXBsYXRlICNjbG9zZWRJY29uPlxyXG4gICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cInNvZi1hci1uYXYtbWVudS1pY29uXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJ7e3NldHRpbmdzLmZvbnRBd2Vzb21lTWVudUljb25DbG9zZWR9fSBtZW51LWljb25cIj48L2k+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj57e3NldHRpbmdzLm1lbnVCdXR0b25TUlRleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPG1hdC1zaWRlbmF2LWNvbnRhaW5lciBhdXRvc2l6ZSBjbGFzcz1cInNvZi1hci1uYXYtc2lkZW5hdi1jb250YWluZXJcIiBbc3R5bGUubWFyZ2luVG9wLnB4XT1cIlxyXG4gICAgICBtb2JpbGVRdWVyeS5tYXRjaGVzID8gYWR2YW5jZWRTZXR0aW5ncy5tYXJnaW5Ub3BNb2JpbGUgOiBhZHZhbmNlZFNldHRpbmdzLm1hcmdpblRvcERlc2t0b3BcIj5cclxuICAgIDxtYXQtc2lkZW5hdiBbZGlzYWJsZUNsb3NlXT1cIiFtb2JpbGVRdWVyeS5tYXRjaGVzXCIgY2xhc3M9XCJzb2YtYXItbmF2LXNpZGVuYXZcIiAjc25hdlxyXG4gICAgICBbbW9kZV09XCJtb2JpbGVRdWVyeS5tYXRjaGVzID8gJ292ZXInIDogJ3NpZGUnXCIgW2ZpeGVkSW5WaWV3cG9ydF09XCJtb2JpbGVRdWVyeS5tYXRjaGVzXCJcclxuICAgICAgW2ZpeGVkVG9wR2FwXT1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgPyBhZHZhbmNlZFNldHRpbmdzLnRvcEdhcE1vYmlsZSA6IGFkdmFuY2VkU2V0dGluZ3MudG9wR2FwRGVza3RvcFwiXHJcbiAgICAgIFtvcGVuZWRdPVwiIW1vYmlsZVF1ZXJ5Lm1hdGNoZXMgJiYgIXNldHRpbmdzLmhpZGVOYXZpZ2F0aW9uICYmIHNldHRpbmdzLm1lbnVTdHlsZSE9PSdwcm9ncmVzcycgXCJcclxuICAgICAgW3N0eWxlLndpZHRoXT1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgPyBzZXROYXZXaWR0aChzZXR0aW5ncy5zaWRlTmF2V2lkdGhNb2JpbGUpIDogc2V0TmF2V2lkdGgoc2V0dGluZ3Muc2lkZU5hdldpZHRoRGVza3RvcClcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7YmFja2dyb3VuZDptb2JpbGVRdWVyeS5tYXRjaGVzID8gdGhlbWVTZXR0aW5ncz8ubW9iaWxlQmdDb2xvciA6IHVuZGVmaW5lZH1cIj5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFzZXR0aW5ncy5kaXNhYmxlVXNlcm5hbWVNb2JpbGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9iaWxlUXVlcnkubWF0Y2hlcyAmJiB1c2VyTmFtZSAmJiAhc2V0dGluZ3MuY3VzdG9tVXNlck5hbWVcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlci1uYW1lXCI+XHJcbiAgICAgICAgICAgIHt7dXNlck5hbWV9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2JpbGVRdWVyeS5tYXRjaGVzICYmIHNldHRpbmdzLmN1c3RvbVVzZXJOYW1lXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXItbmFtZVwiPlxyXG4gICAgICAgICAgICB7e3NldHRpbmdzLmN1c3RvbVVzZXJOYW1lIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gTmF2IEhlYWRlciBDb250ZW50IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibmF2LWhlYWRlci1jb250ZW50XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3NvZi1hci1uYXYtaGVhZGVyXVwiPiA8L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTdGF0aWMgTmF2aWdhdGlvbiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5hdi1jb250ZW50LWl0ZW0gc2lkZW5hdi1iYWNrZ3JvdW5kXCIgKm5nSWY9XCJzZXR0aW5ncy5tZW51U3R5bGUgPT09ICdzdGF0aWMnXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7J3BhZGRpbmctYm90dG9tLnB4JzogKGZvb3Rlckl0ZW1Db3VudCo2NCkrMTI4fVwiPlxyXG4gICAgICAgIDxuYXYgKm5nSWY9XCJzZXR0aW5ncy5tZW51U3R5bGUgPT09ICdzdGF0aWMnXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInbWFpbidcIj5cclxuICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBuYXYgb2YgbmF2aWdhdGlvbkRhdGFcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5zdWJOb2Rlcz8ubGVuZ3RoICYmICFuYXYuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWFjY29yZGlvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cIm5hdi5leHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbbmdDbGFzc109XCJ7ICdzb2YtYXItbmF2LXNlbGVjdGVkJzogaXNOYXZTZWxlY3RlZChuYXYpIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTmF2aWdhdGlvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgYSByb3V0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8ucm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW5hdi1saXN0IFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIiBbYXR0ci5yb2xlXT1cIm51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWl0ZW1cIiBtYXQtbGlzdC1pdGVtIFtyb3V0ZXJMaW5rXT1cIm5hdj8ucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3NvZi1hci1uYXYtYWN0aXZlLXJvdXRlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8uZm9udEF3ZXNvbWVJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJpY29uLXN0eWxpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tuYXY/LmZvbnRBd2Vzb21lSWNvbn19XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mLWFyLW5hdi1oZWFkZXItdGV4dFwiPnt7bmF2LnRleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSWYgdGhlcmUgaXMgbm90IGEgcm91dGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbmF2Py5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiIFthdHRyLnJvbGVdPVwibnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtaXRlbVwiIG1hdC1saXN0LWl0ZW0gW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzb2YtYXItbmF2LWFjdGl2ZS1yb3V0ZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LmZvbnRBd2Vzb21lSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7bmF2Py5mb250QXdlc29tZUljb259fVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvZi1hci1uYXYtaGVhZGVyLXRleHRcIj57e25hdi50ZXh0IHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN1Yk5hdiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCBbbmdDbGFzc109XCJ7ICdzb2YtYXItbmF2LXNlbGVjdGVkJzogaXNOYXZTZWxlY3RlZChzdWJuYXYpIH1cIiBjbGFzcz1cInN1Ym5hdi1jb250ZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiICpuZ0Zvcj1cImxldCBzdWJuYXYgb2YgbmF2Py5zdWJOb2Rlc1wiIChjbGljayk9XCJjbG9zZU5hdmlnYXRpb25Gb3JNb2JpbGUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwibnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtLW1hcmdpblwiIG1hdC1saXN0LWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3NvZi1hci1uYXYtc3ViLWFjdGl2ZS1yb3V0ZSddXCIgW3JvdXRlckxpbmtdPVwic3VibmF2LnJvdXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihuYXYudGV4dCB8IHRyYW5zbGF0ZSkgKyAnICcgKyAoc3VibmF2LnRleHQgfCB0cmFuc2xhdGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzb2YtYXItbmF2LWhlYWRlci10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKG5hdi50ZXh0IHwgdHJhbnNsYXRlKSArICcgJyArIChzdWJuYXYudGV4dCB8IHRyYW5zbGF0ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3VibmF2LnRleHQgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWFjY29yZGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8IS0tIElmIHN1Ym5vZGVzIGFyZSBub3QgdGhlcmUgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbmF2Py5zdWJOb2Rlcz8ubGVuZ3RoICYmICFuYXY/LmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIElmIHRoZXJlIGlzIGEgcm91dGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LnJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCBbbmdDbGFzc109XCJ7ICdzb2YtYXItbmF2LXNlbGVjdGVkJzogaXNOYXZTZWxlY3RlZChuYXYpIH1cIiBjbGFzcz1cIm5hdi1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiIChjbGljayk9XCJjbG9zZU5hdmlnYXRpb25Gb3JNb2JpbGUoKVwiIFthdHRyLnJvbGVdPVwibnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJuYXYtaXRlbSBuYXYtaXRlbS1tYXJnaW5cIiBtYXQtbGlzdC1pdGVtIFtyb3V0ZXJMaW5rXT1cIm5hdj8ucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3NvZi1hci1uYXYtYWN0aXZlLXJvdXRlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8uZm9udEF3ZXNvbWVJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJpY29uLXN0eWxpbmdcIj48aSBjbGFzcz1cInt7bmF2Py5mb250QXdlc29tZUljb259fVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvZi1hci1uYXYtaGVhZGVyLXRleHRcIj57e25hdi50ZXh0IHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIElmIHRoZXJlIGlzIG5vdCBhIHJvdXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5hdj8ucm91dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW5hdi1saXN0IFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIiBbYXR0ci5yb2xlXT1cIm51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWl0ZW1cIiBtYXQtbGlzdC1pdGVtIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1hY3RpdmUtcm91dGUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5mb250QXdlc29tZUljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPjxpIGNsYXNzPVwie3tuYXY/LmZvbnRBd2Vzb21lSWNvbn19XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mLWFyLW5hdi1oZWFkZXItdGV4dFwiPnt7bmF2LnRleHQgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9uYXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTdGVwcGVyIC0tPlxyXG4gICAgICA8bWF0LXZlcnRpY2FsLXN0ZXBwZXIgKm5nSWY9XCJzZXR0aW5ncy5tZW51U3R5bGUgPT09ICdzdGVwcGVyJ1wiIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkUGFyZW50SW5kZXhcIiAjdmVydFN0ZXBwZXJcclxuICAgICAgICBbbGluZWFyXT1cImZhbHNlXCIgY2xhc3M9XCJzaWRlbmF2LWJhY2tncm91bmRcIj5cclxuICAgICAgICA8IS0tIEFsdGVybmF0ZSBzdGVwIHN0YXRlcyBmb3IgbmF2LCBpY2FvbnMgc2hvdWxkIGFsd2F5cyBiZSB3aGl0ZSBvbmx5IHdvcmtlZCB3aXRoIHN0eWxlcyAtLT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJjcmVhdGVcIj5cclxuICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhZCBmYS1wZW5jaWwtYWx0XCIgc3R5bGU9XCJjb2xvcjogd2hpdGUgIWltcG9ydGFudFwiPjwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImVkaXRcIj5cclxuICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhZCBmYS1wZW5jaWwtYWx0XCIgc3R5bGU9XCJjb2xvcjogd2hpdGUgIWltcG9ydGFudFwiPjwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImFjdGl2ZVwiPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLXBlbmNpbC1hbHRcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50XCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBwZXJJY29uPVwiZG9uZVwiPlxyXG4gICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrXCIgc3R5bGU9XCJjb2xvcjogd2hpdGUgIWltcG9ydGFudFwiPjwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8IS0tIG5hdiBzdGVwcyAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBuYXYgb2YgbmF2aWdhdGlvbkRhdGE7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxtYXQtc3RlcCAqbmdJZj1cIiFuYXY/LmhpZGRlblwiIHN0YXRlPVwie3sgZGV0ZXJtaW5lU3RlcFN0YXRlKGksIC0xKSB9fVwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsICpuZ0lmPVwiIW5hdi5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGlkPVwiZGl2U3RlcHt7IGkgfX1cIiBzdHlsZT1cImhlaWdodDogNzJweFwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgbmF2LnRleHQgfCB0cmFuc2xhdGUgfX1cIiBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidhZnRlcidcIiBmeEZsZXg9XCIxMDAlXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBpZD1cInN0ZXB7eyBpIH19XCIgZnhGbGV4PVwiMTAwJVwiIGNsYXNzPVwibWF0LWJ1dHRvbiBzdGVwLWxpbmtcIiBbcm91dGVyTGlua109XCJuYXYucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGNvbG9yOiB0aGVtZVNldHRpbmdzPy5mb250Q29sb3IgfVwiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc3RlcC1hY3RpdmUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBuYXYudGV4dCB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cIm5hdi5zdGVwQ29udGVudCB8IHRyYW5zbGF0ZVwiPjwvcD5cclxuICAgICAgICAgICAgPCEtLSBzdWIgbmF2IC0tPlxyXG4gICAgICAgICAgICA8bWF0LXZlcnRpY2FsLXN0ZXBwZXIgKm5nSWY9XCJuYXY/LnN1Yk5vZGVzXCIgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRDaGlsZEluZGV4ZXNbaV1cIiBbbGluZWFyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAjdmVydFN0ZXBwZXJJbm5lcj5cclxuICAgICAgICAgICAgICA8IS0tIEFsdGVybmF0ZSBzdGVwIHN0YXRlcyBmb3Igc3ViIG5hdiwgaWNvbnMgc2hvdWxkIGFsd2F5cyBiZSB3aGl0ZSBvbmx5IHdvcmtlZCB3aXRoIHN0eWxlcyAtLT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJjcmVhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhZCBmYS1wZW5jaWwtYWx0XCIgc3R5bGU9XCJjb2xvcjogd2hpdGUgIWltcG9ydGFudFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImVkaXRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhZCBmYS1wZW5jaWwtYWx0XCIgc3R5bGU9XCJjb2xvcjogd2hpdGUgIWltcG9ydGFudFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImRvbmVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGVja1wiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJhY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wZW5jaWwtYWx0XCIgc3R5bGU9XCJjb2xvcjogd2hpdGUgIWltcG9ydGFudFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwhLS0gc3ViIG5hdiBzdGVwcyAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJuYXYgb2YgbmF2Py5zdWJOb2RlczsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zdGVwIHN0YXRlPVwie3sgZGV0ZXJtaW5lU3RlcFN0YXRlKGksIGopIH19XCIgKm5nSWY9XCIhc3VibmF2LmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJkaXZTdWJTdGVwe3sgaSB9fS17eyBqIH19XCIgc3R5bGU9XCJoZWlnaHQ6IDcycHhcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7IHN1Ym5hdi50ZXh0IHwgdHJhbnNsYXRlIH19XCIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCInYWZ0ZXInXCIgZnhGbGV4PVwiMTAwJVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9XCJzdWJTdGVwe3sgaSB9fS17eyBqIH19XCIgY2xhc3M9XCJtYXQtYnV0dG9uIHN0ZXAtbGlua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY29sb3I6IHRoZW1lU2V0dGluZ3M/LmZvbnRDb2xvciB9XCIgW3JvdXRlckxpbmtdPVwic3VibmF2LnJvdXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydzdGVwLWFjdGl2ZSddXCI+e3sgc3VibmF2LnRleHQgfCB0cmFuc2xhdGUgfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwic3VibmF2LnN0ZXBDb250ZW50IHwgdHJhbnNsYXRlXCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc3RlcD5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDwvbWF0LXZlcnRpY2FsLXN0ZXBwZXI+XHJcbiAgICAgICAgICA8L21hdC1zdGVwPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPC9tYXQtdmVydGljYWwtc3RlcHBlcj5cclxuXHJcbiAgICAgIDwhLS0gTmF2IEZvb3RlciAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5hdi1mb290ZXItaXRlbVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZXR0aW5ncy5tZW51U3R5bGUgPT09ICdzdGF0aWMnXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBuYXYgb2YgZm9vdGVyTmF2aWdhdGlvbkRhdGFcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8IS0tIERlc2t0b3AgTmF2IC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbmF2Py5zdWJOb2Rlcz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIElmIHRoZXJlIGlzIGEgcm91dGUgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibmF2Py5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LW5hdi1saXN0IGNsYXNzPVwibmF2LWhlYWRlclwiIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtLW1hcmdpblwiIG1hdC1saXN0LWl0ZW0gW3JvdXRlckxpbmtdPVwibmF2Py5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3NvZi1hci1uYXYtYWN0aXZlLXJvdXRlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuYXY/LmZvbnRBd2Vzb21lSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImljb24tc3R5bGluZ1wiPjxpIGNsYXNzPVwie3tuYXY/LmZvbnRBd2Vzb21lSWNvbn19XCI+PC9pPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tuYXYudGV4dCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBJZiB0aGVyZSBpcyBub3QgYSByb3V0ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbmF2Py5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LW5hdi1saXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJzb2YtYXItbmF2LWJ0bi1ub2RlXCIgY2xhc3M9XCJuYXYtaXRlbVwiIG1hdC1saXN0LWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIlsnc29mLWFyLW5hdi1hY3RpdmUtcm91dGUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdj8uZm9udEF3ZXNvbWVJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+PGkgY2xhc3M9XCJ7e25hdj8uZm9udEF3ZXNvbWVJY29ufX1cIj48L2k+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e25hdi50ZXh0IHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJuYXZpZ2F0aW9uRm9vdGVyXCI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gdGhlIG1vYmlsZSBwcm9ncmVzcyBtZW51LS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZXR0aW5ncz8ubWVudVN0eWxlID09PSAncHJvZ3Jlc3MnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVuYXYtYmFja2dyb3VuZFwiIFtuZ1N0eWxlXT1cInsncGFkZGluZy1ib3R0b20ucHgnOiAoZm9vdGVySXRlbUNvdW50KjY0KSsxMjh9XCI+XHJcbiAgICAgICAgICA8bWF0LWFjY29yZGlvbj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBuYXZpZ2F0aW9uRGF0YTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwLnN1Yk5vZGVzICYmIHN0ZXAuc3ViTm9kZXMubGVuZ3RoID4gMCAmJiAhc3RlcC5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGhpZGVUb2dnbGUgY2xhc3M9XCJwcm9ncmVzcy1tb2JpbGUtZXhwYW5zaW9uLXBhbmVsXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighc3RlcC52aXNpdGVkIHx8IHN0ZXAuaXNEaXNhYmxlZCkgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChvcGVuZWQpPVwicGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJwYW5lbE9wZW5TdGF0ZSA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlIGNsYXNzPVwicHJvZ3Jlc3MtbW9iaWxlLXBhbmVsLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6KCFzdGVwLnZpc2l0ZWQgfHwgc3RlcC5pc0Rpc2FibGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uICYmICFzdGVwLmNvbXBsZXRlLCdjb2xvci1wcmltYXJ5JzpzdGVwLmNvbXBsZXRlICYmIHN0ZXAhPT1hY3RpdmVQYXJlbnROb2RlLCdwcm9ncmVzcy1tZW51LWFjdGl2ZSc6c3RlcD09PWFjdGl2ZVBhcmVudE5vZGV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1BhcmVudE5vZGVJY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzdGVwOnN0ZXB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZ3M/LmRpc3BsYXlOdW1iZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tpIDwgMTAgPyBcIjBcIiArIChpICsgMSkgKyBcIi4gXCIgOiBpICsgXCIgLiBcIiB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1idG4tdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGVwLnRleHQgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXBhbmVsT3BlblN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93biBwYW5lbC1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lbE9wZW5TdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXVwIHBhbmVsLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIG1vYmlsZSBzdWIgbWVudSAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLW5hdi1tZW51XCIgKm5nRm9yPVwibGV0IHN1Yk5vZGUgb2Ygc3RlcC5zdWJOb2RlczsgbGV0IGlkeCA9IGluZGV4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJzdGVwLnN1Yk5vZGVzW2lkeF0uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiByb2xlPVwibGlua1wiIGlkPVwibW9iaWxlTWVudXt7IGlkeCB9fVwiIG1hdC1idXR0b24gY2xhc3M9XCJzdGVwLWxpbmsgcHJvZ3Jlc3MtbWVudS1tb2JpbGUtYnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY29sb3ItcHJpbWFyeSc6c3ViTm9kZS5jb21wbGV0ZSAmJiBzdWJOb2RlIT09YWN0aXZlU3ViTm9kZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiWydwcm9ncmVzcy1tZW51LWFjdGl2ZSddXCIgW25nU3R5bGVdPVwieyAnIGNvbG9yJzogdGhlbWVTZXR0aW5ncz8uZm9udENvbG9yIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwic3ViTm9kZS5yb3V0ZVwiIFtkaXNhYmxlZF09XCIhc3ViTm9kZS52aXNpdGVkICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwcm9ncmVzc1N1Yk5vZGVJY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c3ViTm9kZTpzdWJOb2RlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LW1lbnUtYnRuLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzooIXN1Yk5vZGUudmlzaXRlZCkgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvbiAmJiAhc3ViTm9kZS5jb21wbGV0ZSwnY29sb3ItcHJpbWFyeSc6c3ViTm9kZS5jb21wbGV0ZSAmJiBzdWJOb2RlIT09YWN0aXZlU3ViTm9kZSwncHJvZ3Jlc3MtbWVudS1hY3RpdmUnOnN1Yk5vZGU9PT1hY3RpdmVTdWJOb2RlfVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5vZGUudGV4dCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPCEtLSBpZiB0aGVyZSBhcmUgbm8gc3ViTm9kZXMgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIighc3RlcC5zdWJOb2RlcyB8fCBzdGVwLnN1Yk5vZGVzLmxlbmd0aD09PTApICYmICFzdGVwLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgI3BhbmVsIGhpZGVUb2dnbGUgKG9wZW5lZCk9XCJkaXNhYmxlUGFuZWwocGFuZWwsaSlcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLW1vYmlsZS1leHBhbnNpb24tcGFuZWxcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiKCFzdGVwLnZpc2l0ZWQgfHwgc3RlcC5pc0Rpc2FibGVkKSAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlIGNsYXNzPVwicHJvZ3Jlc3MtbW9iaWxlLXBhbmVsLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOighc3RlcC52aXNpdGVkIHx8IHN0ZXAuaXNEaXNhYmxlZCkgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvbiAmJiAhc3RlcC5jb21wbGV0ZSwnY29sb3ItcHJpbWFyeSc6c3RlcC5jb21wbGV0ZSAmJiBzdGVwIT09YWN0aXZlUGFyZW50Tm9kZSwncHJvZ3Jlc3MtbWVudS1hY3RpdmUnOnN0ZXA9PT1hY3RpdmVQYXJlbnROb2RlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJvZ3Jlc3NQYXJlbnROb2RlSWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7c3RlcDpzdGVwfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmdzPy5kaXNwbGF5TnVtYmVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7aSA8IDEwID8gXCIwXCIgKyAoaSArIDEpICsgXCIuIFwiIDogaSArIFwiIC4gXCIgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtYnRuLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RlcC50ZXh0IHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LWFjY29yZGlvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSB0aGUgcHJvZ3Jlc3MgbWVudSBsYW5ndWFnZSBhbmQgbG9nb3V0IGJ1dHRvbnMtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWZvb3Rlci1pdGVtIHByb2dyZXNzLWZvb3RlclwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5hdmlnYXRpb25Gb290ZXJcIj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9tYXQtc2lkZW5hdj5cclxuICAgIDxtYXQtc2lkZW5hdi1jb250ZW50PlxyXG4gICAgICA8IS0tIEhvcml6b250YWwgUHJvZ3Jlc3MgLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZXR0aW5ncz8ubWVudVN0eWxlID09PSAncHJvZ3Jlc3MnXCI+XHJcbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJzZXR0aW5ncz8uc2hvd1Byb2dyZXNzQmFyXCIgbW9kZT1cImRldGVybWluYXRlXCIgW3ZhbHVlXT1cIm5hdlByb2dyZXNzQ291bnRcIlxyXG4gICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDlweFwiIGNvbG9yPVwiYWNjZW50XCI+XHJcbiAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgIDxuYXYgW2F0dHIuYXJpYS1sYWJlbF09XCInbWFpbidcIiBmeEhpZGUubHQtbWQgY2xhc3M9XCJzdGVwLXRpdGxlcyBjZW50ZXJcIiBmeExheW91dD1cInJvd1wiIHN0eWxlPVwianVzdGlmeS1jb250ZW50OmNlbnRlciAhaW1wb3J0YW50XCJcclxuICAgICAgICAgIFtjbGFzcy5oaWRkZW5dPVwic2V0dGluZ3MuaGlkZU5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBuYXZpZ2F0aW9uRGF0YTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiaG9yaXpvbnRhbC1wcm9ncmVzcy1kaXZcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN0ZXAuc3ViTm9kZXM/Lmxlbmd0aCAmJiAhc3RlcC5oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbcm91dGVyTGlua109XCJzdGVwLnJvdXRlXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighc3RlcC52aXNpdGVkIHx8IHN0ZXAuaXNEaXNhYmxlZCkgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtbWVudS1idG5cIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NvbG9yLXByaW1hcnknOnN0ZXAuY29tcGxldGUgJiYgc3RlcCE9PWFjdGl2ZVBhcmVudE5vZGUsJ3Byb2dyZXNzLW1lbnUtYWN0aXZlJzpzdGVwPT09YWN0aXZlUGFyZW50Tm9kZX1cIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzUGFyZW50Tm9kZUljb25zXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzdGVwOnN0ZXB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZ3M/LmRpc3BsYXlOdW1iZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tpIDwgMTAgPyBcIjBcIiArIChpICsgMSkgKyBcIi4gXCIgOiBpICsgXCIgLiBcIiB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1idG4tdGV4dFwiPnt7IHN0ZXAudGV4dCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwhLS0gaWYgdGhlcmUgYXJlIHN1Ym5vZGVzIGNyZWF0ZSBtZW51cyBmb3IgZWFjaCBzdGVwIC0tPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwLnN1Yk5vZGVzICYmIHN0ZXAuc3ViTm9kZXMubGVuZ3RoICYmICFzdGVwLmhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2NvbG9yLXByaW1hcnknOnN0ZXAuY29tcGxldGUgJiYgc3RlcCE9PWFjdGl2ZVBhcmVudE5vZGUsJ3Byb2dyZXNzLW1lbnUtYWN0aXZlJzpzdGVwPT09YWN0aXZlUGFyZW50Tm9kZX1cIlxyXG4gICAgICAgICAgICAgICAgICBtYXQtYnV0dG9uIFtkaXNhYmxlZF09XCIoIXN0ZXAudmlzaXRlZCB8fCBzdGVwLmlzRGlzYWJsZWQpICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInByb2dyZXNzLW1lbnUtYnRuXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzUGFyZW50Tm9kZUljb25zXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzdGVwOnN0ZXB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZ3M/LmRpc3BsYXlOdW1iZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tpIDwgMTAgPyBcIjBcIiArIChpICsgMSkgKyBcIi4gXCIgOiBpICsgXCIgLiBcIiB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1idG4tdGV4dFwiPnt7IHN0ZXAudGV4dCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIGNsYXNzPVwic29mLWFyLW1hdC1tZW51IHByb2dyZXNzLW1lbnUtcGFuZWxcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLW5hdi1tZW51XCIgKm5nRm9yPVwibGV0IHN1Yk5vZGUgb2Ygc3RlcC5zdWJOb2RlczsgbGV0IGlkeCA9IGluZGV4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie3dpZHRoOnNldHRpbmdzLnByb2dyZXNzTWVudVdpZHRoKydweCd9XCIgW2hpZGRlbl09XCJzdGVwLnN1Yk5vZGVzW2lkeF0uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiByb2xlPVwibGlua1wiIGlkPVwic3VibWVudXt7IGlkeCB9fVwiIG1hdC1idXR0b24gY2xhc3M9XCJzdGVwLWxpbmsgcHJvZ3Jlc3MtbWVudS1idG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydjb2xvci1wcmltYXJ5JzpzdWJOb2RlLmNvbXBsZXRlICYmIHN1Yk5vZGUhPT1hY3RpdmVTdWJOb2RlLCdkaXNhYmxlZCc6IXN1Yk5vZGUudmlzaXRlZCAmJiAhc2V0dGluZ3Mub3ZlcnJpZGVOYXZpZ2F0aW9ufVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCJbJ3Byb2dyZXNzLW1lbnUtYWN0aXZlJ11cIiBbbmdTdHlsZV09XCJ7ICcgY29sb3InOiB0aGVtZVNldHRpbmdzPy5mb250Q29sb3IgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJzdWJOb2RlLnJvdXRlXCIgW2Rpc2FibGVkXT1cIiFzdWJOb2RlLnZpc2l0ZWQgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByb2dyZXNzU3ViTm9kZUljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntzdWJOb2RlOnN1Yk5vZGV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtbWVudS1idG4tdGV4dFwiPnt7IHN1Yk5vZGUudGV4dCB8dHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1wcm9ncmVzcy1jb250YWluZXJcIiBmeEhpZGUuZ3Qtc20+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRlbnQgc29mLWFyLW5hdi1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvbWF0LXNpZGVuYXYtY29udGVudD5cclxuICA8L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cclxuICA8IS0tIFRoZSBwcm9ncmVzcyBtZW51IHBhcmVudCBub2RlIGljb24gdGVtcGxhdGUtLT5cclxuICA8bmctdGVtcGxhdGUgI3Byb2dyZXNzUGFyZW50Tm9kZUljb25zIGxldC1zdGVwPSdzdGVwJz5cclxuICAgIDxzcGFuICpuZ0lmPVwic3RlcC5jb21wbGV0ZSAmJiBzdGVwICE9PSBhY3RpdmVQYXJlbnROb2RlXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5jb21wbGV0ZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7eyBzZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25Db21wbGV0ZUljb24gfX0gY29sb3ItcHJpbWFyeSBwcm9ncmVzcy1uYXYtaWNvblwiXHJcbiAgICAgICAgW3RpdGxlXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLmNvbXBsZXRlJyB8IHRyYW5zbGF0ZVwiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxzcGFuICpuZ0lmPVwic3RlcCA9PT0gYWN0aXZlUGFyZW50Tm9kZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMuaW4tcHJvZ3Jlc3MnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwie3sgc2V0dGluZ3MucHJvZ3Jlc3NTZWN0aW9uQ3VycmVudEljb24gfX0gY29sb3ItcHJpbWFyeSBwcm9ncmVzcy1uYXYtaWNvblwiXHJcbiAgICAgICAgW3RpdGxlXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLmluLXByb2dyZXNzJyB8IHRyYW5zbGF0ZVwiPjwvaT5cclxuICAgIDwvc3Bhbj5cclxuICAgIDxzcGFuICpuZ0lmPVwiIXN0ZXAuY29tcGxldGUgJiYgc3RlcCAhPT0gYWN0aXZlUGFyZW50Tm9kZVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiFzdGVwLnZpc2l0ZWQgJiYgIXNldHRpbmdzLm92ZXJyaWRlTmF2aWdhdGlvbn1cIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLm5vdC1kb25lJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cInt7IHNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkZ1dHVyZUljb24gfX0gcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5ub3QtZG9uZScgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8IS0tIFRoZSBwcm9ncmVzcyBtZW51IHN1YiBub2RlIGljb24gdGVtcGxhdGUtLT5cclxuICA8bmctdGVtcGxhdGUgI3Byb2dyZXNzU3ViTm9kZUljb25zIGxldC1zdWJOb2RlPSdzdWJOb2RlJz5cclxuICAgIDxzcGFuICpuZ0lmPVwic3ViTm9kZS5jb21wbGV0ZSAmJiBhY3RpdmVTdWJOb2RlICE9PSBzdWJOb2RlXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5jb21wbGV0ZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7e3NldHRpbmdzLnByb2dyZXNzTWVudUNvbXBsZXRlSWNvbn19IGNvbG9yLXByaW1hcnkgcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5jb21wbGV0ZScgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cImFjdGl2ZVN1Yk5vZGUgPT09IHN1Yk5vZGVcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidhcm1hdHVyZS5zb2YtcHJvZ3Jlc3MtYmFyLnN0ZXAtbGFiZWxzLmluLXByb2dyZXNzJyB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cInt7IHNldHRpbmdzLnByb2dyZXNzU2VjdGlvbkN1cnJlbnRJY29uIH19IGNvbG9yLXByaW1hcnkgcHJvZ3Jlc3MtbmF2LWljb25cIlxyXG4gICAgICAgIFt0aXRsZV09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5pbi1wcm9ncmVzcycgfCB0cmFuc2xhdGVcIj48L2k+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFzdWJOb2RlLmNvbXBsZXRlICYmIGFjdGl2ZVN1Yk5vZGUgIT09IHN1Yk5vZGVcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzohc3ViTm9kZS52aXNpdGVkICYmICFzZXR0aW5ncy5vdmVycmlkZU5hdmlnYXRpb259XCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInYXJtYXR1cmUuc29mLXByb2dyZXNzLWJhci5zdGVwLWxhYmVscy5ub3QtZG9uZScgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgPGkgY2xhc3M9XCJ7eyBzZXR0aW5ncy5wcm9ncmVzc1NlY3Rpb25GdXR1cmVJY29uIH19IHByb2dyZXNzLW5hdi1pY29uXCJcclxuICAgICAgICBbdGl0bGVdPVwiJ2FybWF0dXJlLnNvZi1wcm9ncmVzcy1iYXIuc3RlcC1sYWJlbHMubm90LWRvbmUnIHwgdHJhbnNsYXRlXCI+PC9pPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPCEtLSBUaGUgbmF2aWdhdGlvbiBmb290ZXIgdGVtcGxhdGUgZm9yIGxhbmd1YWdlIGFuZCBsb2dvdXQgYnV0dG9ucyAtLT5cclxuICA8bmctdGVtcGxhdGUgI25hdmlnYXRpb25Gb290ZXI+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc29mLWFyLW5hdi1tb2JpbGUtZm9vdGVyXVwiPiA8L25nLWNvbnRlbnQ+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNldHRpbmdzLnVzZUN1c3RvbU1vYmlsZUZvb3RlclwiPlxyXG4gICAgICA8IS0tIFRoZSBsYW5ndWFnZSBidXR0b24gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdJZj1cImxhbmd1YWdlU2V0dGluZ3M/LmRpc3BsYXlMYW5ndWFnZU9wdGlvbnMgJiYgbGFuZ3VhZ2VTZXR0aW5ncz8ubGFuZ3VhZ2VzLmxlbmd0aCA+IDIgJiYgbW9iaWxlUXVlcnkubWF0Y2hlc1wiPlxyXG4gICAgICAgIDxidXR0b24gaWQ9XCJzb2YtYXItbmF2LWxhbmctZHJvcGRvd25cIiBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiZmFkZWQtYnV0dG9uLTUwIGxhbmd1YWdlLWJ1dHRvbiBuYXZpZ2F0aW9uRm9vdGVyXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImhlYWRlckxhbmd1YWdlTWVudVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhbmd1YWdlU2V0dGluZ3MuYnV0dG9uVGV4dCB8IHRyYW5zbGF0ZVwiPlxyXG4gICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJpY29uLXN0eWxpbmdcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtZ2xvYmUgbGFuZ3VhZ2UtZ2xvYmVcIj48L2k+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICB7e2xhbmd1YWdlU2V0dGluZ3MuYnV0dG9uVGV4dCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG1hdC1tZW51ICNoZWFkZXJMYW5ndWFnZU1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJzb2YtYXItbWF0LW1lbnVcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgbGFuZyBvZiBsYW5ndWFnZVNldHRpbmdzLmxhbmd1YWdlc1wiIChjbGljayk9XCJzZXRMYW5ndWFnZSQuZW1pdChsYW5nKVwiXHJcbiAgICAgICAgICAgIGlkPVwiYXBwbHktbGFuZy1idG4te3tsYW5nfX1cIj5cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cImF1dG9cIj5cclxuICAgICAgICAgICAgICAgIHt7IGxhbmcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cImF1dG9cIiBmeExheW91dEFsaWduPVwiZW5kIGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjdXJyZW50TGFuZyA9PT0gbGFuZ1wiIGNsYXNzPVwiZmFkIGZhLWNoZWNrIHNlbGVjdGVkLWxhbmd1YWdlLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdJZj1cImxhbmd1YWdlU2V0dGluZ3M/LmRpc3BsYXlMYW5ndWFnZU9wdGlvbnMgJiYgbGFuZ3VhZ2VTZXR0aW5ncz8ubGFuZ3VhZ2VzLmxlbmd0aCA9PT0gMiAmJiBtb2JpbGVRdWVyeS5tYXRjaGVzXCI+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImxhbmd1YWdlU2V0dGluZ3M/Lmxhbmd1YWdlcy5sZW5ndGggPT09IDJcIiBpZD1cInNvZi1hci1uYXYtbGFuZy1idXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiZmFkZWQtYnV0dG9uLTUwIGxhbmd1YWdlLWJ1dHRvbiBuYXZpZ2F0aW9uRm9vdGVyXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFuZ3VhZ2VTZXR0aW5ncy5idXR0b25UZXh0IHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cInNldExhbmd1YWdlJC5lbWl0KClcIj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWdsb2JlIGxhbmd1YWdlLWdsb2JlXCI+PC9pPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAge3tvdGhlckxhbmdUZXh0IHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gVGhlIGxvZ291dCBidXR0b24tLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vYmlsZVF1ZXJ5Lm1hdGNoZXMgJiYgdXNlck5hbWVcIj5cclxuICAgICAgICA8YnV0dG9uIGlkPVwic29mLWFyLWhlYWRlci1sYW5nLWJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm5hdmlnYXRpb25Gb290ZXJcIiAoY2xpY2spPVwibG9nT3V0KClcIj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiaWNvbi1zdHlsaW5nXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNpZ24tb3V0LWFsdFwiPjwvaT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIHt7bG9nT3V0VGV4dCB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+Il19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXBhbmVsLW5vZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9uYXZpZ2F0aW9uL2NvbXBvbmVudHMvc29mLW5hdmlnYXRpb24tcGFuZWwvbW9kZWxzL25hdi1wYW5lbC1ub2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFxyXG4gKiBOYXZpZ2F0aW9uIHBhbmVsIG5vZGVzIFxyXG4gKiBAZXhhbXBsZSBcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiAvLyBubyBzdWJub2RlcyAuLi4gXHJcbiAqIG5vZGU6IE5hdlBhbmVsTm9kZSA9IHtcclxuICogIGxhYmVsOiAnVGVzdCBMaW5rJyxcclxuICogIGljb25DbGFzczogJ3BoLWJvbGQgcGgtYWNvcm4nLFxyXG4gKiAgcm91dGU6ICcvdGVzdC1saW5rJ1xyXG4gKiB9O1xyXG4gKiBcclxuICogLy8gd2l0aCBzdWIgbm9kZXMgLi4uXHJcbiAqIG5vZGU6IE5hdlBhbmVsTm9kZSA9IHtcclxuICogIGxhYmVsOiAnU2VjdGlvbiBIZWFkZXInLFxyXG4gKiAgc3Vibm9kZXM6IFtcclxuICogICAge1xyXG4gKiAgICAgIGxhYmVsOiAnVGVzdCBMaW5rJyxcclxuICogICAgICBpY29uQ2xhc3M6ICdwaC1ib2xkIHBoLWFjb3JuJyxcclxuICogICAgICByb3V0ZTogJy90ZXN0LWxpbmsnXHJcbiAqICAgIH1cclxuICogIF1cclxuICogfTtcclxuICogYGBgXHJcbiovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmF2UGFuZWxOb2RlIHtcclxuICAvKiogXHJcbiAgICogTm9kZSBsYWJlbCBcclxuICAgKiBAbm90ZSBjYW4gYmUgYSB0cmFuc2xhdGlvbiBrZXlcclxuICAgKiBAZXhhbXBsZSAnYXJtYXR1cmUubmF2aWdhdGlvblBhbmVsLm5vZGUtbGFiZWxzLmhvbWUnXHJcbiAgKi9cclxuICBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAvKiogXHJcbiAgICogTm9kZSBpY29uIGNsYXNzIFxyXG4gICAqIEBub3RlIHdlIGFyZSBjdXJyZW50bHkgdXNpbmcgcGhvc3Bob3ItaWNvbnMgdHlwZTogYm9sZCwgcGVyIGRlc2lnbiBcclxuICAgKiBAZXhhbXBsZSAncGgtYm9sZCBwaC1hY29ybidcclxuICAgKiBAdHV0b3JpYWwgXHJcbiAgICogLSBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgc2NyaXB0IGluIHRoZSBpbmRleC5odG1sIG9mIHlvdXIgYXBwIC0gXHJcbiAgICogYGBgaHRtbFxyXG4gICAqIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vQHBob3NwaG9yLWljb25zL3dlYlwiPjwvc2NyaXB0PlxyXG4gICAqIGBgYFxyXG4gICAqIC0gU2V0dGluZyB0aGUgZm9udC1zaXplIGZvciBhbiBpY29uIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgaGVpZ2h0ICYgd2lkdGggdG8gbWF0Y2gsIHdoaWNoIGhlbHBzIHdoZW4gYWxpZ25pbmcgaWNvbnMgaW4gYSBjb2x1bW4gb3Igcm93LlxyXG4gICAqIEBzZWUge0BsaW5rIFtQaG9zcGhvciBJY29uczogQm9sZF0oaHR0cHM6Ly9waG9zcGhvcmljb25zLmNvbS8/d2VpZ2h0PSUyMmJvbGQlMjIpfVxyXG4gICovXHJcbiAgaWNvbkNsYXNzPzogc3RyaW5nO1xyXG5cclxuICAvKiogXHJcbiAgICogTm9kZSByb3V0ZSB1cmwgXHJcbiAgKi9cclxuICByb3V0ZT86IHN0cmluZztcclxuXHJcbiAgLyoqIFxyXG4gICAqIFN1Ym5vZGVzIGFycmF5XHJcbiAgICogQGRlc2NyaXB0aW9uIElmIHN1YiBub2RlcyBhcmUgcHJlc2VudCwgXHJcbiAgICogdGhlIHBhcmVudCBub2RlIHNob3VsZCBub3QgaGF2ZSBhIHJvdXRlIG9yIGljb24gYW5kIHdpbGwgb25seSBpbmNsdWRlIGEgbGFiZWwgZm9yIHRoZSBzdWIgbm9kZXMsXHJcbiAgICogdGhpcyBwYXJlbnQgbm9kZSB3b3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIGFwcGxpY2F0aW9ucyByb3V0ZXItbW9kdWxlIGFzIGl0IGlzIGp1c3QgYSBzZWN0aW9uIGhlYWRlci4gXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICogbm9kZTogTmF2UGFuZWxOb2RlID0ge1xyXG4gICAqICBsYWJlbDogJ1NlY3Rpb24gSGVhZGVyJyxcclxuICAgKiAgc3Vibm9kZXM6IFtcclxuICAgKiAgICB7XHJcbiAgICogICAgICBsYWJlbDogJ1Rlc3QgTGluaycsXHJcbiAgICogICAgICBpY29uQ2xhc3M6ICdwaC1ib2xkIHBoLWFjb3JuJyxcclxuICAgKiAgICAgIHJvdXRlOiAnL3Rlc3QtbGluaydcclxuICAgKiAgICB9XHJcbiAgICogIF1cclxuICAgKiB9O1xyXG4gICAqIGBgYFxyXG4gICovXHJcbiAgc3Vibm9kZXM/OiBBcnJheTxOYXZQYW5lbFN1Ym5vZGU+O1xyXG59XHJcblxyXG4vKiogXHJcbiAqIE5hdmlnYXRpb24gcGFuZWwgc3Vibm9kZXNcclxuICogQG5vdGUgc3Vibm9kZXMgY2Fubm90IGhhdmUgdGhlcmUgb3duIHN1Ym5vZGVzXHJcbiovXHJcbmludGVyZmFjZSBOYXZQYW5lbFN1Ym5vZGUge1xyXG4gIC8qKiBcclxuICAgKiBTdWJub2RlIGxhYmVsIFxyXG4gICAqIEBub3RlIGNhbiBiZSBhIHRyYW5zbGF0aW9uIGtleVxyXG4gICAqIEBleGFtcGxlICdhcm1hdHVyZS5uYXZpZ2F0aW9uUGFuZWwubm9kZS1sYWJlbHMuaG9tZSdcclxuICAqL1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBcclxuICAgKiBTdWJub2RlIGljb24gY2xhc3MgXHJcbiAgICogQG5vdGUgd2UgYXJlIGN1cnJlbnRseSB1c2luZyBwaG9zcGhvci1pY29ucywgdHlwZTogYm9sZCwgcGVyIGRlc2lnbiBcclxuICAgKiBAZXhhbXBsZSAncGgtYm9sZCBwaC1hY29ybidcclxuICAgKiBAdHV0b3JpYWwgXHJcbiAgICogLSBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgc2NyaXB0IGluIHRoZSBpbmRleC5odG1sIG9mIHlvdXIgYXBwIC0gXHJcbiAgICogYGBgaHRtbFxyXG4gICAqIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly91bnBrZy5jb20vQHBob3NwaG9yLWljb25zL3dlYlwiPjwvc2NyaXB0PlxyXG4gICAqIGBgYFxyXG4gICAqIC0gU2V0dGluZyB0aGUgZm9udC1zaXplIGZvciBhbiBpY29uIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgaGVpZ2h0ICYgd2lkdGggdG8gbWF0Y2gsIHdoaWNoIGhlbHBzIHdoZW4gYWxpZ25pbmcgaWNvbnMgaW4gYSBjb2x1bW4gb3Igcm93LlxyXG4gICAqIEBzZWUge0BsaW5rIFtQaG9zcGhvciBJY29uczogQm9sZF0oaHR0cHM6Ly9waG9zcGhvcmljb25zLmNvbS8/d2VpZ2h0PSUyMmJvbGQlMjIpfVxyXG4gICovXHJcbiAgaWNvbkNsYXNzPzogc3RyaW5nO1xyXG5cclxuICAvKiogXHJcbiAgICogU3Vibm9kZSByb3V0ZSB1cmwgXHJcbiAgKi9cclxuICByb3V0ZT86IHN0cmluZztcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXBhbmVsLXNldHRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9uYXZpZ2F0aW9uL2NvbXBvbmVudHMvc29mLW5hdmlnYXRpb24tcGFuZWwvbW9kZWxzL25hdi1wYW5lbC1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKiBcclxuICogTmF2aWdhdGlvbiBwYW5lbCBzZXR0aW5ncyBcclxuKi9cclxuZXhwb3J0IGludGVyZmFjZSBOYXZQYW5lbFNldHRpbmdzIHtcclxuICAvKiogXHJcbiAgICogQ2FuIHdlIGNvbGxhcHNlL2V4cGFuZCB0aGUgbmF2IHBhbmVsIG9uIGRlc2t0b3AgXHJcbiAgICogQG5vdGUgb24gbW9iaWxlIHlvdSBhbHdheXMgY2FuLiBcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgKi9cclxuICBhbGxvd05hdlRvZ2dsZT86IGJvb2xlYW47XHJcblxyXG4gIC8qKiBcclxuICAgKiBUbyBzaG93IHRoZSBsb2dpbi9sb2dvdXQgYnV0dG9uXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAqL1xyXG4gIHNob3dBdXRoQnV0dG9uPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFxyXG4gICAqIFRvIHNob3cgdGhlIGxhbmd1YWdlIHNldHRpbmdzIGJ1dHRvblxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgKi9cclxuICBzaG93TGFuZ3VhZ2VCdXR0b24/OiBib29sZWFuO1xyXG5cclxuICAvKiogXHJcbiAgICogVG8gc2hvdyB0aGUgd2hhdHMgbmV3IGJ1dHRvblxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgKi9cclxuICBzaG93V2hhdHNOZXdCdXR0b24/OiBib29sZWFuO1xyXG59XHJcbiJdfQ==