----------------------
- Plugin Name: ArgoUI 2.0.1
- Plugin Version: 2.0.1
- OS Name: Mac OS X
- Java Version: 1.8.0_242-release
- App Name: Studio
- App Full Name: Android Studio
- App Version name: Android Studio
- Is EAP: false
- App Build: AI-201.8743.12.41.7042882
- App Version: 4.1.2
- Last Action:
- Attachment induced.txt: Rm9sbG93aW5nIGV4Y2VwdGlvbnMgaGFwcGVuZWQgc29vbiBhZnRlciB0aGlzIG9uZSwgbW9zdCBwcm9iYWJseSB0aGV5IGFyZSBpbmR1Y2VkLgoKCjIwMjEtMDEtMjVUMTY6MDQ6MTYuNjQxCmNvbS5pbnRlbGxpai5kaWFnbm9zdGljLlBsdWdpbkV4Y2VwdGlvbjogYWN0aW9uIHdpdGggdGhlIElEICJMdWFDYWxsSGllcmFyY2h5UG9wdXBNZW51IiB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLiBBY3Rpb24gYmVpbmcgcmVnaXN0ZXJlZCBpcyBudWxsIChudWxsKTsgUmVnaXN0ZXJlZCBhY3Rpb24gaXMgIChudWxsKSBQbHVnaW46IEFyZ29VSSAyLjAuMSBbUGx1Z2luOiBtbXBhc3MucGx1Z2luXQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYWN0aW9uU3lzdGVtLmltcGwuQWN0aW9uTWFuYWdlckltcGwucmVwb3J0QWN0aW9uRXJyb3IoQWN0aW9uTWFuYWdlckltcGwuamF2YTozOTUpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hY3Rpb25TeXN0ZW0uaW1wbC5BY3Rpb25NYW5hZ2VySW1wbC5yZXBvcnRBY3Rpb25FcnJvcihBY3Rpb25NYW5hZ2VySW1wbC5qYXZhOjM5MCkKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFjdGlvblN5c3RlbS5pbXBsLkFjdGlvbk1hbmFnZXJJbXBsLnJlZ2lzdGVyQ2hhbWVsZW9uKEFjdGlvbk1hbmFnZXJJbXBsLmphdmE6MTI0NSkKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFjdGlvblN5c3RlbS5pbXBsLkFjdGlvbk1hbmFnZXJJbXBsLmFkZFRvTWFwKEFjdGlvbk1hbmFnZXJJbXBsLmphdmE6MTIxOCkKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFjdGlvblN5c3RlbS5pbXBsLkFjdGlvbk1hbmFnZXJJbXBsLnJlZ2lzdGVyQWN0aW9uKEFjdGlvbk1hbmFnZXJJbXBsLmphdmE6MTE4OSkKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFjdGlvblN5c3RlbS5pbXBsLkFjdGlvbk1hbmFnZXJJbXBsLnJlZ2lzdGVyT3JSZXBsYWNlQWN0aW9uSW5uZXIoQWN0aW9uTWFuYWdlckltcGwuamF2YTo2OTUpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hY3Rpb25TeXN0ZW0uaW1wbC5BY3Rpb25NYW5hZ2VySW1wbC5wcm9jZXNzR3JvdXBFbGVtZW50KEFjdGlvbk1hbmFnZXJJbXBsLmphdmE6NzYxKQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYWN0aW9uU3lzdGVtLmltcGwuQWN0aW9uTWFuYWdlckltcGwucHJvY2Vzc0FjdGlvbnNDaGlsZEVsZW1lbnQoQWN0aW9uTWFuYWdlckltcGwuamF2YToxMDg1KQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYWN0aW9uU3lzdGVtLmltcGwuQWN0aW9uTWFuYWdlckltcGwucmVnaXN0ZXJQbHVnaW5BY3Rpb25zKEFjdGlvbk1hbmFnZXJJbXBsLmphdmE6NTA4KQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYWN0aW9uU3lzdGVtLmltcGwuQWN0aW9uTWFuYWdlckltcGwuPGluaXQ+KEFjdGlvbk1hbmFnZXJJbXBsLmphdmE6MTU5KQoJYXQgc3VuLnJlZmxlY3QuTmF0aXZlQ29uc3RydWN0b3JBY2Nlc3NvckltcGwubmV3SW5zdGFuY2UwKE5hdGl2ZSBNZXRob2QpCglhdCBzdW4ucmVmbGVjdC5OYXRpdmVDb25zdHJ1Y3RvckFjY2Vzc29ySW1wbC5uZXdJbnN0YW5jZShOYXRpdmVDb25zdHJ1Y3RvckFjY2Vzc29ySW1wbC5qYXZhOjYyKQoJYXQgc3VuLnJlZmxlY3QuRGVsZWdhdGluZ0NvbnN0cnVjdG9yQWNjZXNzb3JJbXBsLm5ld0luc3RhbmNlKERlbGVnYXRpbmdDb25zdHJ1Y3RvckFjY2Vzc29ySW1wbC5qYXZhOjQ1KQoJYXQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3IubmV3SW5zdGFuY2UoQ29uc3RydWN0b3IuamF2YTo0MjMpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5Db25zdHJ1Y3RvckluamVjdGlvbkt0Lmluc3RhbnRpYXRlVXNpbmdQaWNvQ29udGFpbmVyKGNvbnN0cnVjdG9ySW5qZWN0aW9uLmt0OjQ4KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29tcG9uZW50TWFuYWdlckltcGwuaW5zdGFudGlhdGVDbGFzc1dpdGhDb25zdHJ1Y3RvckluamVjdGlvbihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDo2NjApCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5TZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5jcmVhdGVBbmRJbml0aWFsaXplKFNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmt0OjU0KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuZG9DcmVhdGVJbnN0YW5jZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo0MSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlVW5jYWNoZWQoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6MTE1KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6NjkpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5Db21wb25lbnRNYW5hZ2VySW1wbC5kb0dldFNlcnZpY2UoQ29tcG9uZW50TWFuYWdlckltcGwua3Q6NDExKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29tcG9uZW50TWFuYWdlckltcGwuZ2V0U2VydmljZShDb21wb25lbnRNYW5hZ2VySW1wbC5rdDozOTQpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hY3Rpb25TeXN0ZW0uQWN0aW9uTWFuYWdlci5nZXRJbnN0YW5jZShBY3Rpb25NYW5hZ2VyLmphdmE6MjgpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS53bS5pbXBsLklkZU1lbnVCYXIubGFtYmRhJGRvV2l0aExhenlBY3Rpb25NYW5hZ2VyJDQoSWRlTWVudUJhci5qYXZhOjI3NykKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IuZG9SdW4oQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjIyMikKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IuYWNjZXNzJDIwMChCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjkpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEuZXhlY3V0ZShCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjAxKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvciQxLnJ1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MTkzKQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KQoJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KQoKCjIwMjEtMDEtMjVUMTY6MDQ6MTcuMTg3CmNvbS5pbnRlbGxpai5kaWFnbm9zdGljLlBsdWdpbkV4Y2VwdGlvbjogYWN0aW9uIHdpdGggdGhlIElEICJsdWEubmV3RmlsZSIgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZC4gQWN0aW9uIGJlaW5nIHJlZ2lzdGVyZWQgaXMgTHVhIEZpbGUgKG51bGwpOyBSZWdpc3RlcmVkIGFjdGlvbiBpcyBOZXcgTHVhIEZpbGUgKCkgUGx1Z2luOiBBcmdvVUkgMi4wLjEgW1BsdWdpbjogbW1wYXNzLnBsdWdpbl0KCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFjdGlvblN5c3RlbS5pbXBsLkFjdGlvbk1hbmFnZXJJbXBsLnJlcG9ydEFjdGlvbkVycm9yKEFjdGlvbk1hbmFnZXJJbXBsLmphdmE6Mzk1KQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYWN0aW9uU3lzdGVtLmltcGwuQWN0aW9uTWFuYWdlckltcGwucmVwb3J0QWN0aW9uRXJyb3IoQWN0aW9uTWFuYWdlckltcGwuamF2YTozOTApCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hY3Rpb25TeXN0ZW0uaW1wbC5BY3Rpb25NYW5hZ2VySW1wbC5yZWdpc3RlckNoYW1lbGVvbihBY3Rpb25NYW5hZ2VySW1wbC5qYXZhOjEyNDUpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hY3Rpb25TeXN0ZW0uaW1wbC5BY3Rpb25NYW5hZ2VySW1wbC5hZGRUb01hcChBY3Rpb25NYW5hZ2VySW1wbC5qYXZhOjEyMTgpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hY3Rpb25TeXN0ZW0uaW1wbC5BY3Rpb25NYW5hZ2VySW1wbC5yZWdpc3RlckFjdGlvbihBY3Rpb25NYW5hZ2VySW1wbC5qYXZhOjExODkpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hY3Rpb25TeXN0ZW0uaW1wbC5BY3Rpb25NYW5hZ2VySW1wbC5yZWdpc3Rlck9yUmVwbGFjZUFjdGlvbklubmVyKEFjdGlvbk1hbmFnZXJJbXBsLmphdmE6Njk1KQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkuYWN0aW9uU3lzdGVtLmltcGwuQWN0aW9uTWFuYWdlckltcGwucHJvY2Vzc0FjdGlvbkVsZW1lbnQoQWN0aW9uTWFuYWdlckltcGwuamF2YTo2NjgpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hY3Rpb25TeXN0ZW0uaW1wbC5BY3Rpb25NYW5hZ2VySW1wbC5wcm9jZXNzQWN0aW9uc0NoaWxkRWxlbWVudChBY3Rpb25NYW5hZ2VySW1wbC5qYXZhOjEwNzkpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hY3Rpb25TeXN0ZW0uaW1wbC5BY3Rpb25NYW5hZ2VySW1wbC5yZWdpc3RlclBsdWdpbkFjdGlvbnMoQWN0aW9uTWFuYWdlckltcGwuamF2YTo1MDgpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS5hY3Rpb25TeXN0ZW0uaW1wbC5BY3Rpb25NYW5hZ2VySW1wbC48aW5pdD4oQWN0aW9uTWFuYWdlckltcGwuamF2YToxNTkpCglhdCBzdW4ucmVmbGVjdC5OYXRpdmVDb25zdHJ1Y3RvckFjY2Vzc29ySW1wbC5uZXdJbnN0YW5jZTAoTmF0aXZlIE1ldGhvZCkKCWF0IHN1bi5yZWZsZWN0Lk5hdGl2ZUNvbnN0cnVjdG9yQWNjZXNzb3JJbXBsLm5ld0luc3RhbmNlKE5hdGl2ZUNvbnN0cnVjdG9yQWNjZXNzb3JJbXBsLmphdmE6NjIpCglhdCBzdW4ucmVmbGVjdC5EZWxlZ2F0aW5nQ29uc3RydWN0b3JBY2Nlc3NvckltcGwubmV3SW5zdGFuY2UoRGVsZWdhdGluZ0NvbnN0cnVjdG9yQWNjZXNzb3JJbXBsLmphdmE6NDUpCglhdCBqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3Rvci5uZXdJbnN0YW5jZShDb25zdHJ1Y3Rvci5qYXZhOjQyMykKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbnN0cnVjdG9ySW5qZWN0aW9uS3QuaW5zdGFudGlhdGVVc2luZ1BpY29Db250YWluZXIoY29uc3RydWN0b3JJbmplY3Rpb24ua3Q6NDgpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5Db21wb25lbnRNYW5hZ2VySW1wbC5pbnN0YW50aWF0ZUNsYXNzV2l0aENvbnN0cnVjdG9ySW5qZWN0aW9uKENvbXBvbmVudE1hbmFnZXJJbXBsLmt0OjY2MCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLlNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmNyZWF0ZUFuZEluaXRpYWxpemUoU2VydmljZUNvbXBvbmVudEFkYXB0ZXIua3Q6NTQpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5TZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5kb0NyZWF0ZUluc3RhbmNlKFNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmt0OjQxKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2VVbmNhY2hlZChCYXNlQ29tcG9uZW50QWRhcHRlci5rdDoxMTUpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZShCYXNlQ29tcG9uZW50QWRhcHRlci5rdDo2OSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsLmRvR2V0U2VydmljZShDb21wb25lbnRNYW5hZ2VySW1wbC5rdDo0MTEpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5Db21wb25lbnRNYW5hZ2VySW1wbC5nZXRTZXJ2aWNlKENvbXBvbmVudE1hbmFnZXJJbXBsLmt0OjM5NCkKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLmFjdGlvblN5c3RlbS5BY3Rpb25NYW5hZ2VyLmdldEluc3RhbmNlKEFjdGlvbk1hbmFnZXIuamF2YToyOCkKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLndtLmltcGwuSWRlTWVudUJhci5sYW1iZGEkZG9XaXRoTGF6eUFjdGlvbk1hbmFnZXIkNChJZGVNZW51QmFyLmphdmE6Mjc3KQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5kb1J1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjIyKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5hY2Nlc3MkMjAwKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyOSkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IkMS5leGVjdXRlKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyMDEpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEucnVuKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToxOTMpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpCglhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpCgoKMjAyMS0wMS0yNVQxNjowNDoxNy42MDgKY29tLmludGVsbGlqLmRpYWdub3N0aWMuUGx1Z2luRXhjZXB0aW9uOiBTaG9ydCBuYW1lICdEdXBsaWNhdGVDbGFzc0RlY2xhcmF0aW9uJyBpcyBub3QgdW5pcXVlCmNsYXNzICdjb20uYnJlYWtwb2ludC5pbnRlbGxpai5sdWEuY29kZUluc2lnaHQuaW5zcGVjdGlvbi5EdXBsaWNhdGVDbGFzc0RlY2xhcmF0aW9uJyBpbiBQbHVnaW5EZXNjcmlwdG9yKG5hbWU9QXJnb1VJIDIuMC4xLCBpZD1tbXBhc3MucGx1Z2luLCBwYXRoPS9Vc2Vycy95YW90aWFuY2hlbmcvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0dvb2dsZS9BbmRyb2lkU3R1ZGlvNC4xL3BsdWdpbnMvQXJnb1VJKQphbmQKY2xhc3MnY29tLnRhbmcuaW50ZWxsaWoubHVhLmNvZGVJbnNpZ2h0Lmluc3BlY3Rpb24uRHVwbGljYXRlQ2xhc3NEZWNsYXJhdGlvbicgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUVtbXlMdWEsIGlkPWNvbS50YW5nLCBwYXRoPS9Vc2Vycy95YW90aWFuY2hlbmcvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0dvb2dsZS9BbmRyb2lkU3R1ZGlvNC4xL3BsdWdpbnMvaW50ZWxsaWotZW1teWx1YSkKY29uZmxpY3QgW1BsdWdpbjogbW1wYXNzLnBsdWdpbl0KCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5jaGVja0ZvckR1cGxpY2F0ZVNob3J0TmFtZShJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjEzMikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb24oSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YTo3OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb25zKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6NTkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIubGFtYmRhJG5ldyQwKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MzkpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS51dGlsLk5vdE51bGxMYXp5VmFsdWUkMi5jb21wdXRlKE5vdE51bGxMYXp5VmFsdWUuamF2YTo2NykKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnV0aWwuTm90TnVsbExhenlWYWx1ZS5nZXRWYWx1ZShOb3ROdWxsTGF6eVZhbHVlLmphdmE6MzgpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuY3JlYXRlVG9vbHMoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YToxNzIpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmNyZWF0ZVRvb2xzKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ1OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uUHJvZmlsZUltcGwuaW5pdGlhbGl6ZShJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0ODEpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguTmV3SW5zcGVjdGlvblByb2ZpbGUuaW5pdEluc3BlY3Rpb25Ub29scyhJbnNwZWN0aW9uUHJvZmlsZS5rdDoxMTApCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmluaXRpYWxpemUoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDc2KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lk5ld0luc3BlY3Rpb25Qcm9maWxlLmluaXRJbnNwZWN0aW9uVG9vbHMoSW5zcGVjdGlvblByb2ZpbGUua3Q6MTEwKQoJYXQgY29tLmludGVsbGlqLnByb2ZpbGUuY29kZUluc3BlY3Rpb24uUHJvamVjdEluc3BlY3Rpb25Qcm9maWxlTWFuYWdlci5pbml0aWFsaXplQ29tcG9uZW50KFByb2plY3RJbnNwZWN0aW9uUHJvZmlsZU1hbmFnZXIua3Q6OTMpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlSW1wbC5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlSW1wbC5rdDoxMDUpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5rdDo1MCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsLmluaXRpYWxpemVDb21wb25lbnQkaW50ZWxsaWpfcGxhdGZvcm1fc2VydmljZUNvbnRhaW5lcihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDozNTgpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5TZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5jcmVhdGVBbmRJbml0aWFsaXplKFNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmt0OjU4KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuZG9DcmVhdGVJbnN0YW5jZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo0MSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlVW5jYWNoZWQoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6MTE1KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6NjkpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZSRkZWZhdWx0KEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjYyKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29tcG9uZW50TWFuYWdlckltcGwkcHJlbG9hZFNlcnZpY2VzJGZ1dHVyZSQxLnJ1bihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDo4MDIpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZSRBc3luY1J1bi5ydW4oQ29tcGxldGFibGVGdXR1cmUuamF2YToxNjQwKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5kb1J1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjIyKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5hY2Nlc3MkMjAwKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyOSkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IkMS5leGVjdXRlKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyMDEpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEucnVuKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToxOTMpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpCglhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpCgoKMjAyMS0wMS0yNVQxNjowNDoxNy42MjcKY29tLmludGVsbGlqLmRpYWdub3N0aWMuUGx1Z2luRXhjZXB0aW9uOiBTaG9ydCBuYW1lICdFbXB0eUJvZHknIGlzIG5vdCB1bmlxdWUKY2xhc3MgJ2NvbS5icmVha3BvaW50LmludGVsbGlqLmx1YS5jb2RlSW5zaWdodC5pbnNwZWN0aW9uLkVtcHR5Qm9keScgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUFyZ29VSSAyLjAuMSwgaWQ9bW1wYXNzLnBsdWdpbiwgcGF0aD0vVXNlcnMveWFvdGlhbmNoZW5nL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9Hb29nbGUvQW5kcm9pZFN0dWRpbzQuMS9wbHVnaW5zL0FyZ29VSSkKYW5kCmNsYXNzJ2NvbS50YW5nLmludGVsbGlqLmx1YS5jb2RlSW5zaWdodC5pbnNwZWN0aW9uLkVtcHR5Qm9keScgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUVtbXlMdWEsIGlkPWNvbS50YW5nLCBwYXRoPS9Vc2Vycy95YW90aWFuY2hlbmcvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0dvb2dsZS9BbmRyb2lkU3R1ZGlvNC4xL3BsdWdpbnMvaW50ZWxsaWotZW1teWx1YSkKY29uZmxpY3QgW1BsdWdpbjogbW1wYXNzLnBsdWdpbl0KCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5jaGVja0ZvckR1cGxpY2F0ZVNob3J0TmFtZShJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjEzMikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb24oSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YTo3OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb25zKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6NTkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIubGFtYmRhJG5ldyQwKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MzkpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS51dGlsLk5vdE51bGxMYXp5VmFsdWUkMi5jb21wdXRlKE5vdE51bGxMYXp5VmFsdWUuamF2YTo2NykKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnV0aWwuTm90TnVsbExhenlWYWx1ZS5nZXRWYWx1ZShOb3ROdWxsTGF6eVZhbHVlLmphdmE6MzgpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuY3JlYXRlVG9vbHMoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YToxNzIpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmNyZWF0ZVRvb2xzKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ1OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uUHJvZmlsZUltcGwuaW5pdGlhbGl6ZShJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0ODEpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguTmV3SW5zcGVjdGlvblByb2ZpbGUuaW5pdEluc3BlY3Rpb25Ub29scyhJbnNwZWN0aW9uUHJvZmlsZS5rdDoxMTApCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmluaXRpYWxpemUoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDc2KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lk5ld0luc3BlY3Rpb25Qcm9maWxlLmluaXRJbnNwZWN0aW9uVG9vbHMoSW5zcGVjdGlvblByb2ZpbGUua3Q6MTEwKQoJYXQgY29tLmludGVsbGlqLnByb2ZpbGUuY29kZUluc3BlY3Rpb24uUHJvamVjdEluc3BlY3Rpb25Qcm9maWxlTWFuYWdlci5pbml0aWFsaXplQ29tcG9uZW50KFByb2plY3RJbnNwZWN0aW9uUHJvZmlsZU1hbmFnZXIua3Q6OTMpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlSW1wbC5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlSW1wbC5rdDoxMDUpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5rdDo1MCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsLmluaXRpYWxpemVDb21wb25lbnQkaW50ZWxsaWpfcGxhdGZvcm1fc2VydmljZUNvbnRhaW5lcihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDozNTgpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5TZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5jcmVhdGVBbmRJbml0aWFsaXplKFNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmt0OjU4KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuZG9DcmVhdGVJbnN0YW5jZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo0MSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlVW5jYWNoZWQoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6MTE1KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6NjkpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZSRkZWZhdWx0KEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjYyKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29tcG9uZW50TWFuYWdlckltcGwkcHJlbG9hZFNlcnZpY2VzJGZ1dHVyZSQxLnJ1bihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDo4MDIpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZSRBc3luY1J1bi5ydW4oQ29tcGxldGFibGVGdXR1cmUuamF2YToxNjQwKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5kb1J1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjIyKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5hY2Nlc3MkMjAwKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyOSkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IkMS5leGVjdXRlKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyMDEpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEucnVuKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToxOTMpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpCglhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpCgoKMjAyMS0wMS0yNVQxNjowNDoxNy42MjkKY29tLmludGVsbGlqLmRpYWdub3N0aWMuUGx1Z2luRXhjZXB0aW9uOiBTaG9ydCBuYW1lICdVbnJlYWNoYWJsZVN0YXRlbWVudCcgaXMgbm90IHVuaXF1ZQpjbGFzcyAnY29tLmJyZWFrcG9pbnQuaW50ZWxsaWoubHVhLmNvZGVJbnNpZ2h0Lmluc3BlY3Rpb24uVW5yZWFjaGFibGVTdGF0ZW1lbnQnIGluIFBsdWdpbkRlc2NyaXB0b3IobmFtZT1BcmdvVUkgMi4wLjEsIGlkPW1tcGFzcy5wbHVnaW4sIHBhdGg9L1VzZXJzL3lhb3RpYW5jaGVuZy9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvR29vZ2xlL0FuZHJvaWRTdHVkaW80LjEvcGx1Z2lucy9BcmdvVUkpCmFuZApjbGFzcydjb20udGFuZy5pbnRlbGxpai5sdWEuY29kZUluc2lnaHQuaW5zcGVjdGlvbi5VbnJlYWNoYWJsZVN0YXRlbWVudCcgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUVtbXlMdWEsIGlkPWNvbS50YW5nLCBwYXRoPS9Vc2Vycy95YW90aWFuY2hlbmcvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0dvb2dsZS9BbmRyb2lkU3R1ZGlvNC4xL3BsdWdpbnMvaW50ZWxsaWotZW1teWx1YSkKY29uZmxpY3QgW1BsdWdpbjogbW1wYXNzLnBsdWdpbl0KCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5jaGVja0ZvckR1cGxpY2F0ZVNob3J0TmFtZShJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjEzMikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb24oSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YTo3OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb25zKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6NTkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIubGFtYmRhJG5ldyQwKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MzkpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS51dGlsLk5vdE51bGxMYXp5VmFsdWUkMi5jb21wdXRlKE5vdE51bGxMYXp5VmFsdWUuamF2YTo2NykKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnV0aWwuTm90TnVsbExhenlWYWx1ZS5nZXRWYWx1ZShOb3ROdWxsTGF6eVZhbHVlLmphdmE6MzgpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuY3JlYXRlVG9vbHMoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YToxNzIpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmNyZWF0ZVRvb2xzKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ1OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uUHJvZmlsZUltcGwuaW5pdGlhbGl6ZShJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0ODEpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguTmV3SW5zcGVjdGlvblByb2ZpbGUuaW5pdEluc3BlY3Rpb25Ub29scyhJbnNwZWN0aW9uUHJvZmlsZS5rdDoxMTApCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmluaXRpYWxpemUoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDc2KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lk5ld0luc3BlY3Rpb25Qcm9maWxlLmluaXRJbnNwZWN0aW9uVG9vbHMoSW5zcGVjdGlvblByb2ZpbGUua3Q6MTEwKQoJYXQgY29tLmludGVsbGlqLnByb2ZpbGUuY29kZUluc3BlY3Rpb24uUHJvamVjdEluc3BlY3Rpb25Qcm9maWxlTWFuYWdlci5pbml0aWFsaXplQ29tcG9uZW50KFByb2plY3RJbnNwZWN0aW9uUHJvZmlsZU1hbmFnZXIua3Q6OTMpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlSW1wbC5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlSW1wbC5rdDoxMDUpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5rdDo1MCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsLmluaXRpYWxpemVDb21wb25lbnQkaW50ZWxsaWpfcGxhdGZvcm1fc2VydmljZUNvbnRhaW5lcihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDozNTgpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5TZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5jcmVhdGVBbmRJbml0aWFsaXplKFNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmt0OjU4KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuZG9DcmVhdGVJbnN0YW5jZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo0MSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlVW5jYWNoZWQoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6MTE1KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6NjkpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZSRkZWZhdWx0KEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjYyKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29tcG9uZW50TWFuYWdlckltcGwkcHJlbG9hZFNlcnZpY2VzJGZ1dHVyZSQxLnJ1bihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDo4MDIpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZSRBc3luY1J1bi5ydW4oQ29tcGxldGFibGVGdXR1cmUuamF2YToxNjQwKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5kb1J1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjIyKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5hY2Nlc3MkMjAwKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyOSkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IkMS5leGVjdXRlKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyMDEpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEucnVuKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToxOTMpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpCglhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpCgoKMjAyMS0wMS0yNVQxNjowNDoxNy42MjkKY29tLmludGVsbGlqLmRpYWdub3N0aWMuUGx1Z2luRXhjZXB0aW9uOiBTaG9ydCBuYW1lICdBcnJheUluZGV4WmVybycgaXMgbm90IHVuaXF1ZQpjbGFzcyAnY29tLmJyZWFrcG9pbnQuaW50ZWxsaWoubHVhLmNvZGVJbnNpZ2h0Lmluc3BlY3Rpb24uQXJyYXlJbmRleFplcm8nIGluIFBsdWdpbkRlc2NyaXB0b3IobmFtZT1BcmdvVUkgMi4wLjEsIGlkPW1tcGFzcy5wbHVnaW4sIHBhdGg9L1VzZXJzL3lhb3RpYW5jaGVuZy9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvR29vZ2xlL0FuZHJvaWRTdHVkaW80LjEvcGx1Z2lucy9BcmdvVUkpCmFuZApjbGFzcydjb20udGFuZy5pbnRlbGxpai5sdWEuY29kZUluc2lnaHQuaW5zcGVjdGlvbi5BcnJheUluZGV4WmVybycgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUVtbXlMdWEsIGlkPWNvbS50YW5nLCBwYXRoPS9Vc2Vycy95YW90aWFuY2hlbmcvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0dvb2dsZS9BbmRyb2lkU3R1ZGlvNC4xL3BsdWdpbnMvaW50ZWxsaWotZW1teWx1YSkKY29uZmxpY3QgW1BsdWdpbjogbW1wYXNzLnBsdWdpbl0KCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5jaGVja0ZvckR1cGxpY2F0ZVNob3J0TmFtZShJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjEzMikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb24oSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YTo3OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb25zKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6NTkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIubGFtYmRhJG5ldyQwKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MzkpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS51dGlsLk5vdE51bGxMYXp5VmFsdWUkMi5jb21wdXRlKE5vdE51bGxMYXp5VmFsdWUuamF2YTo2NykKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnV0aWwuTm90TnVsbExhenlWYWx1ZS5nZXRWYWx1ZShOb3ROdWxsTGF6eVZhbHVlLmphdmE6MzgpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuY3JlYXRlVG9vbHMoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YToxNzIpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmNyZWF0ZVRvb2xzKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ1OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uUHJvZmlsZUltcGwuaW5pdGlhbGl6ZShJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0ODEpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguTmV3SW5zcGVjdGlvblByb2ZpbGUuaW5pdEluc3BlY3Rpb25Ub29scyhJbnNwZWN0aW9uUHJvZmlsZS5rdDoxMTApCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmluaXRpYWxpemUoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDc2KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lk5ld0luc3BlY3Rpb25Qcm9maWxlLmluaXRJbnNwZWN0aW9uVG9vbHMoSW5zcGVjdGlvblByb2ZpbGUua3Q6MTEwKQoJYXQgY29tLmludGVsbGlqLnByb2ZpbGUuY29kZUluc3BlY3Rpb24uUHJvamVjdEluc3BlY3Rpb25Qcm9maWxlTWFuYWdlci5pbml0aWFsaXplQ29tcG9uZW50KFByb2plY3RJbnNwZWN0aW9uUHJvZmlsZU1hbmFnZXIua3Q6OTMpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlSW1wbC5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlSW1wbC5rdDoxMDUpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5rdDo1MCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsLmluaXRpYWxpemVDb21wb25lbnQkaW50ZWxsaWpfcGxhdGZvcm1fc2VydmljZUNvbnRhaW5lcihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDozNTgpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5TZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5jcmVhdGVBbmRJbml0aWFsaXplKFNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmt0OjU4KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuZG9DcmVhdGVJbnN0YW5jZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo0MSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlVW5jYWNoZWQoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6MTE1KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6NjkpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZSRkZWZhdWx0KEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjYyKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29tcG9uZW50TWFuYWdlckltcGwkcHJlbG9hZFNlcnZpY2VzJGZ1dHVyZSQxLnJ1bihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDo4MDIpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZSRBc3luY1J1bi5ydW4oQ29tcGxldGFibGVGdXR1cmUuamF2YToxNjQwKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5kb1J1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjIyKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5hY2Nlc3MkMjAwKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyOSkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IkMS5leGVjdXRlKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyMDEpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEucnVuKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToxOTMpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpCglhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpCgoKMjAyMS0wMS0yNVQxNjowNDoxNy42MzMKY29tLmludGVsbGlqLmRpYWdub3N0aWMuUGx1Z2luRXhjZXB0aW9uOiBTaG9ydCBuYW1lICdMb2NhbE5hbWVTaGFkb3dlZCcgaXMgbm90IHVuaXF1ZQpjbGFzcyAnY29tLmJyZWFrcG9pbnQuaW50ZWxsaWoubHVhLmNvZGVJbnNpZ2h0Lmluc3BlY3Rpb24uTG9jYWxOYW1lU2hhZG93ZWQnIGluIFBsdWdpbkRlc2NyaXB0b3IobmFtZT1BcmdvVUkgMi4wLjEsIGlkPW1tcGFzcy5wbHVnaW4sIHBhdGg9L1VzZXJzL3lhb3RpYW5jaGVuZy9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvR29vZ2xlL0FuZHJvaWRTdHVkaW80LjEvcGx1Z2lucy9BcmdvVUkpCmFuZApjbGFzcydjb20udGFuZy5pbnRlbGxpai5sdWEuY29kZUluc2lnaHQuaW5zcGVjdGlvbi5Mb2NhbE5hbWVTaGFkb3dlZCcgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUVtbXlMdWEsIGlkPWNvbS50YW5nLCBwYXRoPS9Vc2Vycy95YW90aWFuY2hlbmcvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0dvb2dsZS9BbmRyb2lkU3R1ZGlvNC4xL3BsdWdpbnMvaW50ZWxsaWotZW1teWx1YSkKY29uZmxpY3QgW1BsdWdpbjogbW1wYXNzLnBsdWdpbl0KCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5jaGVja0ZvckR1cGxpY2F0ZVNob3J0TmFtZShJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjEzMikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb24oSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YTo3OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb25zKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6NTkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIubGFtYmRhJG5ldyQwKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MzkpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS51dGlsLk5vdE51bGxMYXp5VmFsdWUkMi5jb21wdXRlKE5vdE51bGxMYXp5VmFsdWUuamF2YTo2NykKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnV0aWwuTm90TnVsbExhenlWYWx1ZS5nZXRWYWx1ZShOb3ROdWxsTGF6eVZhbHVlLmphdmE6MzgpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuY3JlYXRlVG9vbHMoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YToxNzIpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmNyZWF0ZVRvb2xzKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ1OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uUHJvZmlsZUltcGwuaW5pdGlhbGl6ZShJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0ODEpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguTmV3SW5zcGVjdGlvblByb2ZpbGUuaW5pdEluc3BlY3Rpb25Ub29scyhJbnNwZWN0aW9uUHJvZmlsZS5rdDoxMTApCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmluaXRpYWxpemUoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDc2KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lk5ld0luc3BlY3Rpb25Qcm9maWxlLmluaXRJbnNwZWN0aW9uVG9vbHMoSW5zcGVjdGlvblByb2ZpbGUua3Q6MTEwKQoJYXQgY29tLmludGVsbGlqLnByb2ZpbGUuY29kZUluc3BlY3Rpb24uUHJvamVjdEluc3BlY3Rpb25Qcm9maWxlTWFuYWdlci5pbml0aWFsaXplQ29tcG9uZW50KFByb2plY3RJbnNwZWN0aW9uUHJvZmlsZU1hbmFnZXIua3Q6OTMpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlSW1wbC5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlSW1wbC5rdDoxMDUpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5rdDo1MCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsLmluaXRpYWxpemVDb21wb25lbnQkaW50ZWxsaWpfcGxhdGZvcm1fc2VydmljZUNvbnRhaW5lcihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDozNTgpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5TZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5jcmVhdGVBbmRJbml0aWFsaXplKFNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmt0OjU4KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuZG9DcmVhdGVJbnN0YW5jZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo0MSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlVW5jYWNoZWQoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6MTE1KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6NjkpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZSRkZWZhdWx0KEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjYyKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29tcG9uZW50TWFuYWdlckltcGwkcHJlbG9hZFNlcnZpY2VzJGZ1dHVyZSQxLnJ1bihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDo4MDIpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZSRBc3luY1J1bi5ydW4oQ29tcGxldGFibGVGdXR1cmUuamF2YToxNjQwKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5kb1J1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjIyKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5hY2Nlc3MkMjAwKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyOSkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IkMS5leGVjdXRlKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyMDEpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEucnVuKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToxOTMpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpCglhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpCgoKMjAyMS0wMS0yNVQxNjowNDoxNy42MzUKY29tLmludGVsbGlqLmRpYWdub3N0aWMuUGx1Z2luRXhjZXB0aW9uOiBTaG9ydCBuYW1lICdMYW5ndWFnZUxldmVsJyBpcyBub3QgdW5pcXVlCmNsYXNzICdjb20uYnJlYWtwb2ludC5pbnRlbGxpai5sdWEuY29kZUluc2lnaHQuaW5zcGVjdGlvbi5MYW5ndWFnZUxldmVsSW5zcGVjdGlvbicgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUFyZ29VSSAyLjAuMSwgaWQ9bW1wYXNzLnBsdWdpbiwgcGF0aD0vVXNlcnMveWFvdGlhbmNoZW5nL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9Hb29nbGUvQW5kcm9pZFN0dWRpbzQuMS9wbHVnaW5zL0FyZ29VSSkKYW5kCmNsYXNzJ2NvbS50YW5nLmludGVsbGlqLmx1YS5jb2RlSW5zaWdodC5pbnNwZWN0aW9uLkxhbmd1YWdlTGV2ZWxJbnNwZWN0aW9uJyBpbiBQbHVnaW5EZXNjcmlwdG9yKG5hbWU9RW1teUx1YSwgaWQ9Y29tLnRhbmcsIHBhdGg9L1VzZXJzL3lhb3RpYW5jaGVuZy9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvR29vZ2xlL0FuZHJvaWRTdHVkaW80LjEvcGx1Z2lucy9pbnRlbGxpai1lbW15bHVhKQpjb25mbGljdCBbUGx1Z2luOiBtbXBhc3MucGx1Z2luXQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmNoZWNrRm9yRHVwbGljYXRlU2hvcnROYW1lKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MTMyKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLnJlZ2lzdGVySW5zcGVjdGlvbihJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjc5KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLnJlZ2lzdGVySW5zcGVjdGlvbnMoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YTo1OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5sYW1iZGEkbmV3JDAoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YTozOSkKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnV0aWwuTm90TnVsbExhenlWYWx1ZSQyLmNvbXB1dGUoTm90TnVsbExhenlWYWx1ZS5qYXZhOjY3KQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkudXRpbC5Ob3ROdWxsTGF6eVZhbHVlLmdldFZhbHVlKE5vdE51bGxMYXp5VmFsdWUuamF2YTozOCkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5jcmVhdGVUb29scyhJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjE3MikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uUHJvZmlsZUltcGwuY3JlYXRlVG9vbHMoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDU5KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Qcm9maWxlSW1wbC5pbml0aWFsaXplKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ4MSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5OZXdJbnNwZWN0aW9uUHJvZmlsZS5pbml0SW5zcGVjdGlvblRvb2xzKEluc3BlY3Rpb25Qcm9maWxlLmt0OjExMCkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uUHJvZmlsZUltcGwuaW5pdGlhbGl6ZShJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0NzYpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguTmV3SW5zcGVjdGlvblByb2ZpbGUuaW5pdEluc3BlY3Rpb25Ub29scyhJbnNwZWN0aW9uUHJvZmlsZS5rdDoxMTApCglhdCBjb20uaW50ZWxsaWoucHJvZmlsZS5jb2RlSW5zcGVjdGlvbi5Qcm9qZWN0SW5zcGVjdGlvblByb2ZpbGVNYW5hZ2VyLmluaXRpYWxpemVDb21wb25lbnQoUHJvamVjdEluc3BlY3Rpb25Qcm9maWxlTWFuYWdlci5rdDo5MykKCWF0IGNvbS5pbnRlbGxpai5jb25maWd1cmF0aW9uU3RvcmUuQ29tcG9uZW50U3RvcmVJbXBsLmluaXRDb21wb25lbnQoQ29tcG9uZW50U3RvcmVJbXBsLmt0OjEwNSkKCWF0IGNvbS5pbnRlbGxpai5jb25maWd1cmF0aW9uU3RvcmUuQ29tcG9uZW50U3RvcmVXaXRoRXh0cmFDb21wb25lbnRzLmluaXRDb21wb25lbnQoQ29tcG9uZW50U3RvcmVXaXRoRXh0cmFDb21wb25lbnRzLmt0OjUwKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29tcG9uZW50TWFuYWdlckltcGwuaW5pdGlhbGl6ZUNvbXBvbmVudCRpbnRlbGxpal9wbGF0Zm9ybV9zZXJ2aWNlQ29udGFpbmVyKENvbXBvbmVudE1hbmFnZXJJbXBsLmt0OjM1OCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLlNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmNyZWF0ZUFuZEluaXRpYWxpemUoU2VydmljZUNvbXBvbmVudEFkYXB0ZXIua3Q6NTgpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5TZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5kb0NyZWF0ZUluc3RhbmNlKFNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmt0OjQxKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2VVbmNhY2hlZChCYXNlQ29tcG9uZW50QWRhcHRlci5rdDoxMTUpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZShCYXNlQ29tcG9uZW50QWRhcHRlci5rdDo2OSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlJGRlZmF1bHQoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6NjIpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5Db21wb25lbnRNYW5hZ2VySW1wbCRwcmVsb2FkU2VydmljZXMkZnV0dXJlJDEucnVuKENvbXBvbmVudE1hbmFnZXJJbXBsLmt0OjgwMikKCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkNvbXBsZXRhYmxlRnV0dXJlJEFzeW5jUnVuLnJ1bihDb21wbGV0YWJsZUZ1dHVyZS5qYXZhOjE2NDApCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yLmRvUnVuKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyMjIpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yLmFjY2VzcyQyMDAoQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjI5KQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvciQxLmV4ZWN1dGUoQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjIwMSkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IkMS5ydW4oQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjE5MykKCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSkKCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNCkKCWF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OCkKCgoyMDIxLTAxLTI1VDE2OjA0OjE3LjY0Mgpjb20uaW50ZWxsaWouZGlhZ25vc3RpYy5QbHVnaW5FeGNlcHRpb246IFNob3J0IG5hbWUgJ1VuZGVjbGFyZWRWYXJpYWJsZScgaXMgbm90IHVuaXF1ZQpjbGFzcyAnY29tLmJyZWFrcG9pbnQuaW50ZWxsaWoubHVhLmNvZGVJbnNpZ2h0Lmluc3BlY3Rpb24uVW5kZWNsYXJlZFZhcmlhYmxlSW5zcGVjdGlvbicgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUFyZ29VSSAyLjAuMSwgaWQ9bW1wYXNzLnBsdWdpbiwgcGF0aD0vVXNlcnMveWFvdGlhbmNoZW5nL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9Hb29nbGUvQW5kcm9pZFN0dWRpbzQuMS9wbHVnaW5zL0FyZ29VSSkKYW5kCmNsYXNzJ2NvbS50YW5nLmludGVsbGlqLmx1YS5jb2RlSW5zaWdodC5pbnNwZWN0aW9uLlVuZGVjbGFyZWRWYXJpYWJsZUluc3BlY3Rpb24nIGluIFBsdWdpbkRlc2NyaXB0b3IobmFtZT1FbW15THVhLCBpZD1jb20udGFuZywgcGF0aD0vVXNlcnMveWFvdGlhbmNoZW5nL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9Hb29nbGUvQW5kcm9pZFN0dWRpbzQuMS9wbHVnaW5zL2ludGVsbGlqLWVtbXlsdWEpCmNvbmZsaWN0IFtQbHVnaW46IG1tcGFzcy5wbHVnaW5dCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuY2hlY2tGb3JEdXBsaWNhdGVTaG9ydE5hbWUoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YToxMzIpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIucmVnaXN0ZXJJbnNwZWN0aW9uKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6NzkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIucmVnaXN0ZXJJbnNwZWN0aW9ucyhJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjU5KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmxhbWJkYSRuZXckMChJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjM5KQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkudXRpbC5Ob3ROdWxsTGF6eVZhbHVlJDIuY29tcHV0ZShOb3ROdWxsTGF6eVZhbHVlLmphdmE6NjcpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS51dGlsLk5vdE51bGxMYXp5VmFsdWUuZ2V0VmFsdWUoTm90TnVsbExhenlWYWx1ZS5qYXZhOjM4KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmNyZWF0ZVRvb2xzKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MTcyKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Qcm9maWxlSW1wbC5jcmVhdGVUb29scyhJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0NTkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmluaXRpYWxpemUoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDgxKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lk5ld0luc3BlY3Rpb25Qcm9maWxlLmluaXRJbnNwZWN0aW9uVG9vbHMoSW5zcGVjdGlvblByb2ZpbGUua3Q6MTEwKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Qcm9maWxlSW1wbC5pbml0aWFsaXplKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ3NikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5OZXdJbnNwZWN0aW9uUHJvZmlsZS5pbml0SW5zcGVjdGlvblRvb2xzKEluc3BlY3Rpb25Qcm9maWxlLmt0OjExMCkKCWF0IGNvbS5pbnRlbGxpai5wcm9maWxlLmNvZGVJbnNwZWN0aW9uLlByb2plY3RJbnNwZWN0aW9uUHJvZmlsZU1hbmFnZXIuaW5pdGlhbGl6ZUNvbXBvbmVudChQcm9qZWN0SW5zcGVjdGlvblByb2ZpbGVNYW5hZ2VyLmt0OjkzKQoJYXQgY29tLmludGVsbGlqLmNvbmZpZ3VyYXRpb25TdG9yZS5Db21wb25lbnRTdG9yZUltcGwuaW5pdENvbXBvbmVudChDb21wb25lbnRTdG9yZUltcGwua3Q6MTA1KQoJYXQgY29tLmludGVsbGlqLmNvbmZpZ3VyYXRpb25TdG9yZS5Db21wb25lbnRTdG9yZVdpdGhFeHRyYUNvbXBvbmVudHMuaW5pdENvbXBvbmVudChDb21wb25lbnRTdG9yZVdpdGhFeHRyYUNvbXBvbmVudHMua3Q6NTApCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5Db21wb25lbnRNYW5hZ2VySW1wbC5pbml0aWFsaXplQ29tcG9uZW50JGludGVsbGlqX3BsYXRmb3JtX3NlcnZpY2VDb250YWluZXIoQ29tcG9uZW50TWFuYWdlckltcGwua3Q6MzU4KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuY3JlYXRlQW5kSW5pdGlhbGl6ZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo1OCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLlNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmRvQ3JlYXRlSW5zdGFuY2UoU2VydmljZUNvbXBvbmVudEFkYXB0ZXIua3Q6NDEpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZVVuY2FjaGVkKEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjExNSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlKEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjY5KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UkZGVmYXVsdChCYXNlQ29tcG9uZW50QWRhcHRlci5rdDo2MikKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsJHByZWxvYWRTZXJ2aWNlcyRmdXR1cmUkMS5ydW4oQ29tcG9uZW50TWFuYWdlckltcGwua3Q6ODAyKQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGFibGVGdXR1cmUkQXN5bmNSdW4ucnVuKENvbXBsZXRhYmxlRnV0dXJlLmphdmE6MTY0MCkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IuZG9SdW4oQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjIyMikKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IuYWNjZXNzJDIwMChCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjkpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEuZXhlY3V0ZShCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjAxKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvciQxLnJ1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MTkzKQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KQoJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KQoKCjIwMjEtMDEtMjVUMTY6MDQ6MTcuNjQ0CmNvbS5pbnRlbGxpai5kaWFnbm9zdGljLlBsdWdpbkV4Y2VwdGlvbjogU2hvcnQgbmFtZSAnR2xvYmFsTmFtZUNhbmJlTG9jYWwnIGlzIG5vdCB1bmlxdWUKY2xhc3MgJ2NvbS5icmVha3BvaW50LmludGVsbGlqLmx1YS5jb2RlSW5zaWdodC5pbnNwZWN0aW9uLkdsb2JhbE5hbWVDYW5iZUxvY2FsJyBpbiBQbHVnaW5EZXNjcmlwdG9yKG5hbWU9QXJnb1VJIDIuMC4xLCBpZD1tbXBhc3MucGx1Z2luLCBwYXRoPS9Vc2Vycy95YW90aWFuY2hlbmcvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0dvb2dsZS9BbmRyb2lkU3R1ZGlvNC4xL3BsdWdpbnMvQXJnb1VJKQphbmQKY2xhc3MnY29tLnRhbmcuaW50ZWxsaWoubHVhLmNvZGVJbnNpZ2h0Lmluc3BlY3Rpb24uR2xvYmFsTmFtZUNhbmJlTG9jYWwnIGluIFBsdWdpbkRlc2NyaXB0b3IobmFtZT1FbW15THVhLCBpZD1jb20udGFuZywgcGF0aD0vVXNlcnMveWFvdGlhbmNoZW5nL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9Hb29nbGUvQW5kcm9pZFN0dWRpbzQuMS9wbHVnaW5zL2ludGVsbGlqLWVtbXlsdWEpCmNvbmZsaWN0IFtQbHVnaW46IG1tcGFzcy5wbHVnaW5dCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuY2hlY2tGb3JEdXBsaWNhdGVTaG9ydE5hbWUoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YToxMzIpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIucmVnaXN0ZXJJbnNwZWN0aW9uKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6NzkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIucmVnaXN0ZXJJbnNwZWN0aW9ucyhJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjU5KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmxhbWJkYSRuZXckMChJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjM5KQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkudXRpbC5Ob3ROdWxsTGF6eVZhbHVlJDIuY29tcHV0ZShOb3ROdWxsTGF6eVZhbHVlLmphdmE6NjcpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS51dGlsLk5vdE51bGxMYXp5VmFsdWUuZ2V0VmFsdWUoTm90TnVsbExhenlWYWx1ZS5qYXZhOjM4KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmNyZWF0ZVRvb2xzKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MTcyKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Qcm9maWxlSW1wbC5jcmVhdGVUb29scyhJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0NTkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmluaXRpYWxpemUoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDgxKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lk5ld0luc3BlY3Rpb25Qcm9maWxlLmluaXRJbnNwZWN0aW9uVG9vbHMoSW5zcGVjdGlvblByb2ZpbGUua3Q6MTEwKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Qcm9maWxlSW1wbC5pbml0aWFsaXplKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ3NikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5OZXdJbnNwZWN0aW9uUHJvZmlsZS5pbml0SW5zcGVjdGlvblRvb2xzKEluc3BlY3Rpb25Qcm9maWxlLmt0OjExMCkKCWF0IGNvbS5pbnRlbGxpai5wcm9maWxlLmNvZGVJbnNwZWN0aW9uLlByb2plY3RJbnNwZWN0aW9uUHJvZmlsZU1hbmFnZXIuaW5pdGlhbGl6ZUNvbXBvbmVudChQcm9qZWN0SW5zcGVjdGlvblByb2ZpbGVNYW5hZ2VyLmt0OjkzKQoJYXQgY29tLmludGVsbGlqLmNvbmZpZ3VyYXRpb25TdG9yZS5Db21wb25lbnRTdG9yZUltcGwuaW5pdENvbXBvbmVudChDb21wb25lbnRTdG9yZUltcGwua3Q6MTA1KQoJYXQgY29tLmludGVsbGlqLmNvbmZpZ3VyYXRpb25TdG9yZS5Db21wb25lbnRTdG9yZVdpdGhFeHRyYUNvbXBvbmVudHMuaW5pdENvbXBvbmVudChDb21wb25lbnRTdG9yZVdpdGhFeHRyYUNvbXBvbmVudHMua3Q6NTApCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5Db21wb25lbnRNYW5hZ2VySW1wbC5pbml0aWFsaXplQ29tcG9uZW50JGludGVsbGlqX3BsYXRmb3JtX3NlcnZpY2VDb250YWluZXIoQ29tcG9uZW50TWFuYWdlckltcGwua3Q6MzU4KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuY3JlYXRlQW5kSW5pdGlhbGl6ZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo1OCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLlNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmRvQ3JlYXRlSW5zdGFuY2UoU2VydmljZUNvbXBvbmVudEFkYXB0ZXIua3Q6NDEpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZVVuY2FjaGVkKEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjExNSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlKEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjY5KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UkZGVmYXVsdChCYXNlQ29tcG9uZW50QWRhcHRlci5rdDo2MikKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsJHByZWxvYWRTZXJ2aWNlcyRmdXR1cmUkMS5ydW4oQ29tcG9uZW50TWFuYWdlckltcGwua3Q6ODAyKQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGFibGVGdXR1cmUkQXN5bmNSdW4ucnVuKENvbXBsZXRhYmxlRnV0dXJlLmphdmE6MTY0MCkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IuZG9SdW4oQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjIyMikKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IuYWNjZXNzJDIwMChCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjkpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEuZXhlY3V0ZShCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjAxKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvciQxLnJ1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MTkzKQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KQoJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KQoKCjIwMjEtMDEtMjVUMTY6MDQ6MTcuNjU3CmNvbS5pbnRlbGxpai5kaWFnbm9zdGljLlBsdWdpbkV4Y2VwdGlvbjogU2hvcnQgbmFtZSAnTHVhRGVwcmVjYXRpb24nIGlzIG5vdCB1bmlxdWUKY2xhc3MgJ2NvbS5icmVha3BvaW50LmludGVsbGlqLmx1YS5jb2RlSW5zaWdodC5pbnNwZWN0aW9uLkx1YURlcHJlY2F0aW9uSW5zcGVjdGlvbicgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUFyZ29VSSAyLjAuMSwgaWQ9bW1wYXNzLnBsdWdpbiwgcGF0aD0vVXNlcnMveWFvdGlhbmNoZW5nL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9Hb29nbGUvQW5kcm9pZFN0dWRpbzQuMS9wbHVnaW5zL0FyZ29VSSkKYW5kCmNsYXNzJ2NvbS50YW5nLmludGVsbGlqLmx1YS5jb2RlSW5zaWdodC5pbnNwZWN0aW9uLkx1YURlcHJlY2F0aW9uSW5zcGVjdGlvbicgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUVtbXlMdWEsIGlkPWNvbS50YW5nLCBwYXRoPS9Vc2Vycy95YW90aWFuY2hlbmcvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0dvb2dsZS9BbmRyb2lkU3R1ZGlvNC4xL3BsdWdpbnMvaW50ZWxsaWotZW1teWx1YSkKY29uZmxpY3QgW1BsdWdpbjogbW1wYXNzLnBsdWdpbl0KCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5jaGVja0ZvckR1cGxpY2F0ZVNob3J0TmFtZShJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjEzMikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb24oSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YTo3OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5yZWdpc3Rlckluc3BlY3Rpb25zKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6NTkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIubGFtYmRhJG5ldyQwKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MzkpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS51dGlsLk5vdE51bGxMYXp5VmFsdWUkMi5jb21wdXRlKE5vdE51bGxMYXp5VmFsdWUuamF2YTo2NykKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnV0aWwuTm90TnVsbExhenlWYWx1ZS5nZXRWYWx1ZShOb3ROdWxsTGF6eVZhbHVlLmphdmE6MzgpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuY3JlYXRlVG9vbHMoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YToxNzIpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmNyZWF0ZVRvb2xzKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ1OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uUHJvZmlsZUltcGwuaW5pdGlhbGl6ZShJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0ODEpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguTmV3SW5zcGVjdGlvblByb2ZpbGUuaW5pdEluc3BlY3Rpb25Ub29scyhJbnNwZWN0aW9uUHJvZmlsZS5rdDoxMTApCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmluaXRpYWxpemUoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDc2KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lk5ld0luc3BlY3Rpb25Qcm9maWxlLmluaXRJbnNwZWN0aW9uVG9vbHMoSW5zcGVjdGlvblByb2ZpbGUua3Q6MTEwKQoJYXQgY29tLmludGVsbGlqLnByb2ZpbGUuY29kZUluc3BlY3Rpb24uUHJvamVjdEluc3BlY3Rpb25Qcm9maWxlTWFuYWdlci5pbml0aWFsaXplQ29tcG9uZW50KFByb2plY3RJbnNwZWN0aW9uUHJvZmlsZU1hbmFnZXIua3Q6OTMpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlSW1wbC5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlSW1wbC5rdDoxMDUpCglhdCBjb20uaW50ZWxsaWouY29uZmlndXJhdGlvblN0b3JlLkNvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5pbml0Q29tcG9uZW50KENvbXBvbmVudFN0b3JlV2l0aEV4dHJhQ29tcG9uZW50cy5rdDo1MCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsLmluaXRpYWxpemVDb21wb25lbnQkaW50ZWxsaWpfcGxhdGZvcm1fc2VydmljZUNvbnRhaW5lcihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDozNTgpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5TZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5jcmVhdGVBbmRJbml0aWFsaXplKFNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmt0OjU4KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuZG9DcmVhdGVJbnN0YW5jZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo0MSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlVW5jYWNoZWQoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6MTE1KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6NjkpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZSRkZWZhdWx0KEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjYyKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29tcG9uZW50TWFuYWdlckltcGwkcHJlbG9hZFNlcnZpY2VzJGZ1dHVyZSQxLnJ1bihDb21wb25lbnRNYW5hZ2VySW1wbC5rdDo4MDIpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZSRBc3luY1J1bi5ydW4oQ29tcGxldGFibGVGdXR1cmUuamF2YToxNjQwKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5kb1J1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjIyKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvci5hY2Nlc3MkMjAwKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyOSkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IkMS5leGVjdXRlKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyMDEpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEucnVuKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToxOTMpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpCglhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpCgoKMjAyMS0wMS0yNVQxNjowNDoxNy42NTkKY29tLmludGVsbGlqLmRpYWdub3N0aWMuUGx1Z2luRXhjZXB0aW9uOiBTaG9ydCBuYW1lICdVbnJlc29sdmVkU3ltYm9sSW5FbW15RG9jJyBpcyBub3QgdW5pcXVlCmNsYXNzICdjb20uYnJlYWtwb2ludC5pbnRlbGxpai5sdWEuY29kZUluc2lnaHQuaW5zcGVjdGlvbi5kb2MuVW5yZXNvbHZlZFN5bWJvbEluRW1teURvY0luc3BlY3Rpb24nIGluIFBsdWdpbkRlc2NyaXB0b3IobmFtZT1BcmdvVUkgMi4wLjEsIGlkPW1tcGFzcy5wbHVnaW4sIHBhdGg9L1VzZXJzL3lhb3RpYW5jaGVuZy9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvR29vZ2xlL0FuZHJvaWRTdHVkaW80LjEvcGx1Z2lucy9BcmdvVUkpCmFuZApjbGFzcydjb20udGFuZy5pbnRlbGxpai5sdWEuY29kZUluc2lnaHQuaW5zcGVjdGlvbi5kb2MuVW5yZXNvbHZlZFN5bWJvbEluRW1teURvY0luc3BlY3Rpb24nIGluIFBsdWdpbkRlc2NyaXB0b3IobmFtZT1FbW15THVhLCBpZD1jb20udGFuZywgcGF0aD0vVXNlcnMveWFvdGlhbmNoZW5nL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9Hb29nbGUvQW5kcm9pZFN0dWRpbzQuMS9wbHVnaW5zL2ludGVsbGlqLWVtbXlsdWEpCmNvbmZsaWN0IFtQbHVnaW46IG1tcGFzcy5wbHVnaW5dCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuY2hlY2tGb3JEdXBsaWNhdGVTaG9ydE5hbWUoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YToxMzIpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIucmVnaXN0ZXJJbnNwZWN0aW9uKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6NzkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIucmVnaXN0ZXJJbnNwZWN0aW9ucyhJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjU5KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmxhbWJkYSRuZXckMChJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjM5KQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkudXRpbC5Ob3ROdWxsTGF6eVZhbHVlJDIuY29tcHV0ZShOb3ROdWxsTGF6eVZhbHVlLmphdmE6NjcpCglhdCBjb20uaW50ZWxsaWoub3BlbmFwaS51dGlsLk5vdE51bGxMYXp5VmFsdWUuZ2V0VmFsdWUoTm90TnVsbExhenlWYWx1ZS5qYXZhOjM4KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmNyZWF0ZVRvb2xzKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MTcyKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Qcm9maWxlSW1wbC5jcmVhdGVUb29scyhJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0NTkpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguSW5zcGVjdGlvblByb2ZpbGVJbXBsLmluaXRpYWxpemUoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDgxKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lk5ld0luc3BlY3Rpb25Qcm9maWxlLmluaXRJbnNwZWN0aW9uVG9vbHMoSW5zcGVjdGlvblByb2ZpbGUua3Q6MTEwKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Qcm9maWxlSW1wbC5pbml0aWFsaXplKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ3NikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5OZXdJbnNwZWN0aW9uUHJvZmlsZS5pbml0SW5zcGVjdGlvblRvb2xzKEluc3BlY3Rpb25Qcm9maWxlLmt0OjExMCkKCWF0IGNvbS5pbnRlbGxpai5wcm9maWxlLmNvZGVJbnNwZWN0aW9uLlByb2plY3RJbnNwZWN0aW9uUHJvZmlsZU1hbmFnZXIuaW5pdGlhbGl6ZUNvbXBvbmVudChQcm9qZWN0SW5zcGVjdGlvblByb2ZpbGVNYW5hZ2VyLmt0OjkzKQoJYXQgY29tLmludGVsbGlqLmNvbmZpZ3VyYXRpb25TdG9yZS5Db21wb25lbnRTdG9yZUltcGwuaW5pdENvbXBvbmVudChDb21wb25lbnRTdG9yZUltcGwua3Q6MTA1KQoJYXQgY29tLmludGVsbGlqLmNvbmZpZ3VyYXRpb25TdG9yZS5Db21wb25lbnRTdG9yZVdpdGhFeHRyYUNvbXBvbmVudHMuaW5pdENvbXBvbmVudChDb21wb25lbnRTdG9yZVdpdGhFeHRyYUNvbXBvbmVudHMua3Q6NTApCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5Db21wb25lbnRNYW5hZ2VySW1wbC5pbml0aWFsaXplQ29tcG9uZW50JGludGVsbGlqX3BsYXRmb3JtX3NlcnZpY2VDb250YWluZXIoQ29tcG9uZW50TWFuYWdlckltcGwua3Q6MzU4KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuY3JlYXRlQW5kSW5pdGlhbGl6ZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo1OCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLlNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmRvQ3JlYXRlSW5zdGFuY2UoU2VydmljZUNvbXBvbmVudEFkYXB0ZXIua3Q6NDEpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZVVuY2FjaGVkKEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjExNSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlKEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjY5KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UkZGVmYXVsdChCYXNlQ29tcG9uZW50QWRhcHRlci5rdDo2MikKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsJHByZWxvYWRTZXJ2aWNlcyRmdXR1cmUkMS5ydW4oQ29tcG9uZW50TWFuYWdlckltcGwua3Q6ODAyKQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGFibGVGdXR1cmUkQXN5bmNSdW4ucnVuKENvbXBsZXRhYmxlRnV0dXJlLmphdmE6MTY0MCkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IuZG9SdW4oQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjIyMikKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IuYWNjZXNzJDIwMChCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjkpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yJDEuZXhlY3V0ZShCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MjAxKQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvciQxLnJ1bihCb3VuZGVkVGFza0V4ZWN1dG9yLmphdmE6MTkzKQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KQoJYXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KQoKCjIwMjEtMDEtMjVUMTY6MDQ6MTcuNjYyCmNvbS5pbnRlbGxpai5kaWFnbm9zdGljLlBsdWdpbkV4Y2VwdGlvbjogU2hvcnQgbmFtZSAnVW5yZXNvbHZlZENsYXNzJyBpcyBub3QgdW5pcXVlCmNsYXNzICdjb20uYnJlYWtwb2ludC5pbnRlbGxpai5sdWEuY29kZUluc2lnaHQuaW5zcGVjdGlvbi5kb2MuVW5yZXNvbHZlZENsYXNzSW5zcGVjdGlvbicgaW4gUGx1Z2luRGVzY3JpcHRvcihuYW1lPUFyZ29VSSAyLjAuMSwgaWQ9bW1wYXNzLnBsdWdpbiwgcGF0aD0vVXNlcnMveWFvdGlhbmNoZW5nL0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC9Hb29nbGUvQW5kcm9pZFN0dWRpbzQuMS9wbHVnaW5zL0FyZ29VSSkKYW5kCmNsYXNzJ2NvbS50YW5nLmludGVsbGlqLmx1YS5jb2RlSW5zaWdodC5pbnNwZWN0aW9uLmRvYy5VbnJlc29sdmVkQ2xhc3NJbnNwZWN0aW9uJyBpbiBQbHVnaW5EZXNjcmlwdG9yKG5hbWU9RW1teUx1YSwgaWQ9Y29tLnRhbmcsIHBhdGg9L1VzZXJzL3lhb3RpYW5jaGVuZy9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvR29vZ2xlL0FuZHJvaWRTdHVkaW80LjEvcGx1Z2lucy9pbnRlbGxpai1lbW15bHVhKQpjb25mbGljdCBbUGx1Z2luOiBtbXBhc3MucGx1Z2luXQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmNoZWNrRm9yRHVwbGljYXRlU2hvcnROYW1lKEluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLmphdmE6MTMyKQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLnJlZ2lzdGVySW5zcGVjdGlvbihJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjc5KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Ub29sUmVnaXN0cmFyLnJlZ2lzdGVySW5zcGVjdGlvbnMoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YTo1OSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5sYW1iZGEkbmV3JDAoSW5zcGVjdGlvblRvb2xSZWdpc3RyYXIuamF2YTozOSkKCWF0IGNvbS5pbnRlbGxpai5vcGVuYXBpLnV0aWwuTm90TnVsbExhenlWYWx1ZSQyLmNvbXB1dGUoTm90TnVsbExhenlWYWx1ZS5qYXZhOjY3KQoJYXQgY29tLmludGVsbGlqLm9wZW5hcGkudXRpbC5Ob3ROdWxsTGF6eVZhbHVlLmdldFZhbHVlKE5vdE51bGxMYXp5VmFsdWUuamF2YTozOCkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5jcmVhdGVUb29scyhJbnNwZWN0aW9uVG9vbFJlZ2lzdHJhci5qYXZhOjE3MikKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uUHJvZmlsZUltcGwuY3JlYXRlVG9vbHMoSW5zcGVjdGlvblByb2ZpbGVJbXBsLmphdmE6NDU5KQoJYXQgY29tLmludGVsbGlqLmNvZGVJbnNwZWN0aW9uLmV4Lkluc3BlY3Rpb25Qcm9maWxlSW1wbC5pbml0aWFsaXplKEluc3BlY3Rpb25Qcm9maWxlSW1wbC5qYXZhOjQ4MSkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5OZXdJbnNwZWN0aW9uUHJvZmlsZS5pbml0SW5zcGVjdGlvblRvb2xzKEluc3BlY3Rpb25Qcm9maWxlLmt0OjExMCkKCWF0IGNvbS5pbnRlbGxpai5jb2RlSW5zcGVjdGlvbi5leC5JbnNwZWN0aW9uUHJvZmlsZUltcGwuaW5pdGlhbGl6ZShJbnNwZWN0aW9uUHJvZmlsZUltcGwuamF2YTo0NzYpCglhdCBjb20uaW50ZWxsaWouY29kZUluc3BlY3Rpb24uZXguTmV3SW5zcGVjdGlvblByb2ZpbGUuaW5pdEluc3BlY3Rpb25Ub29scyhJbnNwZWN0aW9uUHJvZmlsZS5rdDoxMTApCglhdCBjb20uaW50ZWxsaWoucHJvZmlsZS5jb2RlSW5zcGVjdGlvbi5Qcm9qZWN0SW5zcGVjdGlvblByb2ZpbGVNYW5hZ2VyLmluaXRpYWxpemVDb21wb25lbnQoUHJvamVjdEluc3BlY3Rpb25Qcm9maWxlTWFuYWdlci5rdDo5MykKCWF0IGNvbS5pbnRlbGxpai5jb25maWd1cmF0aW9uU3RvcmUuQ29tcG9uZW50U3RvcmVJbXBsLmluaXRDb21wb25lbnQoQ29tcG9uZW50U3RvcmVJbXBsLmt0OjEwNSkKCWF0IGNvbS5pbnRlbGxpai5jb25maWd1cmF0aW9uU3RvcmUuQ29tcG9uZW50U3RvcmVXaXRoRXh0cmFDb21wb25lbnRzLmluaXRDb21wb25lbnQoQ29tcG9uZW50U3RvcmVXaXRoRXh0cmFDb21wb25lbnRzLmt0OjUwKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29tcG9uZW50TWFuYWdlckltcGwuaW5pdGlhbGl6ZUNvbXBvbmVudCRpbnRlbGxpal9wbGF0Zm9ybV9zZXJ2aWNlQ29udGFpbmVyKENvbXBvbmVudE1hbmFnZXJJbXBsLmt0OjM1OCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLlNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmNyZWF0ZUFuZEluaXRpYWxpemUoU2VydmljZUNvbXBvbmVudEFkYXB0ZXIua3Q6NTgpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5TZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5kb0NyZWF0ZUluc3RhbmNlKFNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmt0OjQxKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2VVbmNhY2hlZChCYXNlQ29tcG9uZW50QWRhcHRlci5rdDoxMTUpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZShCYXNlQ29tcG9uZW50QWRhcHRlci5rdDo2OSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlJGRlZmF1bHQoQmFzZUNvbXBvbmVudEFkYXB0ZXIua3Q6NjIpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5Db21wb25lbnRNYW5hZ2VySW1wbCRwcmVsb2FkU2VydmljZXMkZnV0dXJlJDEucnVuKENvbXBvbmVudE1hbmFnZXJJbXBsLmt0OjgwMikKCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkNvbXBsZXRhYmxlRnV0dXJlJEFzeW5jUnVuLnJ1bihDb21wbGV0YWJsZUZ1dHVyZS5qYXZhOjE2NDApCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yLmRvUnVuKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyMjIpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yLmFjY2VzcyQyMDAoQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjI5KQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvciQxLmV4ZWN1dGUoQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjIwMSkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IkMS5ydW4oQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjE5MykKCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSkKCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNCkKCWF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OCkKCgoyMDIxLTAxLTI1VDE2OjA0OjE4LjE0MQpqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0aW9uRXhjZXB0aW9uOiBqYXZhLmxhbmcuTm9DbGFzc0RlZkZvdW5kRXJyb3I6IENvdWxkIG5vdCBpbml0aWFsaXplIGNsYXNzIGNvbS50YW5nLmludGVsbGlqLmx1YS5sYW5nLkx1YUxhbmd1YWdlCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZS5lbmNvZGVUaHJvd2FibGUoQ29tcGxldGFibGVGdXR1cmUuamF2YToyNzMpCglhdCBqYXZhLnV0aWwuY29uY3VycmVudC5Db21wbGV0YWJsZUZ1dHVyZS5jb21wbGV0ZVRocm93YWJsZShDb21wbGV0YWJsZUZ1dHVyZS5qYXZhOjI4MCkKCWF0IGphdmEudXRpbC5jb25jdXJyZW50LkNvbXBsZXRhYmxlRnV0dXJlJEFzeW5jUnVuLnJ1bihDb21wbGV0YWJsZUZ1dHVyZS5qYXZhOjE2NDMpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yLmRvUnVuKEJvdW5kZWRUYXNrRXhlY3V0b3IuamF2YToyMjIpCglhdCBjb20uaW50ZWxsaWoudXRpbC5jb25jdXJyZW5jeS5Cb3VuZGVkVGFza0V4ZWN1dG9yLmFjY2VzcyQyMDAoQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjI5KQoJYXQgY29tLmludGVsbGlqLnV0aWwuY29uY3VycmVuY3kuQm91bmRlZFRhc2tFeGVjdXRvciQxLmV4ZWN1dGUoQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjIwMSkKCWF0IGNvbS5pbnRlbGxpai51dGlsLmNvbmN1cnJlbmN5LkJvdW5kZWRUYXNrRXhlY3V0b3IkMS5ydW4oQm91bmRlZFRhc2tFeGVjdXRvci5qYXZhOjE5MykKCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSkKCWF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNCkKCWF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OCkKQ2F1c2VkIGJ5OiBqYXZhLmxhbmcuTm9DbGFzc0RlZkZvdW5kRXJyb3I6IENvdWxkIG5vdCBpbml0aWFsaXplIGNsYXNzIGNvbS50YW5nLmludGVsbGlqLmx1YS5sYW5nLkx1YUxhbmd1YWdlCglhdCBjb20udGFuZy5pbnRlbGxpai5sdWEuZWRpdG9yLmZvcm1hdHRlci5MdWFDb2RlU3R5bGVTZXR0aW5ncy48aW5pdD4oTHVhQ29kZVN0eWxlU2V0dGluZ3MuamF2YTozNikKCWF0IGNvbS50YW5nLmludGVsbGlqLmx1YS5lZGl0b3IuZm9ybWF0dGVyLkx1YUNvZGVTdHlsZVNldHRpbmdzUHJvdmlkZXIuY3JlYXRlQ3VzdG9tU2V0dGluZ3MoTHVhQ29kZVN0eWxlU2V0dGluZ3NQcm92aWRlci5rdDo1NykKCWF0IGNvbS5pbnRlbGxpai5wc2kuY29kZVN0eWxlLkNvZGVTdHlsZVNldHRpbmdzLjxpbml0PihDb2RlU3R5bGVTZXR0aW5ncy5qYXZhOjkwKQoJYXQgY29tLmludGVsbGlqLnBzaS5jb2RlU3R5bGUuQ29kZVN0eWxlU2V0dGluZ3MuPGluaXQ+KENvZGVTdHlsZVNldHRpbmdzLmphdmE6ODIpCglhdCBjb20uaW50ZWxsaWoucHNpLmNvZGVTdHlsZS5Qcm9qZWN0Q29kZVN0eWxlU2V0dGluZ3NNYW5hZ2VyLnNldE1haW5Qcm9qZWN0Q29kZVN0eWxlKFByb2plY3RDb2RlU3R5bGVTZXR0aW5nc01hbmFnZXIuamF2YTo5MikKCWF0IGNvbS5pbnRlbGxpai5wc2kuY29kZVN0eWxlLlByb2plY3RDb2RlU3R5bGVTZXR0aW5nc01hbmFnZXIuPGluaXQ+KFByb2plY3RDb2RlU3R5bGVTZXR0aW5nc01hbmFnZXIuamF2YTo1MCkKCWF0IHN1bi5yZWZsZWN0Lk5hdGl2ZUNvbnN0cnVjdG9yQWNjZXNzb3JJbXBsLm5ld0luc3RhbmNlMChOYXRpdmUgTWV0aG9kKQoJYXQgc3VuLnJlZmxlY3QuTmF0aXZlQ29uc3RydWN0b3JBY2Nlc3NvckltcGwubmV3SW5zdGFuY2UoTmF0aXZlQ29uc3RydWN0b3JBY2Nlc3NvckltcGwuamF2YTo2MikKCWF0IHN1bi5yZWZsZWN0LkRlbGVnYXRpbmdDb25zdHJ1Y3RvckFjY2Vzc29ySW1wbC5uZXdJbnN0YW5jZShEZWxlZ2F0aW5nQ29uc3RydWN0b3JBY2Nlc3NvckltcGwuamF2YTo0NSkKCWF0IGphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yLm5ld0luc3RhbmNlKENvbnN0cnVjdG9yLmphdmE6NDIzKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQ29uc3RydWN0b3JJbmplY3Rpb25LdC5pbnN0YW50aWF0ZVVzaW5nUGljb0NvbnRhaW5lcihjb25zdHJ1Y3RvckluamVjdGlvbi5rdDo1MykKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsLmluc3RhbnRpYXRlQ2xhc3NXaXRoQ29uc3RydWN0b3JJbmplY3Rpb24oQ29tcG9uZW50TWFuYWdlckltcGwua3Q6NjYwKQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuU2VydmljZUNvbXBvbmVudEFkYXB0ZXIuY3JlYXRlQW5kSW5pdGlhbGl6ZShTZXJ2aWNlQ29tcG9uZW50QWRhcHRlci5rdDo1NCkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLlNlcnZpY2VDb21wb25lbnRBZGFwdGVyLmRvQ3JlYXRlSW5zdGFuY2UoU2VydmljZUNvbXBvbmVudEFkYXB0ZXIua3Q6NDEpCglhdCBjb20uaW50ZWxsaWouc2VydmljZUNvbnRhaW5lci5CYXNlQ29tcG9uZW50QWRhcHRlci5nZXRJbnN0YW5jZVVuY2FjaGVkKEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjExNSkKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkJhc2VDb21wb25lbnRBZGFwdGVyLmdldEluc3RhbmNlKEJhc2VDb21wb25lbnRBZGFwdGVyLmt0OjY5KQoJYXQgY29tLmludGVsbGlqLnNlcnZpY2VDb250YWluZXIuQmFzZUNvbXBvbmVudEFkYXB0ZXIuZ2V0SW5zdGFuY2UkZGVmYXVsdChCYXNlQ29tcG9uZW50QWRhcHRlci5rdDo2MikKCWF0IGNvbS5pbnRlbGxpai5zZXJ2aWNlQ29udGFpbmVyLkNvbXBvbmVudE1hbmFnZXJJbXBsJHByZWxvYWRTZXJ2aWNlcyRmdXR1cmUkMS5ydW4oQ29tcG9uZW50TWFuYWdlckltcGwua3Q6ODAyKQoJYXQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGFibGVGdXR1cmUkQXN5bmNSdW4ucnVuKENvbXBsZXRhYmxlRnV0dXJlLmphdmE6MTY0MCkKCS4uLiA3IG1vcmU=
```
com.intellij.diagnostic.PluginException: Cannot create class com.breakpoint.intellij.lua.stubs.index.LuaStringArgIndex [Plugin: mmpass.plugin]
at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:652)
at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.instantiateClass(ExtensionComponentAdapter.java:54)
at com.intellij.openapi.extensions.impl.XmlExtensionAdapter$SimpleConstructorInjectionAdapter.instantiateClass(XmlExtensionAdapter.java:132)
at com.intellij.openapi.extensions.impl.ExtensionComponentAdapter.createInstance(ExtensionComponentAdapter.java:45)
at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.createInstance(XmlExtensionAdapter.java:68)
at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapter(ExtensionPointImpl.java:446)
at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapter(ExtensionPointImpl.java:433)
at com.intellij.openapi.extensions.impl.ExtensionPointImpl.access$100(ExtensionPointImpl.java:38)
at com.intellij.openapi.extensions.impl.ExtensionPointImpl$1.next(ExtensionPointImpl.java:336)
at com.intellij.util.indexing.FileBasedIndexDataInitialization.initAssociatedDataForExtensions(FileBasedIndexDataInitialization.java:57)
at com.intellij.util.indexing.FileBasedIndexDataInitialization.prepare(FileBasedIndexDataInitialization.java:93)
at com.intellij.util.indexing.IndexInfrastructure$DataInitialization.call(IndexInfrastructure.java:125)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:222)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:29)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:201)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:210)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:190)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.AssertionError: ID with name 'lua.call.string.param' requested for plugin mmpass.plugin but registered for com.tang
at com.intellij.util.indexing.ID.findByName(ID.java:109)
at com.intellij.util.indexing.ID.create(ID.java:82)
at com.breakpoint.intellij.lua.stubs.index.LuaStringArgIndex.(LuaStringArgIndex.kt:37)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:610)
... 20 more
Caused by: java.lang.Throwable
at com.intellij.util.indexing.ID.(ID.java:68)
at com.intellij.util.indexing.ID.create(ID.java:83)
at com.tang.intellij.lua.stubs.index.LuaStringArgIndex.(LuaStringArgIndex.kt:36)
... 25 more
```