7 lines
86 KiB
JavaScript
7 lines
86 KiB
JavaScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
'use strict';
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdQcm90b2NvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWJ1Z1Byb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Z0dBR2dHO0FBRWhHLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKiBEZWNsYXJhdGlvbiBtb2R1bGUgZGVzY3JpYmluZyB0aGUgVlMgQ29kZSBkZWJ1ZyBwcm90b2NvbC5cblx0QXV0by1nZW5lcmF0ZWQgZnJvbSBqc29uIHNjaGVtYS4gRG8gbm90IGVkaXQgbWFudWFsbHkuXG4qL1xuZXhwb3J0IG1vZHVsZSBEZWJ1Z1Byb3RvY29sIHtcblxuXHQvKiogQmFzZSBjbGFzcyBvZiByZXF1ZXN0cywgcmVzcG9uc2VzLCBhbmQgZXZlbnRzLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFByb3RvY29sTWVzc2FnZSB7XG5cdFx0LyoqIFNlcXVlbmNlIG51bWJlci4gKi9cblx0XHRzZXE6IG51bWJlcjtcblx0XHQvKiogTWVzc2FnZSB0eXBlLlxuXHRcdFx0VmFsdWVzOiAncmVxdWVzdCcsICdyZXNwb25zZScsICdldmVudCcsIGV0Yy5cblx0XHQqL1xuXHRcdHR5cGU6IHN0cmluZztcblx0fVxuXG5cdC8qKiBBIGNsaWVudCBvciBzZXJ2ZXItaW5pdGlhdGVkIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdCBleHRlbmRzIFByb3RvY29sTWVzc2FnZSB7XG5cdFx0Ly8gdHlwZTogJ3JlcXVlc3QnO1xuXHRcdC8qKiBUaGUgY29tbWFuZCB0byBleGVjdXRlLiAqL1xuXHRcdGNvbW1hbmQ6IHN0cmluZztcblx0XHQvKiogT2JqZWN0IGNvbnRhaW5pbmcgYXJndW1lbnRzIGZvciB0aGUgY29tbWFuZC4gKi9cblx0XHRhcmd1bWVudHM/OiBhbnk7XG5cdH1cblxuXHQvKiogU2VydmVyLWluaXRpYXRlZCBldmVudC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBFdmVudCBleHRlbmRzIFByb3RvY29sTWVzc2FnZSB7XG5cdFx0Ly8gdHlwZTogJ2V2ZW50Jztcblx0XHQvKiogVHlwZSBvZiBldmVudC4gKi9cblx0XHRldmVudDogc3RyaW5nO1xuXHRcdC8qKiBFdmVudC1zcGVjaWZpYyBpbmZvcm1hdGlvbi4gKi9cblx0XHRib2R5PzogYW55O1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvIGEgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXNwb25zZSBleHRlbmRzIFByb3RvY29sTWVzc2FnZSB7XG5cdFx0Ly8gdHlwZTogJ3Jlc3BvbnNlJztcblx0XHQvKiogU2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlcXVlc3QuICovXG5cdFx0cmVxdWVzdF9zZXE6IG51bWJlcjtcblx0XHQvKiogT3V0Y29tZSBvZiB0aGUgcmVxdWVzdC4gKi9cblx0XHRzdWNjZXNzOiBib29sZWFuO1xuXHRcdC8qKiBUaGUgY29tbWFuZCByZXF1ZXN0ZWQuICovXG5cdFx0Y29tbWFuZDogc3RyaW5nO1xuXHRcdC8qKiBDb250YWlucyBlcnJvciBtZXNzYWdlIGlmIHN1Y2Nlc3MgPT0gZmFsc2UuICovXG5cdFx0bWVzc2FnZT86IHN0cmluZztcblx0XHQvKiogQ29udGFpbnMgcmVxdWVzdCByZXN1bHQgaWYgc3VjY2VzcyBpcyB0cnVlIGFuZCBvcHRpb25hbCBlcnJvciBkZXRhaWxzIGlmIHN1Y2Nlc3MgaXMgZmFsc2UuICovXG5cdFx0Ym9keT86IGFueTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAnaW5pdGlhbGl6ZWQnIGV2ZW50IHR5cGUuXG5cdFx0VGhpcyBldmVudCBpbmRpY2F0ZXMgdGhhdCB0aGUgZGVidWcgYWRhcHRlciBpcyByZWFkeSB0byBhY2NlcHQgY29uZmlndXJhdGlvbiByZXF1ZXN0cyAoZS5nLiBTZXRCcmVha3BvaW50c1JlcXVlc3QsIFNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzUmVxdWVzdCkuXG5cdFx0QSBkZWJ1ZyBhZGFwdGVyIGlzIGV4cGVjdGVkIHRvIHNlbmQgdGhpcyBldmVudCB3aGVuIGl0IGlzIHJlYWR5IHRvIGFjY2VwdCBjb25maWd1cmF0aW9uIHJlcXVlc3RzIChidXQgbm90IGJlZm9yZSB0aGUgSW5pdGlhbGl6ZVJlcXVlc3QgaGFzIGZpbmlzaGVkKS5cblx0XHRUaGUgc2VxdWVuY2Ugb2YgZXZlbnRzL3JlcXVlc3RzIGlzIGFzIGZvbGxvd3M6XG5cdFx0LSBhZGFwdGVycyBzZW5kcyBJbml0aWFsaXplZEV2ZW50IChhZnRlciB0aGUgSW5pdGlhbGl6ZVJlcXVlc3QgaGFzIHJldHVybmVkKVxuXHRcdC0gZnJvbnRlbmQgc2VuZHMgemVybyBvciBtb3JlIFNldEJyZWFrcG9pbnRzUmVxdWVzdFxuXHRcdC0gZnJvbnRlbmQgc2VuZHMgb25lIFNldEZ1bmN0aW9uQnJlYWtwb2ludHNSZXF1ZXN0XG5cdFx0LSBmcm9udGVuZCBzZW5kcyBhIFNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzUmVxdWVzdCBpZiBvbmUgb3IgbW9yZSBleGNlcHRpb25CcmVha3BvaW50RmlsdGVycyBoYXZlIGJlZW4gZGVmaW5lZCAob3IgaWYgc3VwcG9ydHNDb25maWd1cmF0aW9uRG9uZVJlcXVlc3QgaXMgbm90IGRlZmluZWQgb3IgZmFsc2UpXG5cdFx0LSBmcm9udGVuZCBzZW5kcyBvdGhlciBmdXR1cmUgY29uZmlndXJhdGlvbiByZXF1ZXN0c1xuXHRcdC0gZnJvbnRlbmQgc2VuZHMgb25lIENvbmZpZ3VyYXRpb25Eb25lUmVxdWVzdCB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSBjb25maWd1cmF0aW9uXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhbGl6ZWRFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ2luaXRpYWxpemVkJztcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAnc3RvcHBlZCcgZXZlbnQgdHlwZS5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZGVidWdnZWUgaGFzIHN0b3BwZWQgZHVlIHRvIHNvbWUgY29uZGl0aW9uLlxuXHRcdFRoaXMgY2FuIGJlIGNhdXNlZCBieSBhIGJyZWFrIHBvaW50IHByZXZpb3VzbHkgc2V0LCBhIHN0ZXBwaW5nIGFjdGlvbiBoYXMgY29tcGxldGVkLCBieSBleGVjdXRpbmcgYSBkZWJ1Z2dlciBzdGF0ZW1lbnQgZXRjLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0b3BwZWRFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ3N0b3BwZWQnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgcmVhc29uIGZvciB0aGUgZXZlbnQuXG5cdFx0XHRcdEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRoaXMgc3RyaW5nIGlzIHNob3duIGluIHRoZSBVSSBpZiB0aGUgJ2Rlc2NyaXB0aW9uJyBhdHRyaWJ1dGUgaXMgbWlzc2luZyAoYnV0IGl0IG11c3Qgbm90IGJlIHRyYW5zbGF0ZWQpLlxuXHRcdFx0XHRWYWx1ZXM6ICdzdGVwJywgJ2JyZWFrcG9pbnQnLCAnZXhjZXB0aW9uJywgJ3BhdXNlJywgJ2VudHJ5JywgZXRjLlxuXHRcdFx0Ki9cblx0XHRcdHJlYXNvbjogc3RyaW5nO1xuXHRcdFx0LyoqIFRoZSBmdWxsIHJlYXNvbiBmb3IgdGhlIGV2ZW50LCBlLmcuICdQYXVzZWQgb24gZXhjZXB0aW9uJy4gVGhpcyBzdHJpbmcgaXMgc2hvd24gaW4gdGhlIFVJIGFzIGlzLiAqL1xuXHRcdFx0ZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdFx0XHQvKiogVGhlIHRocmVhZCB3aGljaCB3YXMgc3RvcHBlZC4gKi9cblx0XHRcdHRocmVhZElkPzogbnVtYmVyO1xuXHRcdFx0LyoqIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEUuZy4gaWYgcmVhc29uIGlzICdleGNlcHRpb24nLCB0ZXh0IGNvbnRhaW5zIHRoZSBleGNlcHRpb24gbmFtZS4gVGhpcyBzdHJpbmcgaXMgc2hvd24gaW4gdGhlIFVJLiAqL1xuXHRcdFx0dGV4dD86IHN0cmluZztcblx0XHRcdC8qKiBJZiBhbGxUaHJlYWRzU3RvcHBlZCBpcyB0cnVlLCBhIGRlYnVnIGFkYXB0ZXIgY2FuIGFubm91bmNlIHRoYXQgYWxsIHRocmVhZHMgaGF2ZSBzdG9wcGVkLlxuXHRcdFx0XHQqICBUaGUgY2xpZW50IHNob3VsZCB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byBlbmFibGUgdGhhdCBhbGwgdGhyZWFkcyBjYW4gYmUgZXhwYW5kZWQgdG8gYWNjZXNzIHRoZWlyIHN0YWNrdHJhY2VzLlxuXHRcdFx0XHQqICBJZiB0aGUgYXR0cmlidXRlIGlzIG1pc3Npbmcgb3IgZmFsc2UsIG9ubHkgdGhlIHRocmVhZCB3aXRoIHRoZSBnaXZlbiB0aHJlYWRJZCBjYW4gYmUgZXhwYW5kZWQuXG5cdFx0XHQqL1xuXHRcdFx0YWxsVGhyZWFkc1N0b3BwZWQ/OiBib29sZWFuO1xuXHRcdH07XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ2NvbnRpbnVlZCcgZXZlbnQgdHlwZS5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZGVidWdnZWUgaGFzIGNvbnRpbnVlZC5cblx0XHRQbGVhc2Ugbm90ZTogYSBkZWJ1ZyBhZGFwdGVyIGlzIG5vdCBleHBlY3RlZCB0byBzZW5kIHRoaXMgZXZlbnQgaW4gcmVzcG9uc2UgdG8gYSByZXF1ZXN0IHRoYXQgaW1wbGllcyB0aGF0IGV4ZWN1dGlvbiBjb250aW51ZXMsIGUuZy4gJ2xhdW5jaCcgb3IgJ2NvbnRpbnVlJy5cblx0XHRJdCBpcyBvbmx5IG5lY2Vzc2FyeSB0byBzZW5kIGEgQ29udGludWVkRXZlbnQgaWYgdGhlcmUgd2FzIG5vIHByZXZpb3VzIHJlcXVlc3QgdGhhdCBpbXBsaWVkIHRoaXMuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29udGludWVkRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdjb250aW51ZWQnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgdGhyZWFkIHdoaWNoIHdhcyBjb250aW51ZWQuICovXG5cdFx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHRcdFx0LyoqIElmIGFsbFRocmVhZHNDb250aW51ZWQgaXMgdHJ1ZSwgYSBkZWJ1ZyBhZGFwdGVyIGNhbiBhbm5vdW5jZSB0aGF0IGFsbCB0aHJlYWRzIGhhdmUgY29udGludWVkLiAqL1xuXHRcdFx0YWxsVGhyZWFkc0NvbnRpbnVlZD86IGJvb2xlYW47XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAnZXhpdGVkJyBldmVudCB0eXBlLlxuXHRcdFRoZSBldmVudCBpbmRpY2F0ZXMgdGhhdCB0aGUgZGVidWdnZWUgaGFzIGV4aXRlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBFeGl0ZWRFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ2V4aXRlZCc7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBleGl0IGNvZGUgcmV0dXJuZWQgZnJvbSB0aGUgZGVidWdnZWUuICovXG5cdFx0XHRleGl0Q29kZTogbnVtYmVyO1xuXHRcdH07XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ3Rlcm1pbmF0ZWQnIGV2ZW50IHR5cGVzLlxuXHRcdFRoZSBldmVudCBpbmRpY2F0ZXMgdGhhdCBkZWJ1Z2dpbmcgb2YgdGhlIGRlYnVnZ2VlIGhhcyB0ZXJtaW5hdGVkLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFRlcm1pbmF0ZWRFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ3Rlcm1pbmF0ZWQnO1xuXHRcdGJvZHk/OiB7XG5cdFx0XHQvKiogQSBkZWJ1ZyBhZGFwdGVyIG1heSBzZXQgJ3Jlc3RhcnQnIHRvIHRydWUgKG9yIHRvIGFuIGFyYml0cmFyeSBvYmplY3QpIHRvIHJlcXVlc3QgdGhhdCB0aGUgZnJvbnQgZW5kIHJlc3RhcnRzIHRoZSBzZXNzaW9uLlxuXHRcdFx0XHRUaGUgdmFsdWUgaXMgbm90IGludGVycHJldGVkIGJ5IHRoZSBjbGllbnQgYW5kIHBhc3NlZCB1bm1vZGlmaWVkIGFzIGFuIGF0dHJpYnV0ZSAnX19yZXN0YXJ0JyB0byB0aGUgbGF1bmNoUmVxdWVzdC5cblx0XHRcdCovXG5cdFx0XHRyZXN0YXJ0PzogYW55O1xuXHRcdH07XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ3RocmVhZCcgZXZlbnQgdHlwZS5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgYSB0aHJlYWQgaGFzIHN0YXJ0ZWQgb3IgZXhpdGVkLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFRocmVhZEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuXHRcdC8vIGV2ZW50OiAndGhyZWFkJztcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHJlYXNvbiBmb3IgdGhlIGV2ZW50LlxuXHRcdFx0XHRWYWx1ZXM6ICdzdGFydGVkJywgJ2V4aXRlZCcsIGV0Yy5cblx0XHRcdCovXG5cdFx0XHRyZWFzb246IHN0cmluZztcblx0XHRcdC8qKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgdGhyZWFkLiAqL1xuXHRcdFx0dGhyZWFkSWQ6IG51bWJlcjtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdvdXRwdXQnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IGluZGljYXRlcyB0aGF0IHRoZSB0YXJnZXQgaGFzIHByb2R1Y2VkIHNvbWUgb3V0cHV0LlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIE91dHB1dEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuXHRcdC8vIGV2ZW50OiAnb3V0cHV0Jztcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIG91dHB1dCBjYXRlZ29yeS4gSWYgbm90IHNwZWNpZmllZCwgJ2NvbnNvbGUnIGlzIGFzc3VtZWQuXG5cdFx0XHRcdFZhbHVlczogJ2NvbnNvbGUnLCAnc3Rkb3V0JywgJ3N0ZGVycicsICd0ZWxlbWV0cnknLCBldGMuXG5cdFx0XHQqL1xuXHRcdFx0Y2F0ZWdvcnk/OiBzdHJpbmc7XG5cdFx0XHQvKiogVGhlIG91dHB1dCB0byByZXBvcnQuICovXG5cdFx0XHRvdXRwdXQ6IHN0cmluZztcblx0XHRcdC8qKiBJZiBhbiBhdHRyaWJ1dGUgJ3ZhcmlhYmxlc1JlZmVyZW5jZScgZXhpc3RzIGFuZCBpdHMgdmFsdWUgaXMgPiAwLCB0aGUgb3V0cHV0IGNvbnRhaW5zIG9iamVjdHMgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCBieSBwYXNzaW5nIHZhcmlhYmxlc1JlZmVyZW5jZSB0byB0aGUgVmFyaWFibGVzUmVxdWVzdC4gKi9cblx0XHRcdHZhcmlhYmxlc1JlZmVyZW5jZT86IG51bWJlcjtcblx0XHRcdC8qKiBBbiBvcHRpb25hbCBzb3VyY2UgbG9jYXRpb24gd2hlcmUgdGhlIG91dHB1dCB3YXMgcHJvZHVjZWQuICovXG5cdFx0XHRzb3VyY2U/OiBTb3VyY2U7XG5cdFx0XHQvKiogQW4gb3B0aW9uYWwgc291cmNlIGxvY2F0aW9uIGxpbmUgd2hlcmUgdGhlIG91dHB1dCB3YXMgcHJvZHVjZWQuICovXG5cdFx0XHRsaW5lPzogbnVtYmVyO1xuXHRcdFx0LyoqIEFuIG9wdGlvbmFsIHNvdXJjZSBsb2NhdGlvbiBjb2x1bW4gd2hlcmUgdGhlIG91dHB1dCB3YXMgcHJvZHVjZWQuICovXG5cdFx0XHRjb2x1bW4/OiBudW1iZXI7XG5cdFx0XHQvKiogT3B0aW9uYWwgZGF0YSB0byByZXBvcnQuIEZvciB0aGUgJ3RlbGVtZXRyeScgY2F0ZWdvcnkgdGhlIGRhdGEgd2lsbCBiZSBzZW50IHRvIHRlbGVtZXRyeSwgZm9yIHRoZSBvdGhlciBjYXRlZ29yaWVzIHRoZSBkYXRhIGlzIHNob3duIGluIEpTT04gZm9ybWF0LiAqL1xuXHRcdFx0ZGF0YT86IGFueTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdicmVha3BvaW50JyBldmVudCB0eXBlLlxuXHRcdFRoZSBldmVudCBpbmRpY2F0ZXMgdGhhdCBzb21lIGluZm9ybWF0aW9uIGFib3V0IGEgYnJlYWtwb2ludCBoYXMgY2hhbmdlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBCcmVha3BvaW50RXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdicmVha3BvaW50Jztcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHJlYXNvbiBmb3IgdGhlIGV2ZW50LlxuXHRcdFx0XHRWYWx1ZXM6ICdjaGFuZ2VkJywgJ25ldycsICdyZW1vdmVkJywgZXRjLlxuXHRcdFx0Ki9cblx0XHRcdHJlYXNvbjogc3RyaW5nO1xuXHRcdFx0LyoqIFRoZSBicmVha3BvaW50LiAqL1xuXHRcdFx0YnJlYWtwb2ludDogQnJlYWtwb2ludDtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdtb2R1bGUnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IGluZGljYXRlcyB0aGF0IHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgYSBtb2R1bGUgaGFzIGNoYW5nZWQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdtb2R1bGUnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgcmVhc29uIGZvciB0aGUgZXZlbnQuICovXG5cdFx0XHRyZWFzb246ICduZXcnIHwgJ2NoYW5nZWQnIHwgJ3JlbW92ZWQnO1xuXHRcdFx0LyoqIFRoZSBuZXcsIGNoYW5nZWQsIG9yIHJlbW92ZWQgbW9kdWxlLiBJbiBjYXNlIG9mICdyZW1vdmVkJyBvbmx5IHRoZSBtb2R1bGUgaWQgaXMgdXNlZC4gKi9cblx0XHRcdG1vZHVsZTogTW9kdWxlO1xuXHRcdH07XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ2xvYWRlZFNvdXJjZScgZXZlbnQgdHlwZS5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgc29tZSBzb3VyY2UgaGFzIGJlZW4gYWRkZWQsIGNoYW5nZWQsIG9yIHJlbW92ZWQgZnJvbSB0aGUgc2V0IG9mIGFsbCBsb2FkZWQgc291cmNlcy5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBMb2FkZWRTb3VyY2VFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ2xvYWRlZFNvdXJjZSc7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSByZWFzb24gZm9yIHRoZSBldmVudC4gKi9cblx0XHRcdHJlYXNvbjogJ25ldycgfCAnY2hhbmdlZCcgfCAncmVtb3ZlZCc7XG5cdFx0XHQvKiogVGhlIG5ldywgY2hhbmdlZCwgb3IgcmVtb3ZlZCBzb3VyY2UuICovXG5cdFx0XHRzb3VyY2U6IFNvdXJjZTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdwcm9jZXNzJyBldmVudCB0eXBlLlxuXHRcdFRoZSBldmVudCBpbmRpY2F0ZXMgdGhhdCB0aGUgZGVidWdnZXIgaGFzIGJlZ3VuIGRlYnVnZ2luZyBhIG5ldyBwcm9jZXNzLiBFaXRoZXIgb25lIHRoYXQgaXQgaGFzIGxhdW5jaGVkLCBvciBvbmUgdGhhdCBpdCBoYXMgYXR0YWNoZWQgdG8uXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc0V2ZW50IGV4dGVuZHMgRXZlbnQge1xuXHRcdC8vIGV2ZW50OiAncHJvY2Vzcyc7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBsb2dpY2FsIG5hbWUgb2YgdGhlIHByb2Nlc3MuIFRoaXMgaXMgdXN1YWxseSB0aGUgZnVsbCBwYXRoIHRvIHByb2Nlc3MncyBleGVjdXRhYmxlIGZpbGUuIEV4YW1wbGU6IC9ob21lL2V4YW1wbGUvbXlwcm9qL3Byb2dyYW0uanMuICovXG5cdFx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0XHQvKiogVGhlIHN5c3RlbSBwcm9jZXNzIGlkIG9mIHRoZSBkZWJ1Z2dlZCBwcm9jZXNzLiBUaGlzIHByb3BlcnR5IHdpbGwgYmUgbWlzc2luZyBmb3Igbm9uLXN5c3RlbSBwcm9jZXNzZXMuICovXG5cdFx0XHRzeXN0ZW1Qcm9jZXNzSWQ/OiBudW1iZXI7XG5cdFx0XHQvKiogSWYgdHJ1ZSwgdGhlIHByb2Nlc3MgaXMgcnVubmluZyBvbiB0aGUgc2FtZSBjb21wdXRlciBhcyB0aGUgZGVidWcgYWRhcHRlci4gKi9cblx0XHRcdGlzTG9jYWxQcm9jZXNzPzogYm9vbGVhbjtcblx0XHRcdC8qKiBEZXNjcmliZXMgaG93IHRoZSBkZWJ1ZyBlbmdpbmUgc3RhcnRlZCBkZWJ1Z2dpbmcgdGhpcyBwcm9jZXNzLlxuXHRcdFx0XHQnbGF1bmNoJzogUHJvY2VzcyB3YXMgbGF1bmNoZWQgdW5kZXIgdGhlIGRlYnVnZ2VyLlxuXHRcdFx0XHQnYXR0YWNoJzogRGVidWdnZXIgYXR0YWNoZWQgdG8gYW4gZXhpc3RpbmcgcHJvY2Vzcy5cblx0XHRcdFx0J2F0dGFjaEZvclN1c3BlbmRlZExhdW5jaCc6IEEgcHJvamVjdCBsYXVuY2hlciBjb21wb25lbnQgaGFzIGxhdW5jaGVkIGEgbmV3IHByb2Nlc3MgaW4gYSBzdXNwZW5kZWQgc3RhdGUgYW5kIHRoZW4gYXNrZWQgdGhlIGRlYnVnZ2VyIHRvIGF0dGFjaC5cblx0XHRcdCovXG5cdFx0XHRzdGFydE1ldGhvZD86ICdsYXVuY2gnIHwgJ2F0dGFjaCcgfCAnYXR0YWNoRm9yU3VzcGVuZGVkTGF1bmNoJztcblx0XHR9O1xuXHR9XG5cblx0LyoqIHJ1bkluVGVybWluYWwgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAncnVuSW5UZXJtaW5hbCcuXG5cdFx0V2l0aCB0aGlzIHJlcXVlc3QgYSBkZWJ1ZyBhZGFwdGVyIGNhbiBydW4gYSBjb21tYW5kIGluIGEgdGVybWluYWwuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUnVuSW5UZXJtaW5hbFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAncnVuSW5UZXJtaW5hbCc7XG5cdFx0YXJndW1lbnRzOiBSdW5JblRlcm1pbmFsUmVxdWVzdEFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdydW5JblRlcm1pbmFsJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJ1bkluVGVybWluYWxSZXF1ZXN0QXJndW1lbnRzIHtcblx0XHQvKiogV2hhdCBraW5kIG9mIHRlcm1pbmFsIHRvIGxhdW5jaC4gKi9cblx0XHRraW5kPzogJ2ludGVncmF0ZWQnIHwgJ2V4dGVybmFsJztcblx0XHQvKiogT3B0aW9uYWwgdGl0bGUgb2YgdGhlIHRlcm1pbmFsLiAqL1xuXHRcdHRpdGxlPzogc3RyaW5nO1xuXHRcdC8qKiBXb3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY29tbWFuZC4gKi9cblx0XHRjd2Q6IHN0cmluZztcblx0XHQvKiogTGlzdCBvZiBhcmd1bWVudHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY29tbWFuZCB0byBydW4uICovXG5cdFx0YXJnczogc3RyaW5nW107XG5cdFx0LyoqIEVudmlyb25tZW50IGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBhZGRlZCB0byBvciByZW1vdmVkIGZyb20gdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQuICovXG5cdFx0ZW52PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudWxsOyB9O1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvIEluaXRpYWxpemUgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBSdW5JblRlcm1pbmFsUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBwcm9jZXNzIElELiAqL1xuXHRcdFx0cHJvY2Vzc0lkPzogbnVtYmVyO1xuXHRcdH07XG5cdH1cblxuXHQvKiogT24gZXJyb3IgdGhhdCBpcyB3aGVuZXZlciAnc3VjY2VzcycgaXMgZmFsc2UsIHRoZSBib2R5IGNhbiBwcm92aWRlIG1vcmUgZGV0YWlscy4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBFcnJvclJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBBbiBvcHRpb25hbCwgc3RydWN0dXJlZCBlcnJvciBtZXNzYWdlLiAqL1xuXHRcdFx0ZXJyb3I/OiBNZXNzYWdlO1xuXHRcdH07XG5cdH1cblxuXHQvKiogSW5pdGlhbGl6ZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdpbml0aWFsaXplJy4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdpbml0aWFsaXplJztcblx0XHRhcmd1bWVudHM6IEluaXRpYWxpemVSZXF1ZXN0QXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ2luaXRpYWxpemUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhbGl6ZVJlcXVlc3RBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgSUQgb2YgdGhlIChmcm9udGVuZCkgY2xpZW50IHVzaW5nIHRoaXMgYWRhcHRlci4gKi9cblx0XHRjbGllbnRJRD86IHN0cmluZztcblx0XHQvKiogVGhlIElEIG9mIHRoZSBkZWJ1ZyBhZGFwdGVyLiAqL1xuXHRcdGFkYXB0ZXJJRDogc3RyaW5nO1xuXHRcdC8qKiBUaGUgSVNPLTYzOSBsb2NhbGUgb2YgdGhlIChmcm9udGVuZCkgY2xpZW50IHVzaW5nIHRoaXMgYWRhcHRlciwgZS5nLiBlbi1VUyBvciBkZS1DSC4gKi9cblx0XHRsb2NhbGU/OiBzdHJpbmc7XG5cdFx0LyoqIElmIHRydWUgYWxsIGxpbmUgbnVtYmVycyBhcmUgMS1iYXNlZCAoZGVmYXVsdCkuICovXG5cdFx0bGluZXNTdGFydEF0MT86IGJvb2xlYW47XG5cdFx0LyoqIElmIHRydWUgYWxsIGNvbHVtbiBudW1iZXJzIGFyZSAxLWJhc2VkIChkZWZhdWx0KS4gKi9cblx0XHRjb2x1bW5zU3RhcnRBdDE/OiBib29sZWFuO1xuXHRcdC8qKiBEZXRlcm1pbmVzIGluIHdoYXQgZm9ybWF0IHBhdGhzIGFyZSBzcGVjaWZpZWQuIFRoZSBkZWZhdWx0IGlzICdwYXRoJywgd2hpY2ggaXMgdGhlIG5hdGl2ZSBmb3JtYXQuXG5cdFx0XHRWYWx1ZXM6ICdwYXRoJywgJ3VyaScsIGV0Yy5cblx0XHQqL1xuXHRcdHBhdGhGb3JtYXQ/OiBzdHJpbmc7XG5cdFx0LyoqIENsaWVudCBzdXBwb3J0cyB0aGUgb3B0aW9uYWwgdHlwZSBhdHRyaWJ1dGUgZm9yIHZhcmlhYmxlcy4gKi9cblx0XHRzdXBwb3J0c1ZhcmlhYmxlVHlwZT86IGJvb2xlYW47XG5cdFx0LyoqIENsaWVudCBzdXBwb3J0cyB0aGUgcGFnaW5nIG9mIHZhcmlhYmxlcy4gKi9cblx0XHRzdXBwb3J0c1ZhcmlhYmxlUGFnaW5nPzogYm9vbGVhbjtcblx0XHQvKiogQ2xpZW50IHN1cHBvcnRzIHRoZSBydW5JblRlcm1pbmFsIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNSdW5JblRlcm1pbmFsUmVxdWVzdD86IGJvb2xlYW47XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2luaXRpYWxpemUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhbGl6ZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdC8qKiBUaGUgY2FwYWJpbGl0aWVzIG9mIHRoaXMgZGVidWcgYWRhcHRlci4gKi9cblx0XHRib2R5PzogQ2FwYWJpbGl0aWVzO1xuXHR9XG5cblx0LyoqIENvbmZpZ3VyYXRpb25Eb25lIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2NvbmZpZ3VyYXRpb25Eb25lJy5cblx0XHRUaGUgY2xpZW50IG9mIHRoZSBkZWJ1ZyBwcm90b2NvbCBtdXN0IHNlbmQgdGhpcyByZXF1ZXN0IGF0IHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIG9mIGNvbmZpZ3VyYXRpb24gcmVxdWVzdHMgKHdoaWNoIHdhcyBzdGFydGVkIGJ5IHRoZSBJbml0aWFsaXplZEV2ZW50KS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmF0aW9uRG9uZVJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnY29uZmlndXJhdGlvbkRvbmUnO1xuXHRcdGFyZ3VtZW50cz86IENvbmZpZ3VyYXRpb25Eb25lQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ2NvbmZpZ3VyYXRpb25Eb25lJyByZXF1ZXN0LlxuXHRcdFRoZSBjb25maWd1cmF0aW9uRG9uZSByZXF1ZXN0IGhhcyBubyBzdGFuZGFyZGl6ZWQgYXR0cmlidXRlcy5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmF0aW9uRG9uZUFyZ3VtZW50cyB7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2NvbmZpZ3VyYXRpb25Eb25lJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYXRpb25Eb25lUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogTGF1bmNoIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2xhdW5jaCcuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdsYXVuY2gnO1xuXHRcdGFyZ3VtZW50czogTGF1bmNoUmVxdWVzdEFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdsYXVuY2gnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoUmVxdWVzdEFyZ3VtZW50cyB7XG5cdFx0LyoqIElmIG5vRGVidWcgaXMgdHJ1ZSB0aGUgbGF1bmNoIHJlcXVlc3Qgc2hvdWxkIGxhdW5jaCB0aGUgcHJvZ3JhbSB3aXRob3V0IGVuYWJsaW5nIGRlYnVnZ2luZy4gKi9cblx0XHRub0RlYnVnPzogYm9vbGVhbjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnbGF1bmNoJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIExhdW5jaFJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIEF0dGFjaCByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdhdHRhY2gnLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEF0dGFjaFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnYXR0YWNoJztcblx0XHRhcmd1bWVudHM6IEF0dGFjaFJlcXVlc3RBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnYXR0YWNoJyByZXF1ZXN0LlxuXHRcdFRoZSBhdHRhY2ggcmVxdWVzdCBoYXMgbm8gc3RhbmRhcmRpemVkIGF0dHJpYnV0ZXMuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQXR0YWNoUmVxdWVzdEFyZ3VtZW50cyB7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2F0dGFjaCcgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBBdHRhY2hSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBSZXN0YXJ0IHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3Jlc3RhcnQnLlxuXHRcdFJlc3RhcnRzIGEgZGVidWcgc2Vzc2lvbi4gSWYgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzUmVzdGFydFJlcXVlc3QnIGlzIG1pc3Npbmcgb3IgaGFzIHRoZSB2YWx1ZSBmYWxzZSxcblx0XHR0aGUgY2xpZW50IHdpbGwgaW1wbGVtZW50ICdyZXN0YXJ0JyBieSB0ZXJtaW5hdGluZyB0aGUgZGVidWcgYWRhcHRlciBmaXJzdCBhbmQgdGhlbiBsYXVuY2hpbmcgaXQgYW5ldy5cblx0XHRBIGRlYnVnIGFkYXB0ZXIgY2FuIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCBiZWhhdmlvdXIgYnkgaW1wbGVtZW50aW5nIGEgcmVzdGFydCByZXF1ZXN0XG5cdFx0YW5kIHNldHRpbmcgdGhlIGNhcGFiaWxpdHkgJ3N1cHBvcnRzUmVzdGFydFJlcXVlc3QnIHRvIHRydWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmVzdGFydFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAncmVzdGFydCc7XG5cdFx0YXJndW1lbnRzPzogUmVzdGFydEFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdyZXN0YXJ0JyByZXF1ZXN0LlxuXHRcdFRoZSByZXN0YXJ0IHJlcXVlc3QgaGFzIG5vIHN0YW5kYXJkaXplZCBhdHRyaWJ1dGVzLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJlc3RhcnRBcmd1bWVudHMge1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdyZXN0YXJ0JyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJlc3RhcnRSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBEaXNjb25uZWN0IHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2Rpc2Nvbm5lY3QnLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIERpc2Nvbm5lY3RSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ2Rpc2Nvbm5lY3QnO1xuXHRcdGFyZ3VtZW50cz86IERpc2Nvbm5lY3RBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnZGlzY29ubmVjdCcgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBEaXNjb25uZWN0QXJndW1lbnRzIHtcblx0XHQvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRlYnVnZ2VlIHNob3VsZCBiZSB0ZXJtaW5hdGVkIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIGRpc2Nvbm5lY3RlZC5cblx0XHRcdElmIHVuc3BlY2lmaWVkLCB0aGUgZGVidWcgYWRhcHRlciBpcyBmcmVlIHRvIGRvIHdoYXRldmVyIGl0IHRoaW5rcyBpcyBiZXN0LlxuXHRcdFx0QSBjbGllbnQgY2FuIG9ubHkgcmVseSBvbiB0aGlzIGF0dHJpYnV0ZSBiZWluZyBwcm9wZXJseSBob25vcmVkIGlmIGEgZGVidWcgYWRhcHRlciByZXR1cm5zIHRydWUgZm9yIHRoZSAnc3VwcG9ydFRlcm1pbmF0ZURlYnVnZ2VlJyBjYXBhYmlsaXR5LlxuXHRcdCovXG5cdFx0dGVybWluYXRlRGVidWdnZWU/OiBib29sZWFuO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdkaXNjb25uZWN0JyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIERpc2Nvbm5lY3RSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBTZXRCcmVha3BvaW50cyByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzZXRCcmVha3BvaW50cycuXG5cdFx0U2V0cyBtdWx0aXBsZSBicmVha3BvaW50cyBmb3IgYSBzaW5nbGUgc291cmNlIGFuZCBjbGVhcnMgYWxsIHByZXZpb3VzIGJyZWFrcG9pbnRzIGluIHRoYXQgc291cmNlLlxuXHRcdFRvIGNsZWFyIGFsbCBicmVha3BvaW50IGZvciBhIHNvdXJjZSwgc3BlY2lmeSBhbiBlbXB0eSBhcnJheS5cblx0XHRXaGVuIGEgYnJlYWtwb2ludCBpcyBoaXQsIGEgU3RvcHBlZEV2ZW50IChldmVudCB0eXBlICdicmVha3BvaW50JykgaXMgZ2VuZXJhdGVkLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldEJyZWFrcG9pbnRzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdzZXRCcmVha3BvaW50cyc7XG5cdFx0YXJndW1lbnRzOiBTZXRCcmVha3BvaW50c0FyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdzZXRCcmVha3BvaW50cycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRCcmVha3BvaW50c0FyZ3VtZW50cyB7XG5cdFx0LyoqIFRoZSBzb3VyY2UgbG9jYXRpb24gb2YgdGhlIGJyZWFrcG9pbnRzOyBlaXRoZXIgc291cmNlLnBhdGggb3Igc291cmNlLnJlZmVyZW5jZSBtdXN0IGJlIHNwZWNpZmllZC4gKi9cblx0XHRzb3VyY2U6IFNvdXJjZTtcblx0XHQvKiogVGhlIGNvZGUgbG9jYXRpb25zIG9mIHRoZSBicmVha3BvaW50cy4gKi9cblx0XHRicmVha3BvaW50cz86IFNvdXJjZUJyZWFrcG9pbnRbXTtcblx0XHQvKiogRGVwcmVjYXRlZDogVGhlIGNvZGUgbG9jYXRpb25zIG9mIHRoZSBicmVha3BvaW50cy4gKi9cblx0XHRsaW5lcz86IG51bWJlcltdO1xuXHRcdC8qKiBBIHZhbHVlIG9mIHRydWUgaW5kaWNhdGVzIHRoYXQgdGhlIHVuZGVybHlpbmcgc291cmNlIGhhcyBiZWVuIG1vZGlmaWVkIHdoaWNoIHJlc3VsdHMgaW4gbmV3IGJyZWFrcG9pbnQgbG9jYXRpb25zLiAqL1xuXHRcdHNvdXJjZU1vZGlmaWVkPzogYm9vbGVhbjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnc2V0QnJlYWtwb2ludHMnIHJlcXVlc3QuXG5cdFx0UmV0dXJuZWQgaXMgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBicmVha3BvaW50IGNyZWF0ZWQgYnkgdGhpcyByZXF1ZXN0LlxuXHRcdFRoaXMgaW5jbHVkZXMgdGhlIGFjdHVhbCBjb2RlIGxvY2F0aW9uIGFuZCB3aGV0aGVyIHRoZSBicmVha3BvaW50IGNvdWxkIGJlIHZlcmlmaWVkLlxuXHRcdFRoZSBicmVha3BvaW50cyByZXR1cm5lZCBhcmUgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGVsZW1lbnRzIG9mIHRoZSAnYnJlYWtwb2ludHMnXG5cdFx0KG9yIHRoZSBkZXByZWNhdGVkICdsaW5lcycpIGluIHRoZSBTZXRCcmVha3BvaW50c0FyZ3VtZW50cy5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRCcmVha3BvaW50c1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgYnJlYWtwb2ludHMuIFRoZSBhcnJheSBlbGVtZW50cyBhcmUgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGVsZW1lbnRzIG9mIHRoZSAnYnJlYWtwb2ludHMnIChvciB0aGUgZGVwcmVjYXRlZCAnbGluZXMnKSBpbiB0aGUgU2V0QnJlYWtwb2ludHNBcmd1bWVudHMuICovXG5cdFx0XHRicmVha3BvaW50czogQnJlYWtwb2ludFtdO1xuXHRcdH07XG5cdH1cblxuXHQvKiogU2V0RnVuY3Rpb25CcmVha3BvaW50cyByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzZXRGdW5jdGlvbkJyZWFrcG9pbnRzJy5cblx0XHRTZXRzIG11bHRpcGxlIGZ1bmN0aW9uIGJyZWFrcG9pbnRzIGFuZCBjbGVhcnMgYWxsIHByZXZpb3VzIGZ1bmN0aW9uIGJyZWFrcG9pbnRzLlxuXHRcdFRvIGNsZWFyIGFsbCBmdW5jdGlvbiBicmVha3BvaW50LCBzcGVjaWZ5IGFuIGVtcHR5IGFycmF5LlxuXHRcdFdoZW4gYSBmdW5jdGlvbiBicmVha3BvaW50IGlzIGhpdCwgYSBTdG9wcGVkRXZlbnQgKGV2ZW50IHR5cGUgJ2Z1bmN0aW9uIGJyZWFrcG9pbnQnKSBpcyBnZW5lcmF0ZWQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0RnVuY3Rpb25CcmVha3BvaW50c1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc2V0RnVuY3Rpb25CcmVha3BvaW50cyc7XG5cdFx0YXJndW1lbnRzOiBTZXRGdW5jdGlvbkJyZWFrcG9pbnRzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3NldEZ1bmN0aW9uQnJlYWtwb2ludHMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0RnVuY3Rpb25CcmVha3BvaW50c0FyZ3VtZW50cyB7XG5cdFx0LyoqIFRoZSBmdW5jdGlvbiBuYW1lcyBvZiB0aGUgYnJlYWtwb2ludHMuICovXG5cdFx0YnJlYWtwb2ludHM6IEZ1bmN0aW9uQnJlYWtwb2ludFtdO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzZXRGdW5jdGlvbkJyZWFrcG9pbnRzJyByZXF1ZXN0LlxuXHRcdFJldHVybmVkIGlzIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggYnJlYWtwb2ludCBjcmVhdGVkIGJ5IHRoaXMgcmVxdWVzdC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRGdW5jdGlvbkJyZWFrcG9pbnRzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBicmVha3BvaW50cy4gVGhlIGFycmF5IGVsZW1lbnRzIGNvcnJlc3BvbmQgdG8gdGhlIGVsZW1lbnRzIG9mIHRoZSAnYnJlYWtwb2ludHMnIGFycmF5LiAqL1xuXHRcdFx0YnJlYWtwb2ludHM6IEJyZWFrcG9pbnRbXTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIFNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3NldEV4Y2VwdGlvbkJyZWFrcG9pbnRzJy5cblx0XHRUaGUgcmVxdWVzdCBjb25maWd1cmVzIHRoZSBkZWJ1Z2dlcnMgcmVzcG9uc2UgdG8gdGhyb3duIGV4Y2VwdGlvbnMuIElmIGFuIGV4Y2VwdGlvbiBpcyBjb25maWd1cmVkIHRvIGJyZWFrLCBhIFN0b3BwZWRFdmVudCBpcyBmaXJlZCAoZXZlbnQgdHlwZSAnZXhjZXB0aW9uJykuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0RXhjZXB0aW9uQnJlYWtwb2ludHNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3NldEV4Y2VwdGlvbkJyZWFrcG9pbnRzJztcblx0XHRhcmd1bWVudHM6IFNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3NldEV4Y2VwdGlvbkJyZWFrcG9pbnRzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzQXJndW1lbnRzIHtcblx0XHQvKiogSURzIG9mIGNoZWNrZWQgZXhjZXB0aW9uIG9wdGlvbnMuIFRoZSBzZXQgb2YgSURzIGlzIHJldHVybmVkIHZpYSB0aGUgJ2V4Y2VwdGlvbkJyZWFrcG9pbnRGaWx0ZXJzJyBjYXBhYmlsaXR5LiAqL1xuXHRcdGZpbHRlcnM6IHN0cmluZ1tdO1xuXHRcdC8qKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHNlbGVjdGVkIGV4Y2VwdGlvbnMuICovXG5cdFx0ZXhjZXB0aW9uT3B0aW9ucz86IEV4Y2VwdGlvbk9wdGlvbnNbXTtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnc2V0RXhjZXB0aW9uQnJlYWtwb2ludHMnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0RXhjZXB0aW9uQnJlYWtwb2ludHNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBDb250aW51ZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdjb250aW51ZScuXG5cdFx0VGhlIHJlcXVlc3Qgc3RhcnRzIHRoZSBkZWJ1Z2dlZSB0byBydW4gYWdhaW4uXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29udGludWVSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ2NvbnRpbnVlJztcblx0XHRhcmd1bWVudHM6IENvbnRpbnVlQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ2NvbnRpbnVlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENvbnRpbnVlQXJndW1lbnRzIHtcblx0XHQvKiogQ29udGludWUgZXhlY3V0aW9uIGZvciB0aGUgc3BlY2lmaWVkIHRocmVhZCAoaWYgcG9zc2libGUpLiBJZiB0aGUgYmFja2VuZCBjYW5ub3QgY29udGludWUgb24gYSBzaW5nbGUgdGhyZWFkIGJ1dCB3aWxsIGNvbnRpbnVlIG9uIGFsbCB0aHJlYWRzLCBpdCBzaG91bGQgc2V0IHRoZSBhbGxUaHJlYWRzQ29udGludWVkIGF0dHJpYnV0ZSBpbiB0aGUgcmVzcG9uc2UgdG8gdHJ1ZS4gKi9cblx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdjb250aW51ZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBDb250aW51ZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBJZiB0cnVlLCB0aGUgY29udGludWUgcmVxdWVzdCBoYXMgaWdub3JlZCB0aGUgc3BlY2lmaWVkIHRocmVhZCBhbmQgY29udGludWVkIGFsbCB0aHJlYWRzIGluc3RlYWQuIElmIHRoaXMgYXR0cmlidXRlIGlzIG1pc3NpbmcgYSB2YWx1ZSBvZiAndHJ1ZScgaXMgYXNzdW1lZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKi9cblx0XHRcdGFsbFRocmVhZHNDb250aW51ZWQ/OiBib29sZWFuO1xuXHRcdH07XG5cdH1cblxuXHQvKiogTmV4dCByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICduZXh0Jy5cblx0XHRUaGUgcmVxdWVzdCBzdGFydHMgdGhlIGRlYnVnZ2VlIHRvIHJ1biBhZ2FpbiBmb3Igb25lIHN0ZXAuXG5cdFx0VGhlIGRlYnVnIGFkYXB0ZXIgZmlyc3Qgc2VuZHMgdGhlIE5leHRSZXNwb25zZSBhbmQgdGhlbiBhIFN0b3BwZWRFdmVudCAoZXZlbnQgdHlwZSAnc3RlcCcpIGFmdGVyIHRoZSBzdGVwIGhhcyBjb21wbGV0ZWQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTmV4dFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnbmV4dCc7XG5cdFx0YXJndW1lbnRzOiBOZXh0QXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ25leHQnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTmV4dEFyZ3VtZW50cyB7XG5cdFx0LyoqIEV4ZWN1dGUgJ25leHQnIGZvciB0aGlzIHRocmVhZC4gKi9cblx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICduZXh0JyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIE5leHRSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBTdGVwSW4gcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc3RlcEluJy5cblx0XHRUaGUgcmVxdWVzdCBzdGFydHMgdGhlIGRlYnVnZ2VlIHRvIHN0ZXAgaW50byBhIGZ1bmN0aW9uL21ldGhvZCBpZiBwb3NzaWJsZS5cblx0XHRJZiBpdCBjYW5ub3Qgc3RlcCBpbnRvIGEgdGFyZ2V0LCAnc3RlcEluJyBiZWhhdmVzIGxpa2UgJ25leHQnLlxuXHRcdFRoZSBkZWJ1ZyBhZGFwdGVyIGZpcnN0IHNlbmRzIHRoZSBTdGVwSW5SZXNwb25zZSBhbmQgdGhlbiBhIFN0b3BwZWRFdmVudCAoZXZlbnQgdHlwZSAnc3RlcCcpIGFmdGVyIHRoZSBzdGVwIGhhcyBjb21wbGV0ZWQuXG5cdFx0SWYgdGhlcmUgYXJlIG11bHRpcGxlIGZ1bmN0aW9uL21ldGhvZCBjYWxscyAob3Igb3RoZXIgdGFyZ2V0cykgb24gdGhlIHNvdXJjZSBsaW5lLFxuXHRcdHRoZSBvcHRpb25hbCBhcmd1bWVudCAndGFyZ2V0SWQnIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgaW50byB3aGljaCB0YXJnZXQgdGhlICdzdGVwSW4nIHNob3VsZCBvY2N1ci5cblx0XHRUaGUgbGlzdCBvZiBwb3NzaWJsZSB0YXJnZXRzIGZvciBhIGdpdmVuIHNvdXJjZSBsaW5lIGNhbiBiZSByZXRyaWV2ZWQgdmlhIHRoZSAnc3RlcEluVGFyZ2V0cycgcmVxdWVzdC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGVwSW5SZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3N0ZXBJbic7XG5cdFx0YXJndW1lbnRzOiBTdGVwSW5Bcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc3RlcEluJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBJbkFyZ3VtZW50cyB7XG5cdFx0LyoqIEV4ZWN1dGUgJ3N0ZXBJbicgZm9yIHRoaXMgdGhyZWFkLiAqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdFx0LyoqIE9wdGlvbmFsIGlkIG9mIHRoZSB0YXJnZXQgdG8gc3RlcCBpbnRvLiAqL1xuXHRcdHRhcmdldElkPzogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzdGVwSW4nIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcEluUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogU3RlcE91dCByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzdGVwT3V0Jy5cblx0XHRUaGUgcmVxdWVzdCBzdGFydHMgdGhlIGRlYnVnZ2VlIHRvIHJ1biBhZ2FpbiBmb3Igb25lIHN0ZXAuXG5cdFx0VGhlIGRlYnVnIGFkYXB0ZXIgZmlyc3Qgc2VuZHMgdGhlIFN0ZXBPdXRSZXNwb25zZSBhbmQgdGhlbiBhIFN0b3BwZWRFdmVudCAoZXZlbnQgdHlwZSAnc3RlcCcpIGFmdGVyIHRoZSBzdGVwIGhhcyBjb21wbGV0ZWQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcE91dFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc3RlcE91dCc7XG5cdFx0YXJndW1lbnRzOiBTdGVwT3V0QXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3N0ZXBPdXQnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcE91dEFyZ3VtZW50cyB7XG5cdFx0LyoqIEV4ZWN1dGUgJ3N0ZXBPdXQnIGZvciB0aGlzIHRocmVhZC4gKi9cblx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzdGVwT3V0JyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBPdXRSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBTdGVwQmFjayByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzdGVwQmFjaycuXG5cdFx0VGhlIHJlcXVlc3Qgc3RhcnRzIHRoZSBkZWJ1Z2dlZSB0byBydW4gb25lIHN0ZXAgYmFja3dhcmRzLlxuXHRcdFRoZSBkZWJ1ZyBhZGFwdGVyIGZpcnN0IHNlbmRzIHRoZSBTdGVwQmFja1Jlc3BvbnNlIGFuZCB0aGVuIGEgU3RvcHBlZEV2ZW50IChldmVudCB0eXBlICdzdGVwJykgYWZ0ZXIgdGhlIHN0ZXAgaGFzIGNvbXBsZXRlZC4gQ2xpZW50cyBzaG91bGQgb25seSBjYWxsIHRoaXMgcmVxdWVzdCBpZiB0aGUgY2FwYWJpbGl0eSBzdXBwb3J0c1N0ZXBCYWNrIGlzIHRydWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcEJhY2tSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3N0ZXBCYWNrJztcblx0XHRhcmd1bWVudHM6IFN0ZXBCYWNrQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3N0ZXBCYWNrJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBCYWNrQXJndW1lbnRzIHtcblx0XHQvKiogRXhjZXV0ZSAnc3RlcEJhY2snIGZvciB0aGlzIHRocmVhZC4gKi9cblx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzdGVwQmFjaycgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGVwQmFja1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFJldmVyc2VDb250aW51ZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdyZXZlcnNlQ29udGludWUnLlxuXHRcdFRoZSByZXF1ZXN0IHN0YXJ0cyB0aGUgZGVidWdnZWUgdG8gcnVuIGJhY2t3YXJkLiBDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5IHN1cHBvcnRzU3RlcEJhY2sgaXMgdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXZlcnNlQ29udGludWVSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3JldmVyc2VDb250aW51ZSc7XG5cdFx0YXJndW1lbnRzOiBSZXZlcnNlQ29udGludWVBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAncmV2ZXJzZUNvbnRpbnVlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJldmVyc2VDb250aW51ZUFyZ3VtZW50cyB7XG5cdFx0LyoqIEV4Y2V1dGUgJ3JldmVyc2VDb250aW51ZScgZm9yIHRoaXMgdGhyZWFkLiAqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3JldmVyc2VDb250aW51ZScgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXZlcnNlQ29udGludWVSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBSZXN0YXJ0RnJhbWUgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAncmVzdGFydEZyYW1lJy5cblx0XHRUaGUgcmVxdWVzdCByZXN0YXJ0cyBleGVjdXRpb24gb2YgdGhlIHNwZWNpZmllZCBzdGFja2ZyYW1lLlxuXHRcdFRoZSBkZWJ1ZyBhZGFwdGVyIGZpcnN0IHNlbmRzIHRoZSBSZXN0YXJ0RnJhbWVSZXNwb25zZSBhbmQgdGhlbiBhIFN0b3BwZWRFdmVudCAoZXZlbnQgdHlwZSAncmVzdGFydCcpIGFmdGVyIHRoZSByZXN0YXJ0IGhhcyBjb21wbGV0ZWQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmVzdGFydEZyYW1lUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdyZXN0YXJ0RnJhbWUnO1xuXHRcdGFyZ3VtZW50czogUmVzdGFydEZyYW1lQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3Jlc3RhcnRGcmFtZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXN0YXJ0RnJhbWVBcmd1bWVudHMge1xuXHRcdC8qKiBSZXN0YXJ0IHRoaXMgc3RhY2tmcmFtZS4gKi9cblx0XHRmcmFtZUlkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3Jlc3RhcnRGcmFtZScgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXN0YXJ0RnJhbWVSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBHb3RvIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2dvdG8nLlxuXHRcdFRoZSByZXF1ZXN0IHNldHMgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBkZWJ1Z2dlZSB3aWxsIGNvbnRpbnVlIHRvIHJ1bi5cblx0XHRUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNraXAgdGhlIGV4ZWN1dGlvbiBvZiBjb2RlIG9yIHRvIGV4ZWN1dGVkIGNvZGUgYWdhaW4uXG5cdFx0VGhlIGNvZGUgYmV0d2VlbiB0aGUgY3VycmVudCBsb2NhdGlvbiBhbmQgdGhlIGdvdG8gdGFyZ2V0IGlzIG5vdCBleGVjdXRlZCBidXQgc2tpcHBlZC5cblx0XHRUaGUgZGVidWcgYWRhcHRlciBmaXJzdCBzZW5kcyB0aGUgR290b1Jlc3BvbnNlIGFuZCB0aGVuIGEgU3RvcHBlZEV2ZW50IChldmVudCB0eXBlICdnb3RvJykuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgR290b1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnZ290byc7XG5cdFx0YXJndW1lbnRzOiBHb3RvQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ2dvdG8nIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgR290b0FyZ3VtZW50cyB7XG5cdFx0LyoqIFNldCB0aGUgZ290byB0YXJnZXQgZm9yIHRoaXMgdGhyZWFkLiAqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdFx0LyoqIFRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgZGVidWdnZWUgd2lsbCBjb250aW51ZSB0byBydW4uICovXG5cdFx0dGFyZ2V0SWQ6IG51bWJlcjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnZ290bycgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBHb3RvUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogUGF1c2UgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAncGF1c2UnLlxuXHRcdFRoZSByZXF1ZXN0IHN1c3BlbnNlcyB0aGUgZGVidWdnZWUuXG5cdFx0VGhlIGRlYnVnIGFkYXB0ZXIgZmlyc3Qgc2VuZHMgdGhlIFBhdXNlUmVzcG9uc2UgYW5kIHRoZW4gYSBTdG9wcGVkRXZlbnQgKGV2ZW50IHR5cGUgJ3BhdXNlJykgYWZ0ZXIgdGhlIHRocmVhZCBoYXMgYmVlbiBwYXVzZWQgc3VjY2Vzc2Z1bGx5LlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFBhdXNlUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdwYXVzZSc7XG5cdFx0YXJndW1lbnRzOiBQYXVzZUFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdwYXVzZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBQYXVzZUFyZ3VtZW50cyB7XG5cdFx0LyoqIFBhdXNlIGV4ZWN1dGlvbiBmb3IgdGhpcyB0aHJlYWQuICovXG5cdFx0dGhyZWFkSWQ6IG51bWJlcjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAncGF1c2UnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUGF1c2VSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBTdGFja1RyYWNlIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3N0YWNrVHJhY2UnLiBUaGUgcmVxdWVzdCByZXR1cm5zIGEgc3RhY2t0cmFjZSBmcm9tIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZS4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGFja1RyYWNlUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdzdGFja1RyYWNlJztcblx0XHRhcmd1bWVudHM6IFN0YWNrVHJhY2VBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc3RhY2tUcmFjZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGFja1RyYWNlQXJndW1lbnRzIHtcblx0XHQvKiogUmV0cmlldmUgdGhlIHN0YWNrdHJhY2UgZm9yIHRoaXMgdGhyZWFkLiAqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdFx0LyoqIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZnJhbWUgdG8gcmV0dXJuOyBpZiBvbWl0dGVkIGZyYW1lcyBzdGFydCBhdCAwLiAqL1xuXHRcdHN0YXJ0RnJhbWU/OiBudW1iZXI7XG5cdFx0LyoqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmFtZXMgdG8gcmV0dXJuLiBJZiBsZXZlbHMgaXMgbm90IHNwZWNpZmllZCBvciAwLCBhbGwgZnJhbWVzIGFyZSByZXR1cm5lZC4gKi9cblx0XHRsZXZlbHM/OiBudW1iZXI7XG5cdFx0LyoqIFNwZWNpZmllcyBkZXRhaWxzIG9uIGhvdyB0byBmb3JtYXQgdGhlIHN0YWNrIGZyYW1lcy4gKi9cblx0XHRmb3JtYXQ/OiBTdGFja0ZyYW1lRm9ybWF0O1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzdGFja1RyYWNlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0YWNrVHJhY2VSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIGZyYW1lcyBvZiB0aGUgc3RhY2tmcmFtZS4gSWYgdGhlIGFycmF5IGhhcyBsZW5ndGggemVybywgdGhlcmUgYXJlIG5vIHN0YWNrZnJhbWVzIGF2YWlsYWJsZS5cblx0XHRcdFx0VGhpcyBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIGxvY2F0aW9uIGluZm9ybWF0aW9uIGF2YWlsYWJsZS5cblx0XHRcdCovXG5cdFx0XHRzdGFja0ZyYW1lczogU3RhY2tGcmFtZVtdO1xuXHRcdFx0LyoqIFRoZSB0b3RhbCBudW1iZXIgb2YgZnJhbWVzIGF2YWlsYWJsZS4gKi9cblx0XHRcdHRvdGFsRnJhbWVzPzogbnVtYmVyO1xuXHRcdH07XG5cdH1cblxuXHQvKiogU2NvcGVzIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3Njb3BlcycuXG5cdFx0VGhlIHJlcXVlc3QgcmV0dXJucyB0aGUgdmFyaWFibGUgc2NvcGVzIGZvciBhIGdpdmVuIHN0YWNrZnJhbWUgSUQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2NvcGVzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdzY29wZXMnO1xuXHRcdGFyZ3VtZW50czogU2NvcGVzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3Njb3BlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTY29wZXNBcmd1bWVudHMge1xuXHRcdC8qKiBSZXRyaWV2ZSB0aGUgc2NvcGVzIGZvciB0aGlzIHN0YWNrZnJhbWUuICovXG5cdFx0ZnJhbWVJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzY29wZXMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2NvcGVzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBzY29wZXMgb2YgdGhlIHN0YWNrZnJhbWUuIElmIHRoZSBhcnJheSBoYXMgbGVuZ3RoIHplcm8sIHRoZXJlIGFyZSBubyBzY29wZXMgYXZhaWxhYmxlLiAqL1xuXHRcdFx0c2NvcGVzOiBTY29wZVtdO1xuXHRcdH07XG5cdH1cblxuXHQvKiogVmFyaWFibGVzIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3ZhcmlhYmxlcycuXG5cdFx0UmV0cmlldmVzIGFsbCBjaGlsZCB2YXJpYWJsZXMgZm9yIHRoZSBnaXZlbiB2YXJpYWJsZSByZWZlcmVuY2UuXG5cdFx0QW4gb3B0aW9uYWwgZmlsdGVyIGNhbiBiZSB1c2VkIHRvIGxpbWl0IHRoZSBmZXRjaGVkIGNoaWxkcmVuIHRvIGVpdGhlciBuYW1lZCBvciBpbmRleGVkIGNoaWxkcmVuLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlc1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAndmFyaWFibGVzJztcblx0XHRhcmd1bWVudHM6IFZhcmlhYmxlc0FyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICd2YXJpYWJsZXMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVzQXJndW1lbnRzIHtcblx0XHQvKiogVGhlIFZhcmlhYmxlIHJlZmVyZW5jZS4gKi9cblx0XHR2YXJpYWJsZXNSZWZlcmVuY2U6IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgZmlsdGVyIHRvIGxpbWl0IHRoZSBjaGlsZCB2YXJpYWJsZXMgdG8gZWl0aGVyIG5hbWVkIG9yIGluZGV4ZWQuIElmIG9tbWl0ZWQsIGJvdGggdHlwZXMgYXJlIGZldGNoZWQuICovXG5cdFx0ZmlsdGVyPzogJ2luZGV4ZWQnIHwgJ25hbWVkJztcblx0XHQvKiogVGhlIGluZGV4IG9mIHRoZSBmaXJzdCB2YXJpYWJsZSB0byByZXR1cm47IGlmIG9taXR0ZWQgY2hpbGRyZW4gc3RhcnQgYXQgMC4gKi9cblx0XHRzdGFydD86IG51bWJlcjtcblx0XHQvKiogVGhlIG51bWJlciBvZiB2YXJpYWJsZXMgdG8gcmV0dXJuLiBJZiBjb3VudCBpcyBtaXNzaW5nIG9yIDAsIGFsbCB2YXJpYWJsZXMgYXJlIHJldHVybmVkLiAqL1xuXHRcdGNvdW50PzogbnVtYmVyO1xuXHRcdC8qKiBTcGVjaWZpZXMgZGV0YWlscyBvbiBob3cgdG8gZm9ybWF0IHRoZSBWYXJpYWJsZSB2YWx1ZXMuICovXG5cdFx0Zm9ybWF0PzogVmFsdWVGb3JtYXQ7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3ZhcmlhYmxlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBWYXJpYWJsZXNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogQWxsIChvciBhIHJhbmdlKSBvZiB2YXJpYWJsZXMgZm9yIHRoZSBnaXZlbiB2YXJpYWJsZSByZWZlcmVuY2UuICovXG5cdFx0XHR2YXJpYWJsZXM6IFZhcmlhYmxlW107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBzZXRWYXJpYWJsZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzZXRWYXJpYWJsZScuXG5cdFx0U2V0IHRoZSB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGluIHRoZSB2YXJpYWJsZSBjb250YWluZXIgdG8gYSBuZXcgdmFsdWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0VmFyaWFibGVSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3NldFZhcmlhYmxlJztcblx0XHRhcmd1bWVudHM6IFNldFZhcmlhYmxlQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3NldFZhcmlhYmxlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldFZhcmlhYmxlQXJndW1lbnRzIHtcblx0XHQvKiogVGhlIHJlZmVyZW5jZSBvZiB0aGUgdmFyaWFibGUgY29udGFpbmVyLiAqL1xuXHRcdHZhcmlhYmxlc1JlZmVyZW5jZTogbnVtYmVyO1xuXHRcdC8qKiBUaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUuICovXG5cdFx0bmFtZTogc3RyaW5nO1xuXHRcdC8qKiBUaGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlLiAqL1xuXHRcdHZhbHVlOiBzdHJpbmc7XG5cdFx0LyoqIFNwZWNpZmllcyBkZXRhaWxzIG9uIGhvdyB0byBmb3JtYXQgdGhlIHJlc3BvbnNlIHZhbHVlLiAqL1xuXHRcdGZvcm1hdD86IFZhbHVlRm9ybWF0O1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzZXRWYXJpYWJsZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRWYXJpYWJsZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgbmV3IHZhbHVlIG9mIHRoZSB2YXJpYWJsZS4gKi9cblx0XHRcdHZhbHVlOiBzdHJpbmc7XG5cdFx0XHQvKiogVGhlIHR5cGUgb2YgdGhlIG5ldyB2YWx1ZS4gVHlwaWNhbGx5IHNob3duIGluIHRoZSBVSSB3aGVuIGhvdmVyaW5nIG92ZXIgdGhlIHZhbHVlLiAqL1xuXHRcdFx0dHlwZT86IHN0cmluZztcblx0XHRcdC8qKiBJZiB2YXJpYWJsZXNSZWZlcmVuY2UgaXMgPiAwLCB0aGUgbmV3IHZhbHVlIGlzIHN0cnVjdHVyZWQgYW5kIGl0cyBjaGlsZHJlbiBjYW4gYmUgcmV0cmlldmVkIGJ5IHBhc3NpbmcgdmFyaWFibGVzUmVmZXJlbmNlIHRvIHRoZSBWYXJpYWJsZXNSZXF1ZXN0LiAqL1xuXHRcdFx0dmFyaWFibGVzUmVmZXJlbmNlPzogbnVtYmVyO1xuXHRcdFx0LyoqIFRoZSBudW1iZXIgb2YgbmFtZWQgY2hpbGQgdmFyaWFibGVzLlxuXHRcdFx0XHRUaGUgY2xpZW50IGNhbiB1c2UgdGhpcyBvcHRpb25hbCBpbmZvcm1hdGlvbiB0byBwcmVzZW50IHRoZSB2YXJpYWJsZXMgaW4gYSBwYWdlZCBVSSBhbmQgZmV0Y2ggdGhlbSBpbiBjaHVua3MuXG5cdFx0XHQqL1xuXHRcdFx0bmFtZWRWYXJpYWJsZXM/OiBudW1iZXI7XG5cdFx0XHQvKiogVGhlIG51bWJlciBvZiBpbmRleGVkIGNoaWxkIHZhcmlhYmxlcy5cblx0XHRcdFx0VGhlIGNsaWVudCBjYW4gdXNlIHRoaXMgb3B0aW9uYWwgaW5mb3JtYXRpb24gdG8gcHJlc2VudCB0aGUgdmFyaWFibGVzIGluIGEgcGFnZWQgVUkgYW5kIGZldGNoIHRoZW0gaW4gY2h1bmtzLlxuXHRcdFx0Ki9cblx0XHRcdGluZGV4ZWRWYXJpYWJsZXM/OiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTb3VyY2UgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc291cmNlJy5cblx0XHRUaGUgcmVxdWVzdCByZXRyaWV2ZXMgdGhlIHNvdXJjZSBjb2RlIGZvciBhIGdpdmVuIHNvdXJjZSByZWZlcmVuY2UuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU291cmNlUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdzb3VyY2UnO1xuXHRcdGFyZ3VtZW50czogU291cmNlQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3NvdXJjZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTb3VyY2VBcmd1bWVudHMge1xuXHRcdC8qKiBTcGVjaWZpZXMgdGhlIHNvdXJjZSBjb250ZW50IHRvIGxvYWQuIEVpdGhlciBzb3VyY2UucGF0aCBvciBzb3VyY2Uuc291cmNlUmVmZXJlbmNlIG11c3QgYmUgc3BlY2lmaWVkLiAqL1xuXHRcdHNvdXJjZT86IFNvdXJjZTtcblx0XHQvKiogVGhlIHJlZmVyZW5jZSB0byB0aGUgc291cmNlLiBUaGlzIGlzIHRoZSBzYW1lIGFzIHNvdXJjZS5zb3VyY2VSZWZlcmVuY2UuIFRoaXMgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc2luY2Ugb2xkIGJhY2tlbmRzIGRvIG5vdCB1bmRlcnN0YW5kIHRoZSAnc291cmNlJyBhdHRyaWJ1dGUuICovXG5cdFx0c291cmNlUmVmZXJlbmNlOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3NvdXJjZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTb3VyY2VSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogQ29udGVudCBvZiB0aGUgc291cmNlIHJlZmVyZW5jZS4gKi9cblx0XHRcdGNvbnRlbnQ6IHN0cmluZztcblx0XHRcdC8qKiBPcHRpb25hbCBjb250ZW50IHR5cGUgKG1pbWUgdHlwZSkgb2YgdGhlIHNvdXJjZS4gKi9cblx0XHRcdG1pbWVUeXBlPzogc3RyaW5nO1xuXHRcdH07XG5cdH1cblxuXHQvKiogVGhyZWFkIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3RocmVhZHMnLlxuXHRcdFRoZSByZXF1ZXN0IHJldHJpZXZlcyBhIGxpc3Qgb2YgYWxsIHRocmVhZHMuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgVGhyZWFkc1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAndGhyZWFkcyc7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3RocmVhZHMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgVGhyZWFkc1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBBbGwgdGhyZWFkcy4gKi9cblx0XHRcdHRocmVhZHM6IFRocmVhZFtdO1xuXHRcdH07XG5cdH1cblxuXHQvKiogTW9kdWxlcyBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIGRlYnVnIGFkYXB0ZXIgd2l0aCB0aGUgTW9kdWxlc1JlcXVlc3Qgd2hpY2ggY2FuIGVpdGhlciByZXR1cm4gYWxsIG1vZHVsZXMgb3IgYSByYW5nZSBvZiBtb2R1bGVzIHRvIHN1cHBvcnQgcGFnaW5nLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIE1vZHVsZXNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ21vZHVsZXMnO1xuXHRcdGFyZ3VtZW50czogTW9kdWxlc0FyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdtb2R1bGVzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIE1vZHVsZXNBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IG1vZHVsZSB0byByZXR1cm47IGlmIG9taXR0ZWQgbW9kdWxlcyBzdGFydCBhdCAwLiAqL1xuXHRcdHN0YXJ0TW9kdWxlPzogbnVtYmVyO1xuXHRcdC8qKiBUaGUgbnVtYmVyIG9mIG1vZHVsZXMgdG8gcmV0dXJuLiBJZiBtb2R1bGVDb3VudCBpcyBub3Qgc3BlY2lmaWVkIG9yIDAsIGFsbCBtb2R1bGVzIGFyZSByZXR1cm5lZC4gKi9cblx0XHRtb2R1bGVDb3VudD86IG51bWJlcjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnbW9kdWxlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBNb2R1bGVzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIEFsbCBtb2R1bGVzIG9yIHJhbmdlIG9mIG1vZHVsZXMuICovXG5cdFx0XHRtb2R1bGVzOiBNb2R1bGVbXTtcblx0XHRcdC8qKiBUaGUgdG90YWwgbnVtYmVyIG9mIG1vZHVsZXMgYXZhaWxhYmxlLiAqL1xuXHRcdFx0dG90YWxNb2R1bGVzPzogbnVtYmVyO1xuXHRcdH07XG5cdH1cblxuXHQvKiogUmV0cmlldmVzIHRoZSBzZXQgb2YgYWxsIHNvdXJjZXMgY3VycmVudGx5IGxvYWRlZCBieSB0aGUgZGVidWdnZWQgcHJvY2Vzcy4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBMb2FkZWRTb3VyY2VzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdsb2FkZWRTb3VyY2VzJztcblx0XHRhcmd1bWVudHM/OiBMb2FkZWRTb3VyY2VzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ2xvYWRlZFNvdXJjZXMnIHJlcXVlc3QuXG5cdFx0VGhlICdsb2FkZWRTb3VyY2VzJyByZXF1ZXN0IGhhcyBubyBzdGFuZGFyZGl6ZWQgYXJndW1lbnRzLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIExvYWRlZFNvdXJjZXNBcmd1bWVudHMge1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdsb2FkZWRTb3VyY2VzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIExvYWRlZFNvdXJjZXNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogU2V0IG9mIGxvYWRlZCBzb3VyY2VzLiAqL1xuXHRcdFx0c291cmNlczogU291cmNlW107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmFsdWF0ZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdldmFsdWF0ZScuXG5cdFx0RXZhbHVhdGVzIHRoZSBnaXZlbiBleHByZXNzaW9uIGluIHRoZSBjb250ZXh0IG9mIHRoZSB0b3AgbW9zdCBzdGFjayBmcmFtZS5cblx0XHRUaGUgZXhwcmVzc2lvbiBoYXMgYWNjZXNzIHRvIGFueSB2YXJpYWJsZXMgYW5kIGFyZ3VtZW50cyB0aGF0IGFyZSBpbiBzY29wZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZVJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnZXZhbHVhdGUnO1xuXHRcdGFyZ3VtZW50czogRXZhbHVhdGVBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnZXZhbHVhdGUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGVBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgZXhwcmVzc2lvbiB0byBldmFsdWF0ZS4gKi9cblx0XHRleHByZXNzaW9uOiBzdHJpbmc7XG5cdFx0LyoqIEV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGluIHRoZSBzY29wZSBvZiB0aGlzIHN0YWNrIGZyYW1lLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgaW4gdGhlIGdsb2JhbCBzY29wZS4gKi9cblx0XHRmcmFtZUlkPzogbnVtYmVyO1xuXHRcdC8qKiBUaGUgY29udGV4dCBpbiB3aGljaCB0aGUgZXZhbHVhdGUgcmVxdWVzdCBpcyBydW4uXG5cdFx0XHRWYWx1ZXM6IFxuXHRcdFx0J3dhdGNoJzogZXZhbHVhdGUgaXMgcnVuIGluIGEgd2F0Y2guXG5cdFx0XHQncmVwbCc6IGV2YWx1YXRlIGlzIHJ1biBmcm9tIFJFUEwgY29uc29sZS5cblx0XHRcdCdob3Zlcic6IGV2YWx1YXRlIGlzIHJ1biBmcm9tIGEgZGF0YSBob3Zlci5cblx0XHRcdGV0Yy5cblx0XHQqL1xuXHRcdGNvbnRleHQ/OiBzdHJpbmc7XG5cdFx0LyoqIFNwZWNpZmllcyBkZXRhaWxzIG9uIGhvdyB0byBmb3JtYXQgdGhlIEV2YWx1YXRlIHJlc3VsdC4gKi9cblx0XHRmb3JtYXQ/OiBWYWx1ZUZvcm1hdDtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnZXZhbHVhdGUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGVSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHJlc3VsdCBvZiB0aGUgZXZhbHVhdGUgcmVxdWVzdC4gKi9cblx0XHRcdHJlc3VsdDogc3RyaW5nO1xuXHRcdFx0LyoqIFRoZSBvcHRpb25hbCB0eXBlIG9mIHRoZSBldmFsdWF0ZSByZXN1bHQuICovXG5cdFx0XHR0eXBlPzogc3RyaW5nO1xuXHRcdFx0LyoqIFByb3BlcnRpZXMgb2YgYSBldmFsdWF0ZSByZXN1bHQgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgaG93IHRvIHJlbmRlciB0aGUgcmVzdWx0IGluIHRoZSBVSS4gKi9cblx0XHRcdHByZXNlbnRhdGlvbkhpbnQ/OiBWYXJpYWJsZVByZXNlbnRhdGlvbkhpbnQ7XG5cdFx0XHQvKiogSWYgdmFyaWFibGVzUmVmZXJlbmNlIGlzID4gMCwgdGhlIGV2YWx1YXRlIHJlc3VsdCBpcyBzdHJ1Y3R1cmVkIGFuZCBpdHMgY2hpbGRyZW4gY2FuIGJlIHJldHJpZXZlZCBieSBwYXNzaW5nIHZhcmlhYmxlc1JlZmVyZW5jZSB0byB0aGUgVmFyaWFibGVzUmVxdWVzdC4gKi9cblx0XHRcdHZhcmlhYmxlc1JlZmVyZW5jZTogbnVtYmVyO1xuXHRcdFx0LyoqIFRoZSBudW1iZXIgb2YgbmFtZWQgY2hpbGQgdmFyaWFibGVzLlxuXHRcdFx0XHRUaGUgY2xpZW50IGNhbiB1c2UgdGhpcyBvcHRpb25hbCBpbmZvcm1hdGlvbiB0byBwcmVzZW50IHRoZSB2YXJpYWJsZXMgaW4gYSBwYWdlZCBVSSBhbmQgZmV0Y2ggdGhlbSBpbiBjaHVua3MuXG5cdFx0XHQqL1xuXHRcdFx0bmFtZWRWYXJpYWJsZXM/OiBudW1iZXI7XG5cdFx0XHQvKiogVGhlIG51bWJlciBvZiBpbmRleGVkIGNoaWxkIHZhcmlhYmxlcy5cblx0XHRcdFx0VGhlIGNsaWVudCBjYW4gdXNlIHRoaXMgb3B0aW9uYWwgaW5mb3JtYXRpb24gdG8gcHJlc2VudCB0aGUgdmFyaWFibGVzIGluIGEgcGFnZWQgVUkgYW5kIGZldGNoIHRoZW0gaW4gY2h1bmtzLlxuXHRcdFx0Ki9cblx0XHRcdGluZGV4ZWRWYXJpYWJsZXM/OiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTdGVwSW5UYXJnZXRzIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3N0ZXBJblRhcmdldHMnLlxuXHRcdFRoaXMgcmVxdWVzdCByZXRyaWV2ZXMgdGhlIHBvc3NpYmxlIHN0ZXBJbiB0YXJnZXRzIGZvciB0aGUgc3BlY2lmaWVkIHN0YWNrIGZyYW1lLlxuXHRcdFRoZXNlIHRhcmdldHMgY2FuIGJlIHVzZWQgaW4gdGhlICdzdGVwSW4nIHJlcXVlc3QuXG5cdFx0VGhlIFN0ZXBJblRhcmdldHMgbWF5IG9ubHkgYmUgY2FsbGVkIGlmIHRoZSAnc3VwcG9ydHNTdGVwSW5UYXJnZXRzUmVxdWVzdCcgY2FwYWJpbGl0eSBleGlzdHMgYW5kIGlzIHRydWUuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcEluVGFyZ2V0c1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc3RlcEluVGFyZ2V0cyc7XG5cdFx0YXJndW1lbnRzOiBTdGVwSW5UYXJnZXRzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3N0ZXBJblRhcmdldHMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcEluVGFyZ2V0c0FyZ3VtZW50cyB7XG5cdFx0LyoqIFRoZSBzdGFjayBmcmFtZSBmb3Igd2hpY2ggdG8gcmV0cmlldmUgdGhlIHBvc3NpYmxlIHN0ZXBJbiB0YXJnZXRzLiAqL1xuXHRcdGZyYW1lSWQ6IG51bWJlcjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnc3RlcEluVGFyZ2V0cycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGVwSW5UYXJnZXRzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBwb3NzaWJsZSBzdGVwSW4gdGFyZ2V0cyBvZiB0aGUgc3BlY2lmaWVkIHNvdXJjZSBsb2NhdGlvbi4gKi9cblx0XHRcdHRhcmdldHM6IFN0ZXBJblRhcmdldFtdO1xuXHRcdH07XG5cdH1cblxuXHQvKiogR290b1RhcmdldHMgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnZ290b1RhcmdldHMnLlxuXHRcdFRoaXMgcmVxdWVzdCByZXRyaWV2ZXMgdGhlIHBvc3NpYmxlIGdvdG8gdGFyZ2V0cyBmb3IgdGhlIHNwZWNpZmllZCBzb3VyY2UgbG9jYXRpb24uXG5cdFx0VGhlc2UgdGFyZ2V0cyBjYW4gYmUgdXNlZCBpbiB0aGUgJ2dvdG8nIHJlcXVlc3QuXG5cdFx0VGhlIEdvdG9UYXJnZXRzIHJlcXVlc3QgbWF5IG9ubHkgYmUgY2FsbGVkIGlmIHRoZSAnc3VwcG9ydHNHb3RvVGFyZ2V0c1JlcXVlc3QnIGNhcGFiaWxpdHkgZXhpc3RzIGFuZCBpcyB0cnVlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEdvdG9UYXJnZXRzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdnb3RvVGFyZ2V0cyc7XG5cdFx0YXJndW1lbnRzOiBHb3RvVGFyZ2V0c0FyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdnb3RvVGFyZ2V0cycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBHb3RvVGFyZ2V0c0FyZ3VtZW50cyB7XG5cdFx0LyoqIFRoZSBzb3VyY2UgbG9jYXRpb24gZm9yIHdoaWNoIHRoZSBnb3RvIHRhcmdldHMgYXJlIGRldGVybWluZWQuICovXG5cdFx0c291cmNlOiBTb3VyY2U7XG5cdFx0LyoqIFRoZSBsaW5lIGxvY2F0aW9uIGZvciB3aGljaCB0aGUgZ290byB0YXJnZXRzIGFyZSBkZXRlcm1pbmVkLiAqL1xuXHRcdGxpbmU6IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgY29sdW1uIGxvY2F0aW9uIGZvciB3aGljaCB0aGUgZ290byB0YXJnZXRzIGFyZSBkZXRlcm1pbmVkLiAqL1xuXHRcdGNvbHVtbj86IG51bWJlcjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnZ290b1RhcmdldHMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgR290b1RhcmdldHNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHBvc3NpYmxlIGdvdG8gdGFyZ2V0cyBvZiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLiAqL1xuXHRcdFx0dGFyZ2V0czogR290b1RhcmdldFtdO1xuXHRcdH07XG5cdH1cblxuXHQvKiogQ29tcGxldGlvbnNSZXF1ZXN0IHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2NvbXBsZXRpb25zJy5cblx0XHRSZXR1cm5zIGEgbGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucyBmb3IgYSBnaXZlbiBjYXJldCBwb3NpdGlvbiBhbmQgdGV4dC5cblx0XHRUaGUgQ29tcGxldGlvbnNSZXF1ZXN0IG1heSBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgJ3N1cHBvcnRzQ29tcGxldGlvbnNSZXF1ZXN0JyBjYXBhYmlsaXR5IGV4aXN0cyBhbmQgaXMgdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBDb21wbGV0aW9uc1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnY29tcGxldGlvbnMnO1xuXHRcdGFyZ3VtZW50czogQ29tcGxldGlvbnNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnY29tcGxldGlvbnMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29tcGxldGlvbnNBcmd1bWVudHMge1xuXHRcdC8qKiBSZXR1cm5zIGNvbXBsZXRpb25zIGluIHRoZSBzY29wZSBvZiB0aGlzIHN0YWNrIGZyYW1lLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgY29tcGxldGlvbnMgYXJlIHJldHVybmVkIGZvciB0aGUgZ2xvYmFsIHNjb3BlLiAqL1xuXHRcdGZyYW1lSWQ/OiBudW1iZXI7XG5cdFx0LyoqIE9uZSBvciBtb3JlIHNvdXJjZSBsaW5lcy4gVHlwaWNhbGx5IHRoaXMgaXMgdGhlIHRleHQgYSB1c2VyIGhhcyB0eXBlZCBpbnRvIHRoZSBkZWJ1ZyBjb25zb2xlIGJlZm9yZSBoZSBhc2tlZCBmb3IgY29tcGxldGlvbi4gKi9cblx0XHR0ZXh0OiBzdHJpbmc7XG5cdFx0LyoqIFRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gZm9yIHdoaWNoIHRvIGRldGVybWluZSB0aGUgY29tcGxldGlvbiBwcm9wb3NhbHMuICovXG5cdFx0Y29sdW1uOiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGxpbmUgZm9yIHdoaWNoIHRvIGRldGVybWluZSB0aGUgY29tcGxldGlvbiBwcm9wb3NhbHMuIElmIG1pc3NpbmcgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHRleHQgaXMgYXNzdW1lZC4gKi9cblx0XHRsaW5lPzogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdjb21wbGV0aW9ucycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBDb21wbGV0aW9uc1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgcG9zc2libGUgY29tcGxldGlvbnMgZm9yIC4gKi9cblx0XHRcdHRhcmdldHM6IENvbXBsZXRpb25JdGVtW107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFeGNlcHRpb25JbmZvUmVxdWVzdCByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdleGNlcHRpb25JbmZvJy5cblx0XHRSZXRyaWV2ZXMgdGhlIGRldGFpbHMgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgU3RvcHBlZEV2ZW50IHRvIGJlIHJhaXNlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25JbmZvUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdleGNlcHRpb25JbmZvJztcblx0XHRhcmd1bWVudHM6IEV4Y2VwdGlvbkluZm9Bcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnZXhjZXB0aW9uSW5mbycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25JbmZvQXJndW1lbnRzIHtcblx0XHQvKiogVGhyZWFkIGZvciB3aGljaCBleGNlcHRpb24gaW5mb3JtYXRpb24gc2hvdWxkIGJlIHJldHJpZXZlZC4gKi9cblx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdleGNlcHRpb25JbmZvJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEV4Y2VwdGlvbkluZm9SZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogSUQgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IHdhcyB0aHJvd24uICovXG5cdFx0XHRleGNlcHRpb25JZDogc3RyaW5nO1xuXHRcdFx0LyoqIERlc2NyaXB0aXZlIHRleHQgZm9yIHRoZSBleGNlcHRpb24gcHJvdmlkZWQgYnkgdGhlIGRlYnVnIGFkYXB0ZXIuICovXG5cdFx0XHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0XHRcdC8qKiBNb2RlIHRoYXQgY2F1c2VkIHRoZSBleGNlcHRpb24gbm90aWZpY2F0aW9uIHRvIGJlIHJhaXNlZC4gKi9cblx0XHRcdGJyZWFrTW9kZTogRXhjZXB0aW9uQnJlYWtNb2RlO1xuXHRcdFx0LyoqIERldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBleGNlcHRpb24uICovXG5cdFx0XHRkZXRhaWxzPzogRXhjZXB0aW9uRGV0YWlscztcblx0XHR9O1xuXHR9XG5cblx0LyoqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjYXBhYmlsaXRpZXMgb2YgYSBkZWJ1ZyBhZGFwdGVyLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENhcGFiaWxpdGllcyB7XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSBjb25maWd1cmF0aW9uRG9uZVJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNDb25maWd1cmF0aW9uRG9uZVJlcXVlc3Q/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyBmdW5jdGlvbiBicmVha3BvaW50cy4gKi9cblx0XHRzdXBwb3J0c0Z1bmN0aW9uQnJlYWtwb2ludHM/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyBjb25kaXRpb25hbCBicmVha3BvaW50cy4gKi9cblx0XHRzdXBwb3J0c0NvbmRpdGlvbmFsQnJlYWtwb2ludHM/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyBicmVha3BvaW50cyB0aGF0IGJyZWFrIGV4ZWN1dGlvbiBhZnRlciBhIHNwZWNpZmllZCBudW1iZXIgb2YgaGl0cy4gKi9cblx0XHRzdXBwb3J0c0hpdENvbmRpdGlvbmFsQnJlYWtwb2ludHM/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyBhIChzaWRlIGVmZmVjdCBmcmVlKSBldmFsdWF0ZSByZXF1ZXN0IGZvciBkYXRhIGhvdmVycy4gKi9cblx0XHRzdXBwb3J0c0V2YWx1YXRlRm9ySG92ZXJzPzogYm9vbGVhbjtcblx0XHQvKiogQXZhaWxhYmxlIGZpbHRlcnMgb3Igb3B0aW9ucyBmb3IgdGhlIHNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzIHJlcXVlc3QuICovXG5cdFx0ZXhjZXB0aW9uQnJlYWtwb2ludEZpbHRlcnM/OiBFeGNlcHRpb25CcmVha3BvaW50c0ZpbHRlcltdO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyBzdGVwcGluZyBiYWNrIHZpYSB0aGUgc3RlcEJhY2sgYW5kIHJldmVyc2VDb250aW51ZSByZXF1ZXN0cy4gKi9cblx0XHRzdXBwb3J0c1N0ZXBCYWNrPzogYm9vbGVhbjtcblx0XHQvKiogVGhlIGRlYnVnIGFkYXB0ZXIgc3VwcG9ydHMgc2V0dGluZyBhIHZhcmlhYmxlIHRvIGEgdmFsdWUuICovXG5cdFx0c3VwcG9ydHNTZXRWYXJpYWJsZT86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHJlc3RhcnRpbmcgYSBmcmFtZS4gKi9cblx0XHRzdXBwb3J0c1Jlc3RhcnRGcmFtZT86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSBnb3RvVGFyZ2V0c1JlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNHb3RvVGFyZ2V0c1JlcXVlc3Q/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyB0aGUgc3RlcEluVGFyZ2V0c1JlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNTdGVwSW5UYXJnZXRzUmVxdWVzdD86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSBjb21wbGV0aW9uc1JlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNDb21wbGV0aW9uc1JlcXVlc3Q/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyB0aGUgbW9kdWxlcyByZXF1ZXN0LiAqL1xuXHRcdHN1cHBvcnRzTW9kdWxlc1JlcXVlc3Q/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgc2V0IG9mIGFkZGl0aW9uYWwgbW9kdWxlIGluZm9ybWF0aW9uIGV4cG9zZWQgYnkgdGhlIGRlYnVnIGFkYXB0ZXIuICovXG5cdFx0YWRkaXRpb25hbE1vZHVsZUNvbHVtbnM/OiBDb2x1bW5EZXNjcmlwdG9yW107XG5cdFx0LyoqIENoZWNrc3VtIGFsZ29yaXRobXMgc3VwcG9ydGVkIGJ5IHRoZSBkZWJ1ZyBhZGFwdGVyLiAqL1xuXHRcdHN1cHBvcnRlZENoZWNrc3VtQWxnb3JpdGhtcz86IENoZWNrc3VtQWxnb3JpdGhtW107XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSBSZXN0YXJ0UmVxdWVzdC4gSW4gdGhpcyBjYXNlIGEgY2xpZW50IHNob3VsZCBub3QgaW1wbGVtZW50ICdyZXN0YXJ0JyBieSB0ZXJtaW5hdGluZyBhbmQgcmVsYXVuY2hpbmcgdGhlIGFkYXB0ZXIgYnV0IGJ5IGNhbGxpbmcgdGhlIFJlc3RhcnRSZXF1ZXN0LiAqL1xuXHRcdHN1cHBvcnRzUmVzdGFydFJlcXVlc3Q/OiBib29sZWFuO1xuXHRcdC8qKiBUaGUgZGVidWcgYWRhcHRlciBzdXBwb3J0cyAnZXhjZXB0aW9uT3B0aW9ucycgb24gdGhlIHNldEV4Y2VwdGlvbkJyZWFrcG9pbnRzIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNFeGNlcHRpb25PcHRpb25zPzogYm9vbGVhbjtcblx0XHQvKiogVGhlIGRlYnVnIGFkYXB0ZXIgc3VwcG9ydHMgYSAnZm9ybWF0JyBhdHRyaWJ1dGUgb24gdGhlIHN0YWNrVHJhY2VSZXF1ZXN0LCB2YXJpYWJsZXNSZXF1ZXN0LCBhbmQgZXZhbHVhdGVSZXF1ZXN0LiAqL1xuXHRcdHN1cHBvcnRzVmFsdWVGb3JtYXR0aW5nT3B0aW9ucz86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSBleGNlcHRpb25JbmZvIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydHNFeGNlcHRpb25JbmZvUmVxdWVzdD86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAndGVybWluYXRlRGVidWdnZWUnIGF0dHJpYnV0ZSBvbiB0aGUgJ2Rpc2Nvbm5lY3QnIHJlcXVlc3QuICovXG5cdFx0c3VwcG9ydFRlcm1pbmF0ZURlYnVnZ2VlPzogYm9vbGVhbjtcblx0XHQvKiogVGhlIGRlYnVnIGFkYXB0ZXIgc3VwcG9ydHMgdGhlIGRlbGF5ZWQgbG9hZGluZyBvZiBwYXJ0cyBvZiB0aGUgc3RhY2ssIHdoaWNoIHJlcXVpcmVzIHRoYXQgYm90aCB0aGUgJ3N0YXJ0RnJhbWUnIGFuZCAnbGV2ZWxzJyBhcmd1bWVudHMgYW5kIHRoZSAndG90YWxGcmFtZXMnIHJlc3VsdCBvZiB0aGUgJ1N0YWNrVHJhY2UnIHJlcXVlc3QgYXJlIHN1cHBvcnRlZC4gKi9cblx0XHRzdXBwb3J0c0RlbGF5ZWRTdGFja1RyYWNlTG9hZGluZz86IGJvb2xlYW47XG5cdFx0LyoqIFRoZSBkZWJ1ZyBhZGFwdGVyIHN1cHBvcnRzIHRoZSAnbG9hZGVkU291cmNlcycgcmVxdWVzdC4gKi9cblx0XHRzdXBwb3J0c0xvYWRlZFNvdXJjZXNSZXF1ZXN0PzogYm9vbGVhbjtcblx0fVxuXG5cdC8qKiBBbiBFeGNlcHRpb25CcmVha3BvaW50c0ZpbHRlciBpcyBzaG93biBpbiB0aGUgVUkgYXMgYW4gb3B0aW9uIGZvciBjb25maWd1cmluZyBob3cgZXhjZXB0aW9ucyBhcmUgZGVhbHQgd2l0aC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25CcmVha3BvaW50c0ZpbHRlciB7XG5cdFx0LyoqIFRoZSBpbnRlcm5hbCBJRCBvZiB0aGUgZmlsdGVyLiBUaGlzIHZhbHVlIGlzIHBhc3NlZCB0byB0aGUgc2V0RXhjZXB0aW9uQnJlYWtwb2ludHMgcmVxdWVzdC4gKi9cblx0XHRmaWx0ZXI6IHN0cmluZztcblx0XHQvKiogVGhlIG5hbWUgb2YgdGhlIGZpbHRlci4gVGhpcyB3aWxsIGJlIHNob3duIGluIHRoZSBVSS4gKi9cblx0XHRsYWJlbDogc3RyaW5nO1xuXHRcdC8qKiBJbml0aWFsIHZhbHVlIG9mIHRoZSBmaWx0ZXIuIElmIG5vdCBzcGVjaWZpZWQgYSB2YWx1ZSAnZmFsc2UnIGlzIGFzc3VtZWQuICovXG5cdFx0ZGVmYXVsdD86IGJvb2xlYW47XG5cdH1cblxuXHQvKiogQSBzdHJ1Y3R1cmVkIG1lc3NhZ2Ugb2JqZWN0LiBVc2VkIHRvIHJldHVybiBlcnJvcnMgZnJvbSByZXF1ZXN0cy4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcblx0XHQvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBtZXNzYWdlLiAqL1xuXHRcdGlkOiBudW1iZXI7XG5cdFx0LyoqIEEgZm9ybWF0IHN0cmluZyBmb3IgdGhlIG1lc3NhZ2UuIEVtYmVkZGVkIHZhcmlhYmxlcyBoYXZlIHRoZSBmb3JtICd7bmFtZX0nLlxuXHRcdFx0SWYgdmFyaWFibGUgbmFtZSBzdGFydHMgd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciwgdGhlIHZhcmlhYmxlIGRvZXMgbm90IGNvbnRhaW4gdXNlciBkYXRhIChQSUkpIGFuZCBjYW4gYmUgc2FmZWx5IHVzZWQgZm9yIHRlbGVtZXRyeSBwdXJwb3Nlcy5cblx0XHQqL1xuXHRcdGZvcm1hdDogc3RyaW5nO1xuXHRcdC8qKiBBbiBvYmplY3QgdXNlZCBhcyBhIGRpY3Rpb25hcnkgZm9yIGxvb2tpbmcgdXAgdGhlIHZhcmlhYmxlcyBpbiB0aGUgZm9ybWF0IHN0cmluZy4gKi9cblx0XHR2YXJpYWJsZXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZzsgfTtcblx0XHQvKiogSWYgdHJ1ZSBzZW5kIHRvIHRlbGVtZXRyeS4gKi9cblx0XHRzZW5kVGVsZW1ldHJ5PzogYm9vbGVhbjtcblx0XHQvKiogSWYgdHJ1ZSBzaG93IHVzZXIuICovXG5cdFx0c2hvd1VzZXI/OiBib29sZWFuO1xuXHRcdC8qKiBBbiBvcHRpb25hbCB1cmwgd2hlcmUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG1lc3NhZ2UgY2FuIGJlIGZvdW5kLiAqL1xuXHRcdHVybD86IHN0cmluZztcblx0XHQvKiogQW4gb3B0aW9uYWwgbGFiZWwgdGhhdCBpcyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIgYXMgdGhlIFVJIGZvciBvcGVuaW5nIHRoZSB1cmwuICovXG5cdFx0dXJsTGFiZWw/OiBzdHJpbmc7XG5cdH1cblxuXHQvKiogQSBNb2R1bGUgb2JqZWN0IHJlcHJlc2VudHMgYSByb3cgaW4gdGhlIG1vZHVsZXMgdmlldy5cblx0XHRUd28gYXR0cmlidXRlcyBhcmUgbWFuZGF0b3J5OiBhbiBpZCBpZGVudGlmaWVzIGEgbW9kdWxlIGluIHRoZSBtb2R1bGVzIHZpZXcgYW5kIGlzIHVzZWQgaW4gYSBNb2R1bGVFdmVudCBmb3IgaWRlbnRpZnlpbmcgYSBtb2R1bGUgZm9yIGFkZGluZywgdXBkYXRpbmcgb3IgZGVsZXRpbmcuXG5cdFx0VGhlIG5hbWUgaXMgdXNlZCB0byBtaW5pbWFsbHkgcmVuZGVyIHRoZSBtb2R1bGUgaW4gdGhlIFVJLlxuXHRcdFxuXHRcdEFkZGl0aW9uYWwgYXR0cmlidXRlcyBjYW4gYmUgYWRkZWQgdG8gdGhlIG1vZHVsZS4gVGhleSB3aWxsIHNob3cgdXAgaW4gdGhlIG1vZHVsZSBWaWV3IGlmIHRoZXkgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgQ29sdW1uRGVzY3JpcHRvci5cblx0XHRcblx0XHRUbyBhdm9pZCBhbiB1bm5lY2Vzc2FyeSBwcm9saWZlcmF0aW9uIG9mIGFkZGl0aW9uYWwgYXR0cmlidXRlcyB3aXRoIHNpbWlsYXIgc2VtYW50aWNzIGJ1dCBkaWZmZXJlbnQgbmFtZXNcblx0XHR3ZSByZWNvbW1lbmQgdG8gcmUtdXNlIGF0dHJpYnV0ZXMgZnJvbSB0aGUgJ3JlY29tbWVuZGVkJyBsaXN0IGJlbG93IGZpcnN0LCBhbmQgb25seSBpbnRyb2R1Y2UgbmV3IGF0dHJpYnV0ZXMgaWYgbm90aGluZyBhcHByb3ByaWF0ZSBjb3VsZCBiZSBmb3VuZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBNb2R1bGUge1xuXHRcdC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIG1vZHVsZS4gKi9cblx0XHRpZDogbnVtYmVyIHwgc3RyaW5nO1xuXHRcdC8qKiBBIG5hbWUgb2YgdGhlIG1vZHVsZS4gKi9cblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0LyoqIG9wdGlvbmFsIGJ1dCByZWNvbW1lbmRlZCBhdHRyaWJ1dGVzLlxuXHRcdFx0YWx3YXlzIHRyeSB0byB1c2UgdGhlc2UgZmlyc3QgYmVmb3JlIGludHJvZHVjaW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlcy5cblx0XHRcdFxuXHRcdFx0TG9naWNhbCBmdWxsIHBhdGggdG8gdGhlIG1vZHVsZS4gVGhlIGV4YWN0IGRlZmluaXRpb24gaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZCwgYnV0IHVzdWFsbHkgdGhpcyB3b3VsZCBiZSBhIGZ1bGwgcGF0aCB0byB0aGUgb24tZGlzayBmaWxlIGZvciB0aGUgbW9kdWxlLlxuXHRcdCovXG5cdFx0cGF0aD86IHN0cmluZztcblx0XHQvKiogVHJ1ZSBpZiB0aGUgbW9kdWxlIGlzIG9wdGltaXplZC4gKi9cblx0XHRpc09wdGltaXplZD86IGJvb2xlYW47XG5cdFx0LyoqIFRydWUgaWYgdGhlIG1vZHVsZSBpcyBjb25zaWRlcmVkICd1c2VyIGNvZGUnIGJ5IGEgZGVidWdnZXIgdGhhdCBzdXBwb3J0cyAnSnVzdCBNeSBDb2RlJy4gKi9cblx0XHRpc1VzZXJDb2RlPzogYm9vbGVhbjtcblx0XHQvKiogVmVyc2lvbiBvZiBNb2R1bGUuICovXG5cdFx0dmVyc2lvbj86IHN0cmluZztcblx0XHQvKiogVXNlciB1bmRlcnN0YW5kYWJsZSBkZXNjcmlwdGlvbiBvZiBpZiBzeW1ib2xzIHdlcmUgZm91bmQgZm9yIHRoZSBtb2R1bGUgKGV4OiAnU3ltYm9scyBMb2FkZWQnLCAnU3ltYm9scyBub3QgZm91bmQnLCBldGMuICovXG5cdFx0c3ltYm9sU3RhdHVzPzogc3RyaW5nO1xuXHRcdC8qKiBMb2dpY2FsIGZ1bGwgcGF0aCB0byB0aGUgc3ltYm9sIGZpbGUuIFRoZSBleGFjdCBkZWZpbml0aW9uIGlzIGltcGxlbWVudGF0aW9uIGRlZmluZWQuICovXG5cdFx0c3ltYm9sRmlsZVBhdGg/OiBzdHJpbmc7XG5cdFx0LyoqIE1vZHVsZSBjcmVhdGVkIG9yIG1vZGlmaWVkLiAqL1xuXHRcdGRhdGVUaW1lU3RhbXA/OiBzdHJpbmc7XG5cdFx0LyoqIEFkZHJlc3MgcmFuZ2UgY292ZXJlZCBieSB0aGlzIG1vZHVsZS4gKi9cblx0XHRhZGRyZXNzUmFuZ2U/OiBzdHJpbmc7XG5cdH1cblxuXHQvKiogQSBDb2x1bW5EZXNjcmlwdG9yIHNwZWNpZmllcyB3aGF0IG1vZHVsZSBhdHRyaWJ1dGUgdG8gc2hvdyBpbiBhIGNvbHVtbiBvZiB0aGUgTW9kdWxlc1ZpZXcsIGhvdyB0byBmb3JtYXQgaXQsIGFuZCB3aGF0IHRoZSBjb2x1bW4ncyBsYWJlbCBzaG91bGQgYmUuXG5cdFx0SXQgaXMgb25seSB1c2VkIGlmIHRoZSB1bmRlcmx5aW5nIFVJIGFjdHVhbGx5IHN1cHBvcnRzIHRoaXMgbGV2ZWwgb2YgY3VzdG9taXphdGlvbi5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBDb2x1bW5EZXNjcmlwdG9yIHtcblx0XHQvKiogTmFtZSBvZiB0aGUgYXR0cmlidXRlIHJlbmRlcmVkIGluIHRoaXMgY29sdW1uLiAqL1xuXHRcdGF0dHJpYnV0ZU5hbWU6IHN0cmluZztcblx0XHQvKiogSGVhZGVyIFVJIGxhYmVsIG9mIGNvbHVtbi4gKi9cblx0XHRsYWJlbDogc3RyaW5nO1xuXHRcdC8qKiBGb3JtYXQgdG8gdXNlIGZvciB0aGUgcmVuZGVyZWQgdmFsdWVzIGluIHRoaXMgY29sdW1uLiBUQkQgaG93IHRoZSBmb3JtYXQgc3RyaW5ncyBsb29rcyBsaWtlLiAqL1xuXHRcdGZvcm1hdD86IHN0cmluZztcblx0XHQvKiogRGF0YXR5cGUgb2YgdmFsdWVzIGluIHRoaXMgY29sdW1uLiAgRGVmYXVsdHMgdG8gJ3N0cmluZycgaWYgbm90IHNwZWNpZmllZC4gKi9cblx0XHR0eXBlPzogJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdib29sZWFuJyB8ICd1bml4VGltZXN0YW1wVVRDJztcblx0XHQvKiogV2lkdGggb2YgdGhpcyBjb2x1bW4gaW4gY2hhcmFjdGVycyAoaGludCBvbmx5KS4gKi9cblx0XHR3aWR0aD86IG51bWJlcjtcblx0fVxuXG5cdC8qKiBUaGUgTW9kdWxlc1ZpZXdEZXNjcmlwdG9yIGlzIHRoZSBjb250YWluZXIgZm9yIGFsbCBkZWNsYXJhdGl2ZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgb2YgYSBNb2R1bGVWaWV3LlxuXHRcdEZvciBub3cgaXQgb25seSBzcGVjaWZpZXMgdGhlIGNvbHVtbnMgdG8gYmUgc2hvd24gaW4gdGhlIG1vZHVsZXMgdmlldy5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBNb2R1bGVzVmlld0Rlc2NyaXB0b3Ige1xuXHRcdGNvbHVtbnM6IENvbHVtbkRlc2NyaXB0b3JbXTtcblx0fVxuXG5cdC8qKiBBIFRocmVhZCAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFRocmVhZCB7XG5cdFx0LyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdGhyZWFkLiAqL1xuXHRcdGlkOiBudW1iZXI7XG5cdFx0LyoqIEEgbmFtZSBvZiB0aGUgdGhyZWFkLiAqL1xuXHRcdG5hbWU6IHN0cmluZztcblx0fVxuXG5cdC8qKiBBIFNvdXJjZSBpcyBhIGRlc2NyaXB0b3IgZm9yIHNvdXJjZSBjb2RlLiBJdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBkZWJ1ZyBhZGFwdGVyIGFzIHBhcnQgb2YgYSBTdGFja0ZyYW1lIGFuZCBpdCBpcyB1c2VkIGJ5IGNsaWVudHMgd2hlbiBzcGVjaWZ5aW5nIGJyZWFrcG9pbnRzLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNvdXJjZSB7XG5cdFx0LyoqIFRoZSBzaG9ydCBuYW1lIG9mIHRoZSBzb3VyY2UuIEV2ZXJ5IHNvdXJjZSByZXR1cm5lZCBmcm9tIHRoZSBkZWJ1ZyBhZGFwdGVyIGhhcyBhIG5hbWUuIFdoZW4gc2VuZGluZyBhIHNvdXJjZSB0byB0aGUgZGVidWcgYWRhcHRlciB0aGlzIG5hbWUgaXMgb3B0aW9uYWwuICovXG5cdFx0bmFtZT86IHN0cmluZztcblx0XHQvKiogVGhlIHBhdGggb2YgdGhlIHNvdXJjZSB0byBiZSBzaG93biBpbiB0aGUgVUkuIEl0IGlzIG9ubHkgdXNlZCB0byBsb2NhdGUgYW5kIGxvYWQgdGhlIGNvbnRlbnQgb2YgdGhlIHNvdXJjZSBpZiBubyBzb3VyY2VSZWZlcmVuY2UgaXMgc3BlY2lmaWVkIChvciBpdHMgdmF1bGUgaXMgMCkuICovXG5cdFx0cGF0aD86IHN0cmluZztcblx0XHQvKiogSWYgc291cmNlUmVmZXJlbmNlID4gMCB0aGUgY29udGVudHMgb2YgdGhlIHNvdXJjZSBtdXN0IGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSBTb3VyY2VSZXF1ZXN0IChldmVuIGlmIGEgcGF0aCBpcyBzcGVjaWZpZWQpLiBBIHNvdXJjZVJlZmVyZW5jZSBpcyBvbmx5IHZhbGlkIGZvciBhIHNlc3Npb24sIHNvIGl0IG11c3Qgbm90IGJlIHVzZWQgdG8gcGVyc2lzdCBhIHNvdXJjZS4gKi9cblx0XHRzb3VyY2VSZWZlcmVuY2U/OiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGhpbnQgZm9yIGhvdyB0byBwcmVzZW50IHRoZSBzb3VyY2UgaW4gdGhlIFVJLiBBIHZhbHVlIG9mICdkZWVtcGhhc2l6ZScgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc291cmNlIGlzIG5vdCBhdmFpbGFibGUgb3IgdGhhdCBpdCBpcyBza2lwcGVkIG9uIHN0ZXBwaW5nLiAqL1xuXHRcdHByZXNlbnRhdGlvbkhpbnQ/OiAnbm9ybWFsJyB8ICdlbXBoYXNpemUnIHwgJ2RlZW1waGFzaXplJztcblx0XHQvKiogVGhlIChvcHRpb25hbCkgb3JpZ2luIG9mIHRoaXMgc291cmNlOiBwb3NzaWJsZSB2YWx1ZXMgJ2ludGVybmFsIG1vZHVsZScsICdpbmxpbmVkIGNvbnRlbnQgZnJvbSBzb3VyY2UgbWFwJywgZXRjLiAqL1xuXHRcdG9yaWdpbj86IHN0cmluZztcblx0XHQvKiogQW4gb3B0aW9uYWwgbGlzdCBvZiBzb3VyY2VzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gdGhpcyBzb3VyY2UuIFRoZXNlIG1heSBiZSB0aGUgc291cmNlIHRoYXQgZ2VuZXJhdGVkIHRoaXMgc291cmNlLiAqL1xuXHRcdHNvdXJjZXM/OiBTb3VyY2VbXTtcblx0XHQvKiogT3B0aW9uYWwgZGF0YSB0aGF0IGEgZGVidWcgYWRhcHRlciBtaWdodCB3YW50IHRvIGxvb3AgdGhyb3VnaCB0aGUgY2xpZW50LiBUaGUgY2xpZW50IHNob3VsZCBsZWF2ZSB0aGUgZGF0YSBpbnRhY3QgYW5kIHBlcnNpc3QgaXQgYWNyb3NzIHNlc3Npb25zLiBUaGUgY2xpZW50IHNob3VsZCBub3QgaW50ZXJwcmV0IHRoZSBkYXRhLiAqL1xuXHRcdGFkYXB0ZXJEYXRhPzogYW55O1xuXHRcdC8qKiBUaGUgY2hlY2tzdW1zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpbGUuICovXG5cdFx0Y2hlY2tzdW1zPzogQ2hlY2tzdW1bXTtcblx0fVxuXG5cdC8qKiBBIFN0YWNrZnJhbWUgY29udGFpbnMgdGhlIHNvdXJjZSBsb2NhdGlvbi4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGFja0ZyYW1lIHtcblx0XHQvKiogQW4gaWRlbnRpZmllciBmb3IgdGhlIHN0YWNrIGZyYW1lLiBJdCBtdXN0IGJlIHVuaXF1ZSBhY3Jvc3MgYWxsIHRocmVhZHMuIFRoaXMgaWQgY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgdGhlIHNjb3BlcyBvZiB0aGUgZnJhbWUgd2l0aCB0aGUgJ3Njb3Blc1JlcXVlc3QnIG9yIHRvIHJlc3RhcnQgdGhlIGV4ZWN1dGlvbiBvZiBhIHN0YWNrZnJhbWUuICovXG5cdFx0aWQ6IG51bWJlcjtcblx0XHQvKiogVGhlIG5hbWUgb2YgdGhlIHN0YWNrIGZyYW1lLCB0eXBpY2FsbHkgYSBtZXRob2QgbmFtZS4gKi9cblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0LyoqIFRoZSBvcHRpb25hbCBzb3VyY2Ugb2YgdGhlIGZyYW1lLiAqL1xuXHRcdHNvdXJjZT86IFNvdXJjZTtcblx0XHQvKiogVGhlIGxpbmUgd2l0aGluIHRoZSBmaWxlIG9mIHRoZSBmcmFtZS4gSWYgc291cmNlIGlzIG51bGwgb3IgZG9lc24ndCBleGlzdCwgbGluZSBpcyAwIGFuZCBtdXN0IGJlIGlnbm9yZWQuICovXG5cdFx0bGluZTogbnVtYmVyO1xuXHRcdC8qKiBUaGUgY29sdW1uIHdpdGhpbiB0aGUgbGluZS4gSWYgc291cmNlIGlzIG51bGwgb3IgZG9lc24ndCBleGlzdCwgY29sdW1uIGlzIDAgYW5kIG11c3QgYmUgaWdub3JlZC4gKi9cblx0XHRjb2x1bW46IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgZW5kIGxpbmUgb2YgdGhlIHJhbmdlIGNvdmVyZWQgYnkgdGhlIHN0YWNrIGZyYW1lLiAqL1xuXHRcdGVuZExpbmU/OiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGVuZCBjb2x1bW4gb2YgdGhlIHJhbmdlIGNvdmVyZWQgYnkgdGhlIHN0YWNrIGZyYW1lLiAqL1xuXHRcdGVuZENvbHVtbj86IG51bWJlcjtcblx0XHQvKiogVGhlIG1vZHVsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBmcmFtZSwgaWYgYW55LiAqL1xuXHRcdG1vZHVsZUlkPzogbnVtYmVyIHwgc3RyaW5nO1xuXHRcdC8qKiBBbiBvcHRpb25hbCBoaW50IGZvciBob3cgdG8gcHJlc2VudCB0aGlzIGZyYW1lIGluIHRoZSBVSS4gQSB2YWx1ZSBvZiAnbGFiZWwnIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIGZyYW1lIGlzIGFuIGFydGlmaWNpYWwgZnJhbWUgdGhhdCBpcyB1c2VkIGFzIGEgdmlzdWFsIGxhYmVsIG9yIHNlcGFyYXRvci4gQSB2YWx1ZSBvZiAnc3VidGxlJyBjYW4gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIGFwcGVhcmFuY2Ugb2YgYSBmcmFtZSBpbiBhICdzdWJ0bGUnIHdheS4gKi9cblx0XHRwcmVzZW50YXRpb25IaW50PzogJ25vcm1hbCcgfCAnbGFiZWwnIHwgJ3N1YnRsZSc7XG5cdH1cblxuXHQvKiogQSBTY29wZSBpcyBhIG5hbWVkIGNvbnRhaW5lciBmb3IgdmFyaWFibGVzLiBPcHRpb25hbGx5IGEgc2NvcGUgY2FuIG1hcCB0byBhIHNvdXJjZSBvciBhIHJhbmdlIHdpdGhpbiBhIHNvdXJjZS4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTY29wZSB7XG5cdFx0LyoqIE5hbWUgb2YgdGhlIHNjb3BlIHN1Y2ggYXMgJ0FyZ3VtZW50cycsICdMb2NhbHMnLiAqL1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHQvKiogVGhlIHZhcmlhYmxlcyBvZiB0aGlzIHNjb3BlIGNhbiBiZSByZXRyaWV2ZWQgYnkgcGFzc2luZyB0aGUgdmFsdWUgb2YgdmFyaWFibGVzUmVmZXJlbmNlIHRvIHRoZSBWYXJpYWJsZXNSZXF1ZXN0LiAqL1xuXHRcdHZhcmlhYmxlc1JlZmVyZW5jZTogbnVtYmVyO1xuXHRcdC8qKiBUaGUgbnVtYmVyIG9mIG5hbWVkIHZhcmlhYmxlcyBpbiB0aGlzIHNjb3BlLlxuXHRcdFx0VGhlIGNsaWVudCBjYW4gdXNlIHRoaXMgb3B0aW9uYWwgaW5mb3JtYXRpb24gdG8gcHJlc2VudCB0aGUgdmFyaWFibGVzIGluIGEgcGFnZWQgVUkgYW5kIGZldGNoIHRoZW0gaW4gY2h1bmtzLlxuXHRcdCovXG5cdFx0bmFtZWRWYXJpYWJsZXM/OiBudW1iZXI7XG5cdFx0LyoqIFRoZSBudW1iZXIgb2YgaW5kZXhlZCB2YXJpYWJsZXMgaW4gdGhpcyBzY29wZS5cblx0XHRcdFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG9wdGlvbmFsIGluZm9ybWF0aW9uIHRvIHByZXNlbnQgdGhlIHZhcmlhYmxlcyBpbiBhIHBhZ2VkIFVJIGFuZCBmZXRjaCB0aGVtIGluIGNodW5rcy5cblx0XHQqL1xuXHRcdGluZGV4ZWRWYXJpYWJsZXM/OiBudW1iZXI7XG5cdFx0LyoqIElmIHRydWUsIHRoZSBudW1iZXIgb2YgdmFyaWFibGVzIGluIHRoaXMgc2NvcGUgaXMgbGFyZ2Ugb3IgZXhwZW5zaXZlIHRvIHJldHJpZXZlLiAqL1xuXHRcdGV4cGVuc2l2ZTogYm9vbGVhbjtcblx0XHQvKiogT3B0aW9uYWwgc291cmNlIGZvciB0aGlzIHNjb3BlLiAqL1xuXHRcdHNvdXJjZT86IFNvdXJjZTtcblx0XHQvKiogT3B0aW9uYWwgc3RhcnQgbGluZSBvZiB0aGUgcmFuZ2UgY292ZXJlZCBieSB0aGlzIHNjb3BlLiAqL1xuXHRcdGxpbmU/OiBudW1iZXI7XG5cdFx0LyoqIE9wdGlvbmFsIHN0YXJ0IGNvbHVtbiBvZiB0aGUgcmFuZ2UgY292ZXJlZCBieSB0aGlzIHNjb3BlLiAqL1xuXHRcdGNvbHVtbj86IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgZW5kIGxpbmUgb2YgdGhlIHJhbmdlIGNvdmVyZWQgYnkgdGhpcyBzY29wZS4gKi9cblx0XHRlbmRMaW5lPzogbnVtYmVyO1xuXHRcdC8qKiBPcHRpb25hbCBlbmQgY29sdW1uIG9mIHRoZSByYW5nZSBjb3ZlcmVkIGJ5IHRoaXMgc2NvcGUuICovXG5cdFx0ZW5kQ29sdW1uPzogbnVtYmVyO1xuXHR9XG5cblx0LyoqIEEgVmFyaWFibGUgaXMgYSBuYW1lL3ZhbHVlIHBhaXIuXG5cdFx0T3B0aW9uYWxseSBhIHZhcmlhYmxlIGNhbiBoYXZlIGEgJ3R5cGUnIHRoYXQgaXMgc2hvd24gaWYgc3BhY2UgcGVybWl0cyBvciB3aGVuIGhvdmVyaW5nIG92ZXIgdGhlIHZhcmlhYmxlJ3MgbmFtZS5cblx0XHRBbiBvcHRpb25hbCAna2luZCcgaXMgdXNlZCB0byByZW5kZXIgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIG9mIHRoZSB2YXJpYWJsZSwgZS5nLiBkaWZmZXJlbnQgaWNvbnMgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCBhIHZhcmlhYmxlIGlzIHB1YmxpYyBvciBwcml2YXRlLlxuXHRcdElmIHRoZSB2YWx1ZSBpcyBzdHJ1Y3R1cmVkIChoYXMgY2hpbGRyZW4pLCBhIGhhbmRsZSBpcyBwcm92aWRlZCB0byByZXRyaWV2ZSB0aGUgY2hpbGRyZW4gd2l0aCB0aGUgVmFyaWFibGVzUmVxdWVzdC5cblx0XHRJZiB0aGUgbnVtYmVyIG9mIG5hbWVkIG9yIGluZGV4ZWQgY2hpbGRyZW4gaXMgbGFyZ2UsIHRoZSBudW1iZXJzIHNob3VsZCBiZSByZXR1cm5lZCB2aWEgdGhlIG9wdGlvbmFsICduYW1lZFZhcmlhYmxlcycgYW5kICdpbmRleGVkVmFyaWFibGVzJyBhdHRyaWJ1dGVzLlxuXHRcdFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG9wdGlvbmFsIGluZm9ybWF0aW9uIHRvIHByZXNlbnQgdGhlIGNoaWxkcmVuIGluIGEgcGFnZWQgVUkgYW5kIGZldGNoIHRoZW0gaW4gY2h1bmtzLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlIHtcblx0XHQvKiogVGhlIHZhcmlhYmxlJ3MgbmFtZS4gKi9cblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0LyoqIFRoZSB2YXJpYWJsZSdzIHZhbHVlLiBUaGlzIGNhbiBiZSBhIG11bHRpLWxpbmUgdGV4dCwgZS5nLiBmb3IgYSBmdW5jdGlvbiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uLiAqL1xuXHRcdHZhbHVlOiBzdHJpbmc7XG5cdFx0LyoqIFRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZSdzIHZhbHVlLiBUeXBpY2FsbHkgc2hvd24gaW4gdGhlIFVJIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgdmFsdWUuICovXG5cdFx0dHlwZT86IHN0cmluZztcblx0XHQvKiogUHJvcGVydGllcyBvZiBhIHZhcmlhYmxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGhvdyB0byByZW5kZXIgdGhlIHZhcmlhYmxlIGluIHRoZSBVSS4gKi9cblx0XHRwcmVzZW50YXRpb25IaW50PzogVmFyaWFibGVQcmVzZW50YXRpb25IaW50O1xuXHRcdC8qKiBPcHRpb25hbCBldmFsdWF0YWJsZSBuYW1lIG9mIHRoaXMgdmFyaWFibGUgd2hpY2ggY2FuIGJlIHBhc3NlZCB0byB0aGUgJ0V2YWx1YXRlUmVxdWVzdCcgdG8gZmV0Y2ggdGhlIHZhcmlhYmxlJ3MgdmFsdWUuICovXG5cdFx0ZXZhbHVhdGVOYW1lPzogc3RyaW5nO1xuXHRcdC8qKiBJZiB2YXJpYWJsZXNSZWZlcmVuY2UgaXMgPiAwLCB0aGUgdmFyaWFibGUgaXMgc3RydWN0dXJlZCBhbmQgaXRzIGNoaWxkcmVuIGNhbiBiZSByZXRyaWV2ZWQgYnkgcGFzc2luZyB2YXJpYWJsZXNSZWZlcmVuY2UgdG8gdGhlIFZhcmlhYmxlc1JlcXVlc3QuICovXG5cdFx0dmFyaWFibGVzUmVmZXJlbmNlOiBudW1iZXI7XG5cdFx0LyoqIFRoZSBudW1iZXIgb2YgbmFtZWQgY2hpbGQgdmFyaWFibGVzLlxuXHRcdFx0VGhlIGNsaWVudCBjYW4gdXNlIHRoaXMgb3B0aW9uYWwgaW5mb3JtYXRpb24gdG8gcHJlc2VudCB0aGUgY2hpbGRyZW4gaW4gYSBwYWdlZCBVSSBhbmQgZmV0Y2ggdGhlbSBpbiBjaHVua3MuXG5cdFx0Ki9cblx0XHRuYW1lZFZhcmlhYmxlcz86IG51bWJlcjtcblx0XHQvKiogVGhlIG51bWJlciBvZiBpbmRleGVkIGNoaWxkIHZhcmlhYmxlcy5cblx0XHRcdFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG9wdGlvbmFsIGluZm9ybWF0aW9uIHRvIHByZXNlbnQgdGhlIGNoaWxkcmVuIGluIGEgcGFnZWQgVUkgYW5kIGZldGNoIHRoZW0gaW4gY2h1bmtzLlxuXHRcdCovXG5cdFx0aW5kZXhlZFZhcmlhYmxlcz86IG51bWJlcjtcblx0fVxuXG5cdC8qKiBPcHRpb25hbCBwcm9wZXJ0aWVzIG9mIGEgdmFyaWFibGUgdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgaG93IHRvIHJlbmRlciB0aGUgdmFyaWFibGUgaW4gdGhlIFVJLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlUHJlc2VudGF0aW9uSGludCB7XG5cdFx0LyoqIFRoZSBraW5kIG9mIHZhcmlhYmxlLiBCZWZvcmUgaW50cm9kdWNpbmcgYWRkaXRpb25hbCB2YWx1ZXMsIHRyeSB0byB1c2UgdGhlIGxpc3RlZCB2YWx1ZXMuXG5cdFx0XHRWYWx1ZXM6IFxuXHRcdFx0J3Byb3BlcnR5JzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyBhIHByb3BlcnR5LlxuXHRcdFx0J21ldGhvZCc6IEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgYSBtZXRob2QuXG5cdFx0XHQnY2xhc3MnOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGEgY2xhc3MuXG5cdFx0XHQnZGF0YSc6IEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgZGF0YS5cblx0XHRcdCdldmVudCc6IEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgYW4gZXZlbnQuXG5cdFx0XHQnYmFzZUNsYXNzJzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyBhIGJhc2UgY2xhc3MuXG5cdFx0XHQnaW5uZXJDbGFzcyc6IEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgYW4gaW5uZXIgY2xhc3MuXG5cdFx0XHQnaW50ZXJmYWNlJzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyBhbiBpbnRlcmZhY2UuXG5cdFx0XHQnbW9zdERlcml2ZWRDbGFzcyc6IEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgdGhlIG1vc3QgZGVyaXZlZCBjbGFzcy5cblx0XHRcdCd2aXJ0dWFsJzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyB2aXJ0dWFsLCB0aGF0IG1lYW5zIGl0IGlzIGEgc3ludGhldGljIG9iamVjdCBpbnRyb2R1Y2VkIGJ5IHRoZSBhZGFwdGVyIGZvciByZW5kZXJpbmcgcHVycG9zZXMsIGUuZy4gYW4gaW5kZXggcmFuZ2UgZm9yIGxhcmdlIGFycmF5cy5cblx0XHRcdGV0Yy5cblx0XHQqL1xuXHRcdGtpbmQ/OiBzdHJpbmc7XG5cdFx0LyoqIFNldCBvZiBhdHRyaWJ1dGVzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIHN0cmluZ3MuIEJlZm9yZSBpbnRyb2R1Y2luZyBhZGRpdGlvbmFsIHZhbHVlcywgdHJ5IHRvIHVzZSB0aGUgbGlzdGVkIHZhbHVlcy5cblx0XHRcdFZhbHVlczogXG5cdFx0XHQnc3RhdGljJzogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyBzdGF0aWMuXG5cdFx0XHQnY29uc3RhbnQnOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGEgY29uc3RhbnQuXG5cdFx0XHQncmVhZE9ubHknOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIHJlYWQgb25seS5cblx0XHRcdCdyYXdTdHJpbmcnOiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIGEgcmF3IHN0cmluZy5cblx0XHRcdCdoYXNPYmplY3RJZCc6IEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgY2FuIGhhdmUgYW4gT2JqZWN0IElEIGNyZWF0ZWQgZm9yIGl0LlxuXHRcdFx0J2NhbkhhdmVPYmplY3RJZCc6IEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaGFzIGFuIE9iamVjdCBJRCBhc3NvY2lhdGVkIHdpdGggaXQuXG5cdFx0XHQnaGFzU2lkZUVmZmVjdHMnOiBJbmRpY2F0ZXMgdGhhdCB0aGUgZXZhbHVhdGlvbiBoYWQgc2lkZSBlZmZlY3RzLlxuXHRcdFx0ZXRjLlxuXHRcdCovXG5cdFx0YXR0cmlidXRlcz86IHN0cmluZ1tdO1xuXHRcdC8qKiBWaXNpYmlsaXR5IG9mIHZhcmlhYmxlLiBCZWZvcmUgaW50cm9kdWNpbmcgYWRkaXRpb25hbCB2YWx1ZXMsIHRyeSB0byB1c2UgdGhlIGxpc3RlZCB2YWx1ZXMuXG5cdFx0XHRWYWx1ZXM6ICdwdWJsaWMnLCAncHJpdmF0ZScsICdwcm90ZWN0ZWQnLCAnaW50ZXJuYWwnLCAnZmluYWwnLCBldGMuXG5cdFx0Ki9cblx0XHR2aXNpYmlsaXR5Pzogc3RyaW5nO1xuXHR9XG5cblx0LyoqIFByb3BlcnRpZXMgb2YgYSBicmVha3BvaW50IHBhc3NlZCB0byB0aGUgc2V0QnJlYWtwb2ludHMgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTb3VyY2VCcmVha3BvaW50IHtcblx0XHQvKiogVGhlIHNvdXJjZSBsaW5lIG9mIHRoZSBicmVha3BvaW50LiAqL1xuXHRcdGxpbmU6IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgc291cmNlIGNvbHVtbiBvZiB0aGUgYnJlYWtwb2ludC4gKi9cblx0XHRjb2x1bW4/OiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGV4cHJlc3Npb24gZm9yIGNvbmRpdGlvbmFsIGJyZWFrcG9pbnRzLiAqL1xuXHRcdGNvbmRpdGlvbj86IHN0cmluZztcblx0XHQvKiogQW4gb3B0aW9uYWwgZXhwcmVzc2lvbiB0aGF0IGNvbnRyb2xzIGhvdyBtYW55IGhpdHMgb2YgdGhlIGJyZWFrcG9pbnQgYXJlIGlnbm9yZWQuIFRoZSBiYWNrZW5kIGlzIGV4cGVjdGVkIHRvIGludGVycHJldCB0aGUgZXhwcmVzc2lvbiBhcyBuZWVkZWQuICovXG5cdFx0aGl0Q29uZGl0aW9uPzogc3RyaW5nO1xuXHR9XG5cblx0LyoqIFByb3BlcnRpZXMgb2YgYSBicmVha3BvaW50IHBhc3NlZCB0byB0aGUgc2V0RnVuY3Rpb25CcmVha3BvaW50cyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQnJlYWtwb2ludCB7XG5cdFx0LyoqIFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbi4gKi9cblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGV4cHJlc3Npb24gZm9yIGNvbmRpdGlvbmFsIGJyZWFrcG9pbnRzLiAqL1xuXHRcdGNvbmRpdGlvbj86IHN0cmluZztcblx0XHQvKiogQW4gb3B0aW9uYWwgZXhwcmVzc2lvbiB0aGF0IGNvbnRyb2xzIGhvdyBtYW55IGhpdHMgb2YgdGhlIGJyZWFrcG9pbnQgYXJlIGlnbm9yZWQuIFRoZSBiYWNrZW5kIGlzIGV4cGVjdGVkIHRvIGludGVycHJldCB0aGUgZXhwcmVzc2lvbiBhcyBuZWVkZWQuICovXG5cdFx0aGl0Q29uZGl0aW9uPzogc3RyaW5nO1xuXHR9XG5cblx0LyoqIEluZm9ybWF0aW9uIGFib3V0IGEgQnJlYWtwb2ludCBjcmVhdGVkIGluIHNldEJyZWFrcG9pbnRzIG9yIHNldEZ1bmN0aW9uQnJlYWtwb2ludHMuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQnJlYWtwb2ludCB7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgYnJlYWtwb2ludC4gKi9cblx0XHRpZD86IG51bWJlcjtcblx0XHQvKiogSWYgdHJ1ZSBicmVha3BvaW50IGNvdWxkIGJlIHNldCAoYnV0IG5vdCBuZWNlc3NhcmlseSBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbikuICovXG5cdFx0dmVyaWZpZWQ6IGJvb2xlYW47XG5cdFx0LyoqIEFuIG9wdGlvbmFsIG1lc3NhZ2UgYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBicmVha3BvaW50LiBUaGlzIGlzIHNob3duIHRvIHRoZSB1c2VyIGFuZCBjYW4gYmUgdXNlZCB0byBleHBsYWluIHdoeSBhIGJyZWFrcG9pbnQgY291bGQgbm90IGJlIHZlcmlmaWVkLiAqL1xuXHRcdG1lc3NhZ2U/OiBzdHJpbmc7XG5cdFx0LyoqIFRoZSBzb3VyY2Ugd2hlcmUgdGhlIGJyZWFrcG9pbnQgaXMgbG9jYXRlZC4gKi9cblx0XHRzb3VyY2U/OiBTb3VyY2U7XG5cdFx0LyoqIFRoZSBzdGFydCBsaW5lIG9mIHRoZSBhY3R1YWwgcmFuZ2UgY292ZXJlZCBieSB0aGUgYnJlYWtwb2ludC4gKi9cblx0XHRsaW5lPzogbnVtYmVyO1xuXHRcdC8qKiBBbiBvcHRpb25hbCBzdGFydCBjb2x1bW4gb2YgdGhlIGFjdHVhbCByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBicmVha3BvaW50LiAqL1xuXHRcdGNvbHVtbj86IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgZW5kIGxpbmUgb2YgdGhlIGFjdHVhbCByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBicmVha3BvaW50LiAqL1xuXHRcdGVuZExpbmU/OiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGVuZCBjb2x1bW4gb2YgdGhlIGFjdHVhbCByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBicmVha3BvaW50LiBJZiBubyBlbmQgbGluZSBpcyBnaXZlbiwgdGhlbiB0aGUgZW5kIGNvbHVtbiBpcyBhc3N1bWVkIHRvIGJlIGluIHRoZSBzdGFydCBsaW5lLiAqL1xuXHRcdGVuZENvbHVtbj86IG51bWJlcjtcblx0fVxuXG5cdC8qKiBBIFN0ZXBJblRhcmdldCBjYW4gYmUgdXNlZCBpbiB0aGUgJ3N0ZXBJbicgcmVxdWVzdCBhbmQgZGV0ZXJtaW5lcyBpbnRvIHdoaWNoIHNpbmdsZSB0YXJnZXQgdGhlIHN0ZXBJbiByZXF1ZXN0IHNob3VsZCBzdGVwLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBJblRhcmdldCB7XG5cdFx0LyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIHN0ZXBJbiB0YXJnZXQuICovXG5cdFx0aWQ6IG51bWJlcjtcblx0XHQvKiogVGhlIG5hbWUgb2YgdGhlIHN0ZXBJbiB0YXJnZXQgKHNob3duIGluIHRoZSBVSSkuICovXG5cdFx0bGFiZWw6IHN0cmluZztcblx0fVxuXG5cdC8qKiBBIEdvdG9UYXJnZXQgZGVzY3JpYmVzIGEgY29kZSBsb2NhdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgdGFyZ2V0IGluIHRoZSAnZ290bycgcmVxdWVzdC5cblx0XHRUaGUgcG9zc2libGUgZ290byB0YXJnZXRzIGNhbiBiZSBkZXRlcm1pbmVkIHZpYSB0aGUgJ2dvdG9UYXJnZXRzJyByZXF1ZXN0LlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEdvdG9UYXJnZXQge1xuXHRcdC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgYSBnb3RvIHRhcmdldC4gVGhpcyBpcyB1c2VkIGluIHRoZSBnb3RvIHJlcXVlc3QuICovXG5cdFx0aWQ6IG51bWJlcjtcblx0XHQvKiogVGhlIG5hbWUgb2YgdGhlIGdvdG8gdGFyZ2V0IChzaG93biBpbiB0aGUgVUkpLiAqL1xuXHRcdGxhYmVsOiBzdHJpbmc7XG5cdFx0LyoqIFRoZSBsaW5lIG9mIHRoZSBnb3RvIHRhcmdldC4gKi9cblx0XHRsaW5lOiBudW1iZXI7XG5cdFx0LyoqIEFuIG9wdGlvbmFsIGNvbHVtbiBvZiB0aGUgZ290byB0YXJnZXQuICovXG5cdFx0Y29sdW1uPzogbnVtYmVyO1xuXHRcdC8qKiBBbiBvcHRpb25hbCBlbmQgbGluZSBvZiB0aGUgcmFuZ2UgY292ZXJlZCBieSB0aGUgZ290byB0YXJnZXQuICovXG5cdFx0ZW5kTGluZT86IG51bWJlcjtcblx0XHQvKiogQW4gb3B0aW9uYWwgZW5kIGNvbHVtbiBvZiB0aGUgcmFuZ2UgY292ZXJlZCBieSB0aGUgZ290byB0YXJnZXQuICovXG5cdFx0ZW5kQ29sdW1uPzogbnVtYmVyO1xuXHR9XG5cblx0LyoqIENvbXBsZXRpb25JdGVtcyBhcmUgdGhlIHN1Z2dlc3Rpb25zIHJldHVybmVkIGZyb20gdGhlIENvbXBsZXRpb25zUmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBDb21wbGV0aW9uSXRlbSB7XG5cdFx0LyoqIFRoZSBsYWJlbCBvZiB0aGlzIGNvbXBsZXRpb24gaXRlbS4gQnkgZGVmYXVsdCB0aGlzIGlzIGFsc28gdGhlIHRleHQgdGhhdCBpcyBpbnNlcnRlZCB3aGVuIHNlbGVjdGluZyB0aGlzIGNvbXBsZXRpb24uICovXG5cdFx0bGFiZWw6IHN0cmluZztcblx0XHQvKiogSWYgdGV4dCBpcyBub3QgZmFsc3kgdGhlbiBpdCBpcyBpbnNlcnRlZCBpbnN0ZWFkIG9mIHRoZSBsYWJlbC4gKi9cblx0XHR0ZXh0Pzogc3RyaW5nO1xuXHRcdC8qKiBUaGUgaXRlbSdzIHR5cGUuIFR5cGljYWxseSB0aGUgY2xpZW50IHVzZXMgdGhpcyBpbmZvcm1hdGlvbiB0byByZW5kZXIgdGhlIGl0ZW0gaW4gdGhlIFVJIHdpdGggYW4gaWNvbi4gKi9cblx0XHR0eXBlPzogQ29tcGxldGlvbkl0ZW1UeXBlO1xuXHRcdC8qKiBUaGlzIHZhbHVlIGRldGVybWluZXMgdGhlIGxvY2F0aW9uIChpbiB0aGUgQ29tcGxldGlvbnNSZXF1ZXN0J3MgJ3RleHQnIGF0dHJpYnV0ZSkgd2hlcmUgdGhlIGNvbXBsZXRpb24gdGV4dCBpcyBhZGRlZC5cblx0XHRcdElmIG1pc3NpbmcgdGhlIHRleHQgaXMgYWRkZWQgYXQgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSB0aGUgQ29tcGxldGlvbnNSZXF1ZXN0J3MgJ2NvbHVtbicgYXR0cmlidXRlLlxuXHRcdCovXG5cdFx0c3RhcnQ/OiBudW1iZXI7XG5cdFx0LyoqIFRoaXMgdmFsdWUgZGV0ZXJtaW5lcyBob3cgbWFueSBjaGFyYWN0ZXJzIGFyZSBvdmVyd3JpdHRlbiBieSB0aGUgY29tcGxldGlvbiB0ZXh0LlxuXHRcdFx0SWYgbWlzc2luZyB0aGUgdmFsdWUgMCBpcyBhc3N1bWVkIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGNvbXBsZXRpb24gdGV4dCBiZWluZyBpbnNlcnRlZC5cblx0XHQqL1xuXHRcdGxlbmd0aD86IG51bWJlcjtcblx0fVxuXG5cdC8qKiBTb21lIHByZWRlZmluZWQgdHlwZXMgZm9yIHRoZSBDb21wbGV0aW9uSXRlbS4gUGxlYXNlIG5vdGUgdGhhdCBub3QgYWxsIGNsaWVudHMgaGF2ZSBzcGVjaWZpYyBpY29ucyBmb3IgYWxsIG9mIHRoZW0uICovXG5cdGV4cG9ydCB0eXBlIENvbXBsZXRpb25JdGVtVHlwZSA9ICdtZXRob2QnIHwgJ2Z1bmN0aW9uJyB8ICdjb25zdHJ1Y3RvcicgfCAnZmllbGQnIHwgJ3ZhcmlhYmxlJyB8ICdjbGFzcycgfCAnaW50ZXJmYWNlJyB8ICdtb2R1bGUnIHwgJ3Byb3BlcnR5JyB8ICd1bml0JyB8ICd2YWx1ZScgfCAnZW51bScgfCAna2V5d29yZCcgfCAnc25pcHBldCcgfCAndGV4dCcgfCAnY29sb3InIHwgJ2ZpbGUnIHwgJ3JlZmVyZW5jZScgfCAnY3VzdG9tY29sb3InO1xuXG5cdC8qKiBOYW1lcyBvZiBjaGVja3N1bSBhbGdvcml0aG1zIHRoYXQgbWF5IGJlIHN1cHBvcnRlZCBieSBhIGRlYnVnIGFkYXB0ZXIuICovXG5cdGV4cG9ydCB0eXBlIENoZWNrc3VtQWxnb3JpdGhtID0gJ01ENScgfCAnU0hBMScgfCAnU0hBMjU2JyB8ICd0aW1lc3RhbXAnO1xuXG5cdC8qKiBUaGUgY2hlY2tzdW0gb2YgYW4gaXRlbSBjYWxjdWxhdGVkIGJ5IHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENoZWNrc3VtIHtcblx0XHQvKiogVGhlIGFsZ29yaXRobSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGlzIGNoZWNrc3VtLiAqL1xuXHRcdGFsZ29yaXRobTogQ2hlY2tzdW1BbGdvcml0aG07XG5cdFx0LyoqIFZhbHVlIG9mIHRoZSBjaGVja3N1bS4gKi9cblx0XHRjaGVja3N1bTogc3RyaW5nO1xuXHR9XG5cblx0LyoqIFByb3ZpZGVzIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24gZm9yIGEgdmFsdWUuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgVmFsdWVGb3JtYXQge1xuXHRcdC8qKiBEaXNwbGF5IHRoZSB2YWx1ZSBpbiBoZXguICovXG5cdFx0aGV4PzogYm9vbGVhbjtcblx0fVxuXG5cdC8qKiBQcm92aWRlcyBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIGZvciBhIHN0YWNrIGZyYW1lLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0YWNrRnJhbWVGb3JtYXQgZXh0ZW5kcyBWYWx1ZUZvcm1hdCB7XG5cdFx0LyoqIERpc3BsYXlzIHBhcmFtZXRlcnMgZm9yIHRoZSBzdGFjayBmcmFtZS4gKi9cblx0XHRwYXJhbWV0ZXJzPzogYm9vbGVhbjtcblx0XHQvKiogRGlzcGxheXMgdGhlIHR5cGVzIG9mIHBhcmFtZXRlcnMgZm9yIHRoZSBzdGFjayBmcmFtZS4gKi9cblx0XHRwYXJhbWV0ZXJUeXBlcz86IGJvb2xlYW47XG5cdFx0LyoqIERpc3BsYXlzIHRoZSBuYW1lcyBvZiBwYXJhbWV0ZXJzIGZvciB0aGUgc3RhY2sgZnJhbWUuICovXG5cdFx0cGFyYW1ldGVyTmFtZXM/OiBib29sZWFuO1xuXHRcdC8qKiBEaXNwbGF5cyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgZm9yIHRoZSBzdGFjayBmcmFtZS4gKi9cblx0XHRwYXJhbWV0ZXJWYWx1ZXM/OiBib29sZWFuO1xuXHRcdC8qKiBEaXNwbGF5cyB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHN0YWNrIGZyYW1lLiAqL1xuXHRcdGxpbmU/OiBib29sZWFuO1xuXHRcdC8qKiBEaXNwbGF5cyB0aGUgbW9kdWxlIG9mIHRoZSBzdGFjayBmcmFtZS4gKi9cblx0XHRtb2R1bGU/OiBib29sZWFuO1xuXHRcdC8qKiBJbmNsdWRlcyBhbGwgc3RhY2sgZnJhbWVzLCBpbmNsdWRpbmcgdGhvc2UgdGhlIGRlYnVnIGFkYXB0ZXIgbWlnaHQgb3RoZXJ3aXNlIGhpZGUuICovXG5cdFx0aW5jbHVkZUFsbD86IGJvb2xlYW47XG5cdH1cblxuXHQvKiogQW4gRXhjZXB0aW9uT3B0aW9ucyBhc3NpZ25zIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBhIHNldCBvZiBleGNlcHRpb25zLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEV4Y2VwdGlvbk9wdGlvbnMge1xuXHRcdC8qKiBBIHBhdGggdGhhdCBzZWxlY3RzIGEgc2luZ2xlIG9yIG11bHRpcGxlIGV4Y2VwdGlvbnMgaW4gYSB0cmVlLiBJZiAncGF0aCcgaXMgbWlzc2luZywgdGhlIHdob2xlIHRyZWUgaXMgc2VsZWN0ZWQuIEJ5IGNvbnZlbnRpb24gdGhlIGZpcnN0IHNlZ21lbnQgb2YgdGhlIHBhdGggaXMgYSBjYXRlZ29yeSB0aGF0IGlzIHVzZWQgdG8gZ3JvdXAgZXhjZXB0aW9ucyBpbiB0aGUgVUkuICovXG5cdFx0cGF0aD86IEV4Y2VwdGlvblBhdGhTZWdtZW50W107XG5cdFx0LyoqIENvbmRpdGlvbiB3aGVuIGEgdGhyb3duIGV4Y2VwdGlvbiBzaG91bGQgcmVzdWx0IGluIGEgYnJlYWsuICovXG5cdFx0YnJlYWtNb2RlOiBFeGNlcHRpb25CcmVha01vZGU7XG5cdH1cblxuXHQvKiogVGhpcyBlbnVtZXJhdGlvbiBkZWZpbmVzIGFsbCBwb3NzaWJsZSBjb25kaXRpb25zIHdoZW4gYSB0aHJvd24gZXhjZXB0aW9uIHNob3VsZCByZXN1bHQgaW4gYSBicmVhay5cblx0XHRuZXZlcjogbmV2ZXIgYnJlYWtzLFxuXHRcdGFsd2F5czogYWx3YXlzIGJyZWFrcyxcblx0XHR1bmhhbmRsZWQ6IGJyZWFrcyB3aGVuIGV4Y3BldGlvbiB1bmhhbmRsZWQsXG5cdFx0dXNlclVuaGFuZGxlZDogYnJlYWtzIGlmIHRoZSBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYnkgdXNlciBjb2RlLlxuXHQqL1xuXHRleHBvcnQgdHlwZSBFeGNlcHRpb25CcmVha01vZGUgPSAnbmV2ZXInIHwgJ2Fsd2F5cycgfCAndW5oYW5kbGVkJyB8ICd1c2VyVW5oYW5kbGVkJztcblxuXHQvKiogQW4gRXhjZXB0aW9uUGF0aFNlZ21lbnQgcmVwcmVzZW50cyBhIHNlZ21lbnQgaW4gYSBwYXRoIHRoYXQgaXMgdXNlZCB0byBtYXRjaCBsZWFmcyBvciBub2RlcyBpbiBhIHRyZWUgb2YgZXhjZXB0aW9ucy4gSWYgYSBzZWdtZW50IGNvbnNpc3RzIG9mIG1vcmUgdGhhbiBvbmUgbmFtZSwgaXQgbWF0Y2hlcyB0aGUgbmFtZXMgcHJvdmlkZWQgaWYgJ25lZ2F0ZScgaXMgZmFsc2Ugb3IgbWlzc2luZyBvciBpdCBtYXRjaGVzIGFueXRoaW5nIGV4Y2VwdCB0aGUgbmFtZXMgcHJvdmlkZWQgaWYgJ25lZ2F0ZScgaXMgdHJ1ZS4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBFeGNlcHRpb25QYXRoU2VnbWVudCB7XG5cdFx0LyoqIElmIGZhbHNlIG9yIG1pc3NpbmcgdGhpcyBzZWdtZW50IG1hdGNoZXMgdGhlIG5hbWVzIHByb3ZpZGVkLCBvdGhlcndpc2UgaXQgbWF0Y2hlcyBhbnl0aGluZyBleGNlcHQgdGhlIG5hbWVzIHByb3ZpZGVkLiAqL1xuXHRcdG5lZ2F0ZT86IGJvb2xlYW47XG5cdFx0LyoqIERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgJ25lZ2F0ZScgdGhlIG5hbWVzIHRoYXQgc2hvdWxkIG1hdGNoIG9yIG5vdCBtYXRjaC4gKi9cblx0XHRuYW1lczogc3RyaW5nW107XG5cdH1cblxuXHQvKiogRGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYW4gZXhjZXB0aW9uIHRoYXQgaGFzIG9jY3VycmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEV4Y2VwdGlvbkRldGFpbHMge1xuXHRcdC8qKiBNZXNzYWdlIGNvbnRhaW5lZCBpbiB0aGUgZXhjZXB0aW9uLiAqL1xuXHRcdG1lc3NhZ2U/OiBzdHJpbmc7XG5cdFx0LyoqIFNob3J0IHR5cGUgbmFtZSBvZiB0aGUgZXhjZXB0aW9uIG9iamVjdC4gKi9cblx0XHR0eXBlTmFtZT86IHN0cmluZztcblx0XHQvKiogRnVsbHktcXVhbGlmaWVkIHR5cGUgbmFtZSBvZiB0aGUgZXhjZXB0aW9uIG9iamVjdC4gKi9cblx0XHRmdWxsVHlwZU5hbWU/OiBzdHJpbmc7XG5cdFx0LyoqIE9wdGlvbmFsIGV4cHJlc3Npb24gdGhhdCBjYW4gYmUgZXZhbHVhdGVkIGluIHRoZSBjdXJyZW50IHNjb3BlIHRvIG9idGFpbiB0aGUgZXhjZXB0aW9uIG9iamVjdC4gKi9cblx0XHRldmFsdWF0ZU5hbWU/OiBzdHJpbmc7XG5cdFx0LyoqIFN0YWNrIHRyYWNlIGF0IHRoZSB0aW1lIHRoZSBleGNlcHRpb24gd2FzIHRocm93bi4gKi9cblx0XHRzdGFja1RyYWNlPzogc3RyaW5nO1xuXHRcdC8qKiBEZXRhaWxzIG9mIHRoZSBleGNlcHRpb24gY29udGFpbmVkIGJ5IHRoaXMgZXhjZXB0aW9uLCBpZiBhbnkuICovXG5cdFx0aW5uZXJFeGNlcHRpb24/OiBFeGNlcHRpb25EZXRhaWxzW107XG5cdH1cbn1cblxuIl19
|