@discordeno/rest 22.0.1-next.2a7cd9b → 22.0.1-next.322331e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +4 -4
package/dist/types.d.ts
CHANGED
|
@@ -1887,7 +1887,7 @@ export interface RestManager {
|
|
|
1887
1887
|
*
|
|
1888
1888
|
* @param channelId - The ID of the channel to get the archived threads for.
|
|
1889
1889
|
* @param options - The parameters for the fetching of threads.
|
|
1890
|
-
* @returns An instance of {@link
|
|
1890
|
+
* @returns An instance of {@link DiscordListArchivedThreads}.
|
|
1891
1891
|
*
|
|
1892
1892
|
* @remarks
|
|
1893
1893
|
* Requires the `READ_MESSAGE_HISTORY` permission.
|
|
@@ -1917,7 +1917,7 @@ export interface RestManager {
|
|
|
1917
1917
|
*
|
|
1918
1918
|
* @param channelId - The ID of the channel to get the archived threads for.
|
|
1919
1919
|
* @param options - The parameters for the fetching of threads.
|
|
1920
|
-
* @returns An instance of {@link
|
|
1920
|
+
* @returns An instance of {@link DiscordListArchivedThreads}.
|
|
1921
1921
|
*
|
|
1922
1922
|
* @remarks
|
|
1923
1923
|
* Requires the `READ_MESSAGE_HISTORY` permission.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { };
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEFkZERtUmVjaXBpZW50T3B0aW9ucyxcbiAgQWRkR3VpbGRNZW1iZXJPcHRpb25zLFxuICBBZGRMb2JieU1lbWJlcixcbiAgQXRMZWFzdE9uZSxcbiAgQmVnaW5HdWlsZFBydW5lLFxuICBCaWdTdHJpbmcsXG4gIENhbWVsaXplLFxuICBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIENyZWF0ZUFwcGxpY2F0aW9uRW1vamksXG4gIENyZWF0ZUF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnMsXG4gIENyZWF0ZUNoYW5uZWxJbnZpdGUsXG4gIENyZWF0ZUZvcnVtUG9zdFdpdGhNZXNzYWdlLFxuICBDcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBDcmVhdGVHcm91cERtT3B0aW9ucyxcbiAgQ3JlYXRlR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICBDcmVhdGVHdWlsZEJhbixcbiAgQ3JlYXRlR3VpbGRCdWxrQmFuLFxuICBDcmVhdGVHdWlsZENoYW5uZWwsXG4gIENyZWF0ZUd1aWxkRW1vamksXG4gIENyZWF0ZUd1aWxkUm9sZSxcbiAgQ3JlYXRlR3VpbGRTb3VuZGJvYXJkU291bmQsXG4gIENyZWF0ZUd1aWxkU3RpY2tlck9wdGlvbnMsXG4gIENyZWF0ZUxvYmJ5LFxuICBDcmVhdGVNZXNzYWdlT3B0aW9ucyxcbiAgQ3JlYXRlU2NoZWR1bGVkRXZlbnQsXG4gIENyZWF0ZVN0YWdlSW5zdGFuY2UsXG4gIENyZWF0ZVRlbXBsYXRlLFxuICBDcmVhdGVUZXN0RW50aXRsZW1lbnQsXG4gIENyZWF0ZVdlYmhvb2ssXG4gIERlbGV0ZVdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgRGlzY29yZEFjY2Vzc1Rva2VuUmVzcG9uc2UsXG4gIERpc2NvcmRBY3Rpdml0eUluc3RhbmNlLFxuICBEaXNjb3JkQXBwbGljYXRpb24sXG4gIERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQsXG4gIERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucyxcbiAgRGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24sXG4gIERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uTWV0YWRhdGEsXG4gIERpc2NvcmRBdWRpdExvZyxcbiAgRGlzY29yZEF1dG9Nb2RlcmF0aW9uUnVsZSxcbiAgRGlzY29yZEJhbixcbiAgRGlzY29yZEJ1bGtCYW4sXG4gIERpc2NvcmRDaGFubmVsLFxuICBEaXNjb3JkQ29ubmVjdGlvbixcbiAgRGlzY29yZEN1cnJlbnRBdXRob3JpemF0aW9uLFxuICBEaXNjb3JkRW1vamksXG4gIERpc2NvcmRFbnRpdGxlbWVudCxcbiAgRGlzY29yZEZvbGxvd2VkQ2hhbm5lbCxcbiAgRGlzY29yZEdldEFuc3dlclZvdGVzUmVzcG9uc2UsXG4gIERpc2NvcmRHZXRDaGFubmVsUGlucyxcbiAgRGlzY29yZEdldEdhdGV3YXlCb3QsXG4gIERpc2NvcmRHdWlsZCxcbiAgRGlzY29yZEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnMsXG4gIERpc2NvcmRHdWlsZE9uYm9hcmRpbmcsXG4gIERpc2NvcmRHdWlsZFByZXZpZXcsXG4gIERpc2NvcmRHdWlsZFdpZGdldCxcbiAgRGlzY29yZEd1aWxkV2lkZ2V0U2V0dGluZ3MsXG4gIERpc2NvcmRJbmNpZGVudHNEYXRhLFxuICBEaXNjb3JkSW50ZWdyYXRpb24sXG4gIERpc2NvcmRJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIERpc2NvcmRJbnZpdGUsXG4gIERpc2NvcmRJbnZpdGVNZXRhZGF0YSxcbiAgRGlzY29yZExpc3RBY3RpdmVUaHJlYWRzLFxuICBEaXNjb3JkTGlzdEFyY2hpdmVkVGhyZWFkcyxcbiAgRGlzY29yZExvYmJ5LFxuICBEaXNjb3JkTG9iYnlNZW1iZXIsXG4gIERpc2NvcmRNZW1iZXIsXG4gIERpc2NvcmRNZW1iZXJXaXRoVXNlcixcbiAgRGlzY29yZE1lc3NhZ2UsXG4gIERpc2NvcmRQcnVuZWRDb3VudCxcbiAgRGlzY29yZFJvbGUsXG4gIERpc2NvcmRTY2hlZHVsZWRFdmVudCxcbiAgRGlzY29yZFNrdSxcbiAgRGlzY29yZFNvdW5kYm9hcmRTb3VuZCxcbiAgRGlzY29yZFN0YWdlSW5zdGFuY2UsXG4gIERpc2NvcmRTdGlja2VyLFxuICBEaXNjb3JkU3RpY2tlclBhY2ssXG4gIERpc2NvcmRTdWJzY3JpcHRpb24sXG4gIERpc2NvcmRUZW1wbGF0ZSxcbiAgRGlzY29yZFRocmVhZE1lbWJlcixcbiAgRGlzY29yZFRva2VuRXhjaGFuZ2UsXG4gIERpc2NvcmRUb2tlblJldm9jYXRpb24sXG4gIERpc2NvcmRVc2VyLFxuICBEaXNjb3JkVmFuaXR5VXJsLFxuICBEaXNjb3JkVm9pY2VSZWdpb24sXG4gIERpc2NvcmRWb2ljZVN0YXRlLFxuICBEaXNjb3JkV2ViaG9vayxcbiAgRGlzY29yZFdlbGNvbWVTY3JlZW4sXG4gIEVkaXRBcHBsaWNhdGlvbixcbiAgRWRpdEF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnMsXG4gIEVkaXRCb3RNZW1iZXJPcHRpb25zLFxuICBFZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXNPcHRpb25zLFxuICBFZGl0R3VpbGRPbmJvYXJkaW5nLFxuICBFZGl0R3VpbGRSb2xlLFxuICBFZGl0R3VpbGRTdGlja2VyT3B0aW9ucyxcbiAgRWRpdE1lc3NhZ2UsXG4gIEVkaXRPd25Wb2ljZVN0YXRlLFxuICBFZGl0U2NoZWR1bGVkRXZlbnQsXG4gIEVkaXRVc2VyVm9pY2VTdGF0ZSxcbiAgRWRpdFdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgRXhlY3V0ZVdlYmhvb2ssXG4gIEZpbGVDb250ZW50LFxuICBHZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uT3B0aW9ucyxcbiAgR2V0QmFucyxcbiAgR2V0Q2hhbm5lbFBpbnNPcHRpb25zLFxuICBHZXRFbnRpdGxlbWVudHMsXG4gIEdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHNPcHRpb25zLFxuICBHZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHNPcHRpb25zLFxuICBHZXRHdWlsZEF1ZGl0TG9nLFxuICBHZXRHdWlsZFBydW5lQ291bnRRdWVyeSxcbiAgR2V0SW52aXRlLFxuICBHZXRNZXNzYWdlc09wdGlvbnMsXG4gIEdldFBvbGxBbnN3ZXJWb3RlcyxcbiAgR2V0UmVhY3Rpb25zLFxuICBHZXRTY2hlZHVsZWRFdmVudHMsXG4gIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMsXG4gIEdldFRocmVhZE1lbWJlcixcbiAgR2V0VXNlckd1aWxkcyxcbiAgR2V0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgSW50ZXJhY3Rpb25DYWxsYmFja09wdGlvbnMsXG4gIEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIExpbmtDaGFubmVsVG9Mb2JieSxcbiAgTGlzdEFyY2hpdmVkVGhyZWFkcyxcbiAgTGlzdEd1aWxkTWVtYmVycyxcbiAgTGlzdFNrdVN1YnNjcmlwdGlvbnNPcHRpb25zLFxuICBMaXN0VGhyZWFkTWVtYmVycyxcbiAgTW9kaWZ5QXBwbGljYXRpb25FbW9qaSxcbiAgTW9kaWZ5Q2hhbm5lbCxcbiAgTW9kaWZ5R3VpbGQsXG4gIE1vZGlmeUd1aWxkQ2hhbm5lbFBvc2l0aW9ucyxcbiAgTW9kaWZ5R3VpbGRFbW9qaSxcbiAgTW9kaWZ5R3VpbGRJbmNpZGVudEFjdGlvbnMsXG4gIE1vZGlmeUd1aWxkTWVtYmVyLFxuICBNb2RpZnlHdWlsZFNvdW5kYm9hcmRTb3VuZCxcbiAgTW9kaWZ5R3VpbGRUZW1wbGF0ZSxcbiAgTW9kaWZ5R3VpbGRXZWxjb21lU2NyZWVuLFxuICBNb2RpZnlMb2JieSxcbiAgTW9kaWZ5Um9sZVBvc2l0aW9ucyxcbiAgTW9kaWZ5V2ViaG9vayxcbiAgU2VhcmNoTWVtYmVycyxcbiAgU2VuZFNvdW5kYm9hcmRTb3VuZCxcbiAgU3RhcnRUaHJlYWRXaXRoTWVzc2FnZSxcbiAgU3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZSxcbiAgVXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgVXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxufSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB0eXBlIHsgbG9nZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEludmFsaWRSZXF1ZXN0QnVja2V0IH0gZnJvbSAnLi9pbnZhbGlkQnVja2V0LmpzJ1xuaW1wb3J0IHR5cGUgeyBRdWV1ZSB9IGZyb20gJy4vcXVldWUuanMnXG5pbXBvcnQgdHlwZSB7IFJlc3RSb3V0ZXMgfSBmcm9tICcuL3R5cGluZ3Mvcm91dGVzLmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJlc3RNYW5hZ2VyT3B0aW9ucyB7XG4gIC8qKiBUaGUgYm90IHRva2VuIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBtYWtlIHJlcXVlc3RzLiAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKlxuICAgKiBGb3Igb2xkIGJvdHMgdGhhdCBoYXZlIGEgZGlmZmVyZW50IGJvdCBpZCBhbmQgYXBwbGljYXRpb24gaWQuXG4gICAqIEBkZWZhdWx0IGJvdCBpZCBmcm9tIHRva2VuXG4gICAqL1xuICBhcHBsaWNhdGlvbklkPzogQmlnU3RyaW5nXG4gIC8qKiBDb25maWd1cmF0aW9uIHdoZW4gdXNpbmcgYSBwcm94eS4gKi9cbiAgcHJveHk/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgdXJsIHRvIGNvbm5lY3QgdG8uIElmIHlvdSBjcmVhdGUgYSBwcm94eSByZXN0LCB0aGF0IHVybCB3b3VsZCBnbyBoZXJlLlxuICAgICAqIElUIFNIT1VMRCBOT1QgRU5EIFdJVEggQSAvXG4gICAgICogQGRlZmF1bHQgaHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGlcbiAgICAgKi9cbiAgICBiYXNlVXJsOiBzdHJpbmdcbiAgICAvKiogVGhlIGF1dGhvcml6YXRpb24gaGVhZGVyIHZhbHVlIHRvIGF0dGFjaCB3aGVuIHNlbmRpbmcgcmVxdWVzdHMgdG8gdGhlIHByb3h5LiAqL1xuICAgIGF1dGhvcml6YXRpb24/OiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBUaGUgYXV0aG9yaXphdGlvbiBoZWFkZXIgbmFtZSB0byB1c2Ugd2hlbiBzZW5kaW5nIHJlcXVlc3RzIHRvIHRoZSBwcm94eVxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBJZiB0aGUgaGVhZGVyIG5hbWUgaXMgc2V0IHRvIGBhdXRob3JpemF0aW9uYCwgaXQgd2lsbCBvdmVycmlkZSBhbnkgYXV0aG9yaXphdGlvbiB0aGF0IGlzIGdpdmVuIGV2ZW4gaWZcbiAgICAgKiB0aGUgcmVxdWVzdHMgdXNlcyBPQXV0aDIgQmVhcmVyIHRva2VucyAvIEJhc2ljIHRva2Vuc1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJhdXRob3JpemF0aW9uXCIgLy8gRm9yIGNvbXBhdGliaWxpdHkgcHVycG9zZXNcbiAgICAgKi9cbiAgICBhdXRob3JpemF0aW9uSGVhZGVyPzogc3RyaW5nXG4gICAgLyoqXG4gICAgICogVGhlIGVuZHBvaW50IHRvIHVzZSBpbiB0aGUgcmVzdCBwcm94eSB0byB1cGRhdGUgdGhlIGJlYXJlciB0b2tlbnNcbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogU2hvdWxkIG5vdCBpbmNsdWRlIGEgYC9gIGluIHRoZSBzdGFydFxuICAgICAqXG4gICAgICogVGhpcyB2YWx1ZSBpcyBhY3R1YWxseSByZXF1aXJlZCBpZiB5b3Ugd2FudCB0byB1c2UgYHVwZGF0ZVRva2VuUXVldWVzYFxuICAgICAqL1xuICAgIHVwZGF0ZUJlYXJlclRva2VuRW5kcG9pbnQ/OiBzdHJpbmdcbiAgfVxuICAvKipcbiAgICogVGhlIGFwaSB2ZXJzaW9ucyB3aGljaCBjYW4gYmUgdXNlZCB0byBtYWtlIHJlcXVlc3RzLlxuICAgKiBAZGVmYXVsdCAxMFxuICAgKi9cbiAgdmVyc2lvbj86IEFwaVZlcnNpb25zXG4gIC8qKlxuICAgKiBUaGUgbG9nZ2VyIHRoYXQgdGhlIHJlc3QgbWFuYWdlciB3aWxsIHVzZVxuICAgKiBAZGVmYXVsdCBsb2dnZXIgLy8gVGhlIGxvZ2dlciBleHBvcnRlZCBieSBgQGRpc2NvcmRlbm8vdXRpbHNgXG4gICAqL1xuICBsb2dnZXI/OiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbiAgLyoqIEV2ZW50cyBmb3IgdGhlIHJlc3QgbWFuYWdlciAqL1xuICBldmVudHM/OiBQYXJ0aWFsPFJlc3RNYW5hZ2VyRXZlbnRzPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RNYW5hZ2VyIHtcbiAgLyoqIFRoZSBib3QgdG9rZW4gd2hpY2ggd2lsbCBiZSB1c2VkIHRvIG1ha2UgcmVxdWVzdHMuICovXG4gIHRva2VuOiBzdHJpbmdcbiAgLyoqIFRoZSBhcHBsaWNhdGlvbiBpZC4gTm9ybWFsbHkgdGhpcyBpcyBub3QgcmVxdWlyZWQgZm9yIHJlY2VudCBib3RzIGJ1dCBvbGQgYm90J3MgYXBwbGljYXRpb24gaWQgaXMgc29tZXRpbWVzIGRpZmZlcmVudCBmcm9tIHRoZSBib3QgaWQgc28gaXQgaXMgcmVxdWlyZWQgZm9yIHRob3NlIGJvdHMuICovXG4gIGFwcGxpY2F0aW9uSWQ6IGJpZ2ludFxuICAvKiogVGhlIGFwaSB2ZXJzaW9uIHRvIHVzZSB3aGVuIG1ha2luZyByZXF1ZXN0cy4gT25seSB0aGUgbGF0ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uIHdpbGwgYmUgdGVzdGVkLiAqL1xuICB2ZXJzaW9uOiBBcGlWZXJzaW9uc1xuICAvKipcbiAgICogVGhlIGJhc2UgdXJsIHRvIGNvbm5lY3QgdG8uIElmIHlvdSBjcmVhdGUgYSBwcm94eSByZXN0LCB0aGF0IHVybCB3b3VsZCBnbyBoZXJlLlxuICAgKiBJVCBTSE9VTEQgTk9UIEVORCBXSVRIIEEgL1xuICAgKiBAZGVmYXVsdCBodHRwczovL2Rpc2NvcmQuY29tL2FwaVxuICAgKi9cbiAgYmFzZVVybDogc3RyaW5nXG4gIC8qKlxuICAgKiBgdHJ1ZWAgaWYgdGhlIGBiYXNlVXJsYCBkb2VzIG5vdCBzdGFydCB3aXRoIGBodHRwczovL2Rpc2NvcmQuY29tL2FwaWAuXG4gICAqXG4gICAqIE1vc3RseSB1c2VkIG9ubHkgZm9yIGludGVybiBmdW5jdGlvbnMuXG4gICAqL1xuICBpc1Byb3hpZWQ6IGJvb2xlYW5cbiAgLyoqIFRoZSBhdXRob3JpemF0aW9uIGhlYWRlciB2YWx1ZSB0byBhdHRhY2ggd2hlbiBzZW5kaW5nIHJlcXVlc3RzIHRvIHRoZSBwcm94eS4gKi9cbiAgYXV0aG9yaXphdGlvbj86IHN0cmluZ1xuICAvKiogVGhlIGF1dGhvcml6YXRpb24gaGVhZGVyIG5hbWUgdG8gYXR0YWNoIHdoZW4gc2VuZGluZyByZXF1ZXN0cyB0byB0aGUgcHJveHkgKi9cbiAgYXV0aG9yaXphdGlvbkhlYWRlcjogc3RyaW5nXG4gIC8qKiBUaGUgZW5kcG9pbnQgdG8gdXNlIGZvciBgdXBkYXRlVG9rZW5RdWV1ZXNgIHdoZW4gd29ya2luZyB3aXRoIGEgcmVzdCBwcm94eSAqL1xuICB1cGRhdGVCZWFyZXJUb2tlbkVuZHBvaW50Pzogc3RyaW5nXG4gIC8qKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZXMgYSByZXF1ZXN0IHNob3VsZCBiZSByZXRyaWVkLiBEZWZhdWx0cyB0byBJbmZpbml0eSAqL1xuICBtYXhSZXRyeUNvdW50OiBudW1iZXJcbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSBtYW5hZ2VyIGlzIHJhdGUgbGltaXRlZCBnbG9iYWxseSBhY3Jvc3MgYWxsIHJlcXVlc3RzLiBEZWZhdWx0cyB0byBmYWxzZS4gKi9cbiAgZ2xvYmFsbHlSYXRlTGltaXRlZDogYm9vbGVhblxuICAvKiogV2hldGhlciBvciBub3QgdGhlIHJhdGUgbGltaXRlZCBwYXRocyBhcmUgYmVpbmcgcHJvY2Vzc2VkIHRvIGFsbG93IHJlcXVlc3RzIHRvIGJlIG1hZGUgb25jZSB0aW1lIGlzIHVwLiBEZWZhdWx0cyB0byBmYWxzZS4gKi9cbiAgcHJvY2Vzc2luZ1JhdGVMaW1pdGVkUGF0aHM6IGJvb2xlYW5cbiAgLyoqIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBkZWxldGluZyB0aGlzIHF1ZXVlIGlmIGl0IGlzIGVtcHR5LiBEZWZhdWx0cyB0byA2MDAwMChvbmUgbWludXRlKS4gKi9cbiAgZGVsZXRlUXVldWVEZWxheTogbnVtYmVyXG4gIC8qKiBUaGUgcXVldWVzIHRoYXQgaG9sZCBhbGwgdGhlIHJlcXVlc3RzIHRvIGJlIHByb2Nlc3NlZC4gKi9cbiAgcXVldWVzOiBNYXA8c3RyaW5nLCBRdWV1ZT5cbiAgLyoqIFRoZSBwYXRocyB0aGF0IGFyZSBjdXJyZW50bHkgcmF0ZSBsaW1pdGVkLiAqL1xuICByYXRlTGltaXRlZFBhdGhzOiBNYXA8c3RyaW5nLCBSZXN0UmF0ZUxpbWl0ZWRQYXRoPlxuICAvKiogVGhlIGJ1Y2tldCBmb3IgaGFuZGxpbmcgYW55IGludmFsaWQgcmVxdWVzdHMuICAqL1xuICBpbnZhbGlkQnVja2V0OiBJbnZhbGlkUmVxdWVzdEJ1Y2tldFxuICAvKiogVGhlIHJvdXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoaXMgbWFuYWdlci4gKi9cbiAgcm91dGVzOiBSZXN0Um91dGVzXG4gIC8qKiBUaGUgbG9nZ2VyIHRvIHVzZSBmb3IgdGhlIHJlc3QgbWFuYWdlciAqL1xuICBsb2dnZXI6IFBpY2s8dHlwZW9mIGxvZ2dlciwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnZmF0YWwnPlxuICAvKiogRXZlbnRzIGZvciB0aGUgcmVzdCBtYW5hZ2VyICovXG4gIGV2ZW50czogUmVzdE1hbmFnZXJFdmVudHNcbiAgLyoqIEFsbG93cyB0aGUgdXNlciB0byBpbmplY3QgY3VzdG9tIGhlYWRlcnMgdGhhdCB3aWxsIGJlIHNlbnQgd2l0aCBldmVyeSByZXF1ZXN0LiAqL1xuICBjcmVhdGVCYXNlSGVhZGVyczogKCkgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogV2hldGhlciBvciBub3QgdGhlIHJlc3QgbWFuYWdlciBzaG91bGQga2VlcCBvYmplY3RzIGluIHJhdyBzbmFrZSBjYXNlIGZyb20gZGlzY29yZC4gKi9cbiAgcHJlZmVyU25ha2VDYXNlOiAoZW5hYmxlZDogYm9vbGVhbikgPT4gUmVzdE1hbmFnZXJcbiAgLyoqIENoZWNrIHRoZSByYXRlIGxpbWl0cyBmb3IgYSB1cmwgb3IgYSBidWNrZXQuICovXG4gIGNoZWNrUmF0ZUxpbWl0czogKHVybDogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcpID0+IG51bWJlciB8IGZhbHNlXG4gIC8qIFVwZGF0ZSB0aGUgcXVldWVzIGFuZCByYXRlbGltaXQgaW5mb3JtYXRpb24gdG8gYWRhcHQgdG8gdGhlIG5ldyB0b2tlbiAqL1xuICB1cGRhdGVUb2tlblF1ZXVlczogKG9sZFRva2VuOiBzdHJpbmcsIG5ld1Rva2VuOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFJlc2hhcGVzIGFuZCBtb2RpZmllcyB0aGUgb2JqIGFzIG5lZWRlZCB0byBtYWtlIGl0IHJlYWR5IGZvciBkaXNjb3JkcyBhcGkuICovXG4gIGNoYW5nZVRvRGlzY29yZEZvcm1hdDogKG9iajogYW55KSA9PiBhbnlcbiAgLyoqIENyZWF0ZXMgdGhlIHJlcXVlc3QgYm9keSBhbmQgaGVhZGVycyB0aGF0IGFyZSBuZWNlc3NhcnkgdG8gc2VuZCBhIHJlcXVlc3QuIFdpbGwgaGFuZGxlIGRpZmZlcmVudCB0eXBlcyBvZiBtZXRob2RzIGFuZCBldmVyeXRoaW5nIG5lY2Vzc2FyeSBmb3IgZGlzY29yZC4gKi9cbiAgY3JlYXRlUmVxdWVzdEJvZHk6IChtZXRob2Q6IFJlcXVlc3RNZXRob2RzLCBvcHRpb25zPzogQ3JlYXRlUmVxdWVzdEJvZHlPcHRpb25zKSA9PiBSZXF1ZXN0Qm9keVxuICAvKiogVGhpcyB3aWxsIGNyZWF0ZSBhIGluZmluaXRlIGxvb3AgcnVubmluZyBpbiAxIHNlY29uZHMgdXNpbmcgdGFpbCByZWN1cnNpb24gdG8ga2VlcCByYXRlIGxpbWl0cyBjbGVhbi4gV2hlbiBhIHJhdGUgbGltaXQgcmVzZXRzLCB0aGlzIHdpbGwgcmVtb3ZlIGl0IHNvIHRoZSBxdWV1ZSBjYW4gcHJvY2VlZC4gKi9cbiAgcHJvY2Vzc1JhdGVMaW1pdGVkUGF0aHM6ICgpID0+IHZvaWRcbiAgLyoqIFByb2Nlc3NlcyB0aGUgcmF0ZSBsaW1pdCBoZWFkZXJzIGFuZCBkZXRlcm1pbmVzIGlmIGl0IG5lZWRzIHRvIGJlIHJhdGUgbGltaXRlZCBhbmQgcmV0dXJucyB0aGUgYnVja2V0IGlkIGlmIGF2YWlsYWJsZSAqL1xuICBwcm9jZXNzSGVhZGVyczogKHVybDogc3RyaW5nLCBoZWFkZXJzOiBIZWFkZXJzLCBpZGVudGlmaWVyOiBzdHJpbmcpID0+IHN0cmluZyB8IHVuZGVmaW5lZFxuICAvKiogU2VuZHMgYSByZXF1ZXN0IHRvIHRoZSBhcGkuICovXG4gIHNlbmRSZXF1ZXN0OiAob3B0aW9uczogU2VuZFJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBTcGxpdCBhIHVybCB0byBzZXBhcmF0ZSByYXRlIGxpbWl0IGJ1Y2tldHMgYmFzZWQgb24gbWFqb3IvbWlub3IgcGFyYW1ldGVycy4gKi9cbiAgc2ltcGxpZnlVcmw6ICh1cmw6IHN0cmluZywgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcykgPT4gc3RyaW5nXG4gIC8qKiBNYWtlIGEgcmVxdWVzdCB0byBiZSBzZW50IHRvIHRoZSBhcGkuICovXG4gIG1ha2VSZXF1ZXN0OiA8VCA9IHVua25vd24+KG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsIHVybDogc3RyaW5nLCBvcHRpb25zPzogTWFrZVJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFQ+XG4gIC8qKiBUYWtlcyBhIHJlcXVlc3QgYW5kIHByb2Nlc3NlcyBpdCBpbnRvIGEgcXVldWUuICovXG4gIHByb2Nlc3NSZXF1ZXN0OiAocmVxdWVzdDogU2VuZFJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBNYWtlIGEgZ2V0IHJlcXVlc3QgdG8gdGhlIGFwaSAqL1xuICBnZXQ6IDxUID0gdm9pZD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBPbWl0PE1ha2VSZXF1ZXN0T3B0aW9ucywgJ2JvZHknPikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxUPj5cbiAgLyoqIE1ha2UgYSBwb3N0IHJlcXVlc3QgdG8gdGhlIGFwaS4gKi9cbiAgcG9zdDogPFQgPSB2b2lkPih1cmw6IHN0cmluZywgb3B0aW9ucz86IE1ha2VSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxUPj5cbiAgLyoqIE1ha2UgYSBwdXQgcmVxdWVzdCB0byB0aGUgYXBpLiAqL1xuICBwdXQ6IDxUID0gdm9pZD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBNYWtlUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8VD4+XG4gIC8qKiBNYWtlIGEgZGVsZXRlIHJlcXVlc3QgdG8gdGhlIGFwaS4gKi9cbiAgZGVsZXRlOiAodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBPbWl0PE1ha2VSZXF1ZXN0T3B0aW9ucywgJ2JvZHknPikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogTWFrZSBhIHBhdGNoIHJlcXVlc3QgdG8gdGhlIGFwaS4gKi9cbiAgcGF0Y2g6IDxUID0gdm9pZD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBNYWtlUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8VD4+XG4gIC8qKlxuICAgKiBBZGRzIGEgcmVhY3Rpb24gdG8gYSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIHRvIGFkZCBhIHJlYWN0aW9uIHRvIGlzIGluLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGFkZCBhIHJlYWN0aW9uIHRvLlxuICAgKiBAcGFyYW0gcmVhY3Rpb24gLSBUaGUgcmVhY3Rpb24gdG8gYWRkIHRvIHRoZSBtZXNzYWdlLlxuICAgKiBAcmV0dXJuc1xuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBJZiBub2JvZHkgZWxzZSBoYXMgcmVhY3RlZCB0byB0aGUgbWVzc2FnZTpcbiAgICogLSBSZXF1aXJlcyB0aGUgYEFERF9SRUFDVElPTlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgUmVhY3Rpb24gQWRkXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNjcmVhdGUtcmVhY3Rpb259XG4gICAqL1xuICBhZGRSZWFjdGlvbjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQWRkcyBtdWx0aXBsZSBhIHJlYWN0aW9uIHRvIGEgbWVzc2FnZS5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBgYWRkUmVhY3Rpb24oKWAgaGVscGVyIGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIHRvIGFkZCByZWFjdGlvbnMgdG8gaXMgaW4uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gYWRkIHRoZSByZWFjdGlvbnMgdG8uXG4gICAqIEBwYXJhbSByZWFjdGlvbnMgLSBUaGUgcmVhY3Rpb25zIHRvIGFkZCB0byB0aGUgbWVzc2FnZS5cbiAgICogQHBhcmFtIG9yZGVyZWQgLSBXaGV0aGVyIHRoZSByZWFjdGlvbnMgbXVzdCBiZSBhZGRlZCBpbiBvcmRlciBvciBub3QuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIG5vYm9keSBlbHNlIGhhcyByZWFjdGVkIHRvIHRoZSBtZXNzYWdlOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgQUREX1JFQUNUSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBSZWFjdGlvbiBBZGRfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IHJlYWN0aW9uIGFkZGVkLlxuICAgKi9cbiAgYWRkUmVhY3Rpb25zOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbnM6IHN0cmluZ1tdLCBvcmRlcmVkPzogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQWRkcyBhIHJvbGUgdG8gYSBtZW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgbWVtYmVyIHRvIGFkZCB0aGUgcm9sZSB0byBpcyBpbi5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSBtZW1iZXIgdG8gYWRkIHRoZSByb2xlIHRvLlxuICAgKiBAcGFyYW0gcm9sZUlkIC0gVGhlIElEIG9mIHRoZSByb2xlIHRvIGFkZCB0byB0aGUgbWVtYmVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXIgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjYWRkLWd1aWxkLW1lbWJlci1yb2xlfVxuICAgKi9cbiAgYWRkUm9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEFkZHMgYSBtZW1iZXIgdG8gYSB0aHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHRocmVhZCB0byBhZGQgdGhlIG1lbWJlciB0by5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSBtZW1iZXIgdG8gYWRkIHRvIHRoZSB0aHJlYWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBhYmlsaXR5IHRvIHNlbmQgbWVzc2FnZXMgaW4gdGhlIHRocmVhZC5cbiAgICogUmVxdWlyZXMgdGhlIHRocmVhZCBub3QgYmUgYXJjaGl2ZWQuXG4gICAqXG4gICAqIEZpcmVzIGEgX1RocmVhZCBNZW1iZXJzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjYWRkLXRocmVhZC1tZW1iZXJ9XG4gICAqL1xuICBhZGRUaHJlYWRNZW1iZXI6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEFkZHMgYSByZWNpcGllbnQgdG8gYSBncm91cCBETS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgZ3JvdXAgZG0gdG8gYWRkIHRoZSB1c2VyIHRvLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIHVzZXIgdG8gYWRkIHRvIHRoZSBncm91cCBkbS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYWRkaW5nIHRoZSB1c2VyXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIGFuIE9BdXRoMiBhY2Nlc3MgdG9rZW4gd2l0aCB0aGUgYGdkbS5qb2luYCBzY29wZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNncm91cC1kbS1hZGQtcmVjaXBpZW50fVxuICAgKi9cbiAgYWRkRG1SZWNpcGllbnQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEFkZERtUmVjaXBpZW50T3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQWRkcyBhIG1lbWJlciB0byBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgdGhyZWFkIHRvIGFkZCB0aGUgbWVtYmVyIHRvLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIG1lbWJlciB0byBhZGQgdG8gdGhlIHRocmVhZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGFkZCBvZiBhIGd1aWxkIG1lbWJlclxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYm90IHRvIGJlIGluIHRoZSBzcGVjaWZpZWQgc2VydmVyXG4gICAqIFJlcXVpcmVzIGFuIE9BdXRoMiBhY2Nlc3MgdG9rZW4gd2l0aCB0aGUgYGd1aWxkcy5qb2luYCBzY29wZVxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXIgQWRkXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjYWRkLWd1aWxkLW1lbWJlcn1cbiAgICovXG4gIGFkZEd1aWxkTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkR3VpbGRNZW1iZXJPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGF1dG9tb2QgcnVsZSBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSBydWxlIGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIHJ1bGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGV9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYW4gX0F1dG8gTW9kZXJhdGlvbiBSdWxlIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2F1dG8tbW9kZXJhdGlvbiNjcmVhdGUtYXV0by1tb2RlcmF0aW9uLXJ1bGV9XG4gICAqL1xuICBjcmVhdGVBdXRvbW9kUnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlQXV0b01vZGVyYXRpb25SdWxlT3B0aW9ucywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGU+PlxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNoYW5uZWwgd2l0aGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBjcmVhdGUgdGhlIGNoYW5uZWwgd2l0aGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGNoYW5uZWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIERpc2NvcmRDaGFubmVsfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfQ0hBTk5FTFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIHNldHRpbmcgcGVybWlzc2lvbiBvdmVyd3JpdGVzLCBvbmx5IHRoZSBwZXJtaXNzaW9ucyB0aGUgYm90IHVzZXIgaGFzIGluIHRoZSBndWlsZCBjYW4gYmUgYWxsb3dlZCBvciBkZW5pZWQuXG4gICAqXG4gICAqIFNldHRpbmcgdGhlIGBNQU5BR0VfUk9MRVNgIHBlcm1pc3Npb24gaXMgb25seSBwb3NzaWJsZSBmb3IgZ3VpbGQgYWRtaW5pc3RyYXRvcnMuXG4gICAqXG4gICAqIEZpcmVzIGEgX0NoYW5uZWwgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjY3JlYXRlLWd1aWxkLWNoYW5uZWx9XG4gICAqL1xuICBjcmVhdGVDaGFubmVsOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZENoYW5uZWwsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQ2hhbm5lbD4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVtb2ppIGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBpbiB3aGljaCB0byBjcmVhdGUgdGhlIGVtb2ppLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGVtb2ppLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBEaXNjb3JkRW1vaml9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRW1vamlzIGhhdmUgYSBtYXhpbXVtIGZpbGUgc2l6ZSBvZiAyNTYga2lsb2JpdHMuIEF0dGVtcHRpbmcgdG8gdXBsb2FkIGEgbGFyZ2VyIGVtb2ppIHdpbGwgY2F1c2UgdGhlIHJvdXRlIHRvIHJldHVybiA0MDAgQmFkIFJlcXVlc3QuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIEVtb2ppcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNjcmVhdGUtZ3VpbGQtZW1vaml9XG4gICAqL1xuICBjcmVhdGVFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRFbW9qaSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRFbW9qaT4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVtb2ppIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgZW1vamkuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBEaXNjb3JkRW1vaml9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjY3JlYXRlLWFwcGxpY2F0aW9uLWVtb2ppfVxuICAgKi9cbiAgY3JlYXRlQXBwbGljYXRpb25FbW9qaTogKG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uRW1vamkpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEVtb2ppPj5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgdGhyZWFkIGluIGEgZm9ydW0gY2hhbm5lbCBvciBtZWRpYSBjaGFubmVsLCBhbmQgc2VuZHMgYSBtZXNzYWdlIHdpdGhpbiB0aGUgY3JlYXRlZCB0aHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGZvcnVtIGNoYW5uZWwgdG8gY3JlYXRlIHRoZSB0aHJlYWQgd2l0aGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIHRocmVhZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZENoYW5uZWx9IHdpdGggYSBuZXN0ZWQge0BsaW5rIERpc2NvcmRDaGFubmVsfSBvYmplY3QuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQ1JFQVRFX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9UaHJlYWQgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjc3RhcnQtdGhyZWFkLWluLWZvcnVtLW9yLW1lZGlhLWNoYW5uZWx9XG4gICAqL1xuICBjcmVhdGVGb3J1bVRocmVhZDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVGb3J1bVBvc3RXaXRoTWVzc2FnZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDaGFubmVsPj5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXBwbGljYXRpb24gY29tbWFuZCBhY2Nlc3NpYmxlIGdsb2JhbGx5OyBhY3Jvc3MgZGlmZmVyZW50IGd1aWxkcyBhbmQgY2hhbm5lbHMuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4pqg77iPIENyZWF0aW5nIGEgY29tbWFuZCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3RpbmcgY29tbWFuZCBmb3IgeW91ciBhcHBsaWNhdGlvbiB3aWxsIG92ZXJ3cml0ZSB0aGUgb2xkIGNvbW1hbmQuXG4gICAqIOKaoO+4jyBHbG9iYWwgY29tbWFuZHMgb25jZSBjcmVhdGVkIGFyZSBjYWNoZWQgZm9yIHBlcmlvZHMgb2YgX19hbiBob3VyX18sIHNvIGNoYW5nZXMgbWFkZSB0byBleGlzdGluZyBjb21tYW5kcyB3aWxsIHRha2UgYW4gaG91ciB0byBzdXJmYWNlLlxuICAgKiDimqDvuI8gWW91IGNhbiBvbmx5IGNyZWF0ZSB1cCB0byAyMDAgX25ld18gY29tbWFuZHMgZGFpbHkuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgdGhlIGJlYXJlciB0b2tlbiB0aGUgdG9rZW4gbmVlZHMgdGhlIGBhcHBsaWNhdGlvbnMuY29tbWFuZHMudXBkYXRlYCBzY29wZSBhbmQgbXVzdCBiZSBhIGBDbGllbnQgZ3JhbnRgIHRva2VuLlxuICAgKiAgWW91IHdpbGwgYmUgYWJsZSB0byB1cGRhdGUgb25seSB5b3VyIG93biBhcHBsaWNhdGlvbiBjb21tYW5kc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjY3JlYXRlLWdsb2JhbC1hcHBsaWNhdGlvbi1jb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoXG4gICAgY29tbWFuZDogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICAgIG9wdGlvbnM/OiBDcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZD4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFwcGxpY2F0aW9uIGNvbW1hbmQgb25seSBhY2Nlc3NpYmxlIGluIGEgc3BlY2lmaWMgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBlbmRwb2ludFxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIOKaoO+4jyBDcmVhdGluZyBhIGNvbW1hbmQgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFuIGV4aXN0aW5nIGNvbW1hbmQgZm9yIHlvdXIgYXBwbGljYXRpb24gd2lsbCBvdmVyd3JpdGUgdGhlIG9sZCBjb21tYW5kLlxuICAgKiDimqDvuI8gWW91IGNhbiBvbmx5IGNyZWF0ZSB1cCB0byAyMDAgX25ld18gY29tbWFuZHMgZGFpbHkuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgdGhlIGJlYXJlciB0b2tlbiB0aGUgdG9rZW4gbmVlZHMgdGhlIGBhcHBsaWNhdGlvbnMuY29tbWFuZHMudXBkYXRlYCBzY29wZSBhbmQgbXVzdCBiZSBhIGBDbGllbnQgZ3JhbnRgIHRva2VuLlxuICAgKiAgWW91IHdpbGwgYmUgYWJsZSB0byB1cGRhdGUgb25seSB5b3VyIG93biBhcHBsaWNhdGlvbiBjb21tYW5kc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjY3JlYXRlLWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKFxuICAgIGNvbW1hbmQ6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IENyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+PlxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHN0aWNrZXIgZm9yIHRoZSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJuIEEge0BsaW5rIERpc2NvcmRTdGlja2VyfVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRmlyZXMgYSBHdWlsZCBTdGlja2VycyBVcGRhdGUgR2F0ZXdheSBldmVudC5cbiAgICogRXZlcnkgZ3VpbGRzIGhhcyBmaXZlIGZyZWUgc3RpY2tlciBzbG90cyBieSBkZWZhdWx0LCBhbmQgZWFjaCBCb29zdCBsZXZlbCB3aWxsIGdyYW50IGFjY2VzcyB0byBtb3JlIHNsb3RzLlxuICAgKiBMb3R0aWUgc3RpY2tlcnMgY2FuIG9ubHkgYmUgdXBsb2FkZWQgb24gZ3VpbGRzIHRoYXQgaGF2ZSBlaXRoZXIgdGhlIGBWRVJJRklFRGAgYW5kL29yIHRoZSBgUEFSVE5FUkVEYCBndWlsZCBmZWF0dXJlLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvc3RpY2tlciNjcmVhdGUtZ3VpbGQtc3RpY2tlcn1cbiAgICovXG4gIGNyZWF0ZUd1aWxkU3RpY2tlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRTdGlja2VyT3B0aW9ucywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRTdGlja2VyPj5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0ZW1wbGF0ZSBmcm9tIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBjcmVhdGUgdGhlIHRlbXBsYXRlIGZyb20uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgdGVtcGxhdGUuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBEaXNjb3JkVGVtcGxhdGV9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtdGVtcGxhdGUjY3JlYXRlLWd1aWxkLXRlbXBsYXRlfVxuICAgKi9cbiAgY3JlYXRlR3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlVGVtcGxhdGUpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFRlbXBsYXRlPj5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW52aXRlIHRvIGEgY2hhbm5lbCBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGNyZWF0ZSB0aGUgaW52aXRlIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGludml0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZEludml0ZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQ1JFQVRFX0lOU1RBTlRfSU5WSVRFYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhbiBfSW52aXRlIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHByaXZhdGVSZW1hcmtzXG4gICAqIFRoZSByZXF1ZXN0IGJvZHkgaXMgbm90IG9wdGlvbmFsLCBhbmQgYW4gZW1wdHkgSlNPTiBvYmplY3QgbXVzdCBiZSBzZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhbnkgZmllbGRzIGFyZSBiZWluZyB0cmFuc21pdHRlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjY3JlYXRlLWNoYW5uZWwtaW52aXRlfVxuICAgKi9cbiAgY3JlYXRlSW52aXRlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVDaGFubmVsSW52aXRlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEludml0ZT4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcm9sZSBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSByb2xlIGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIHJvbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIERpc2NvcmRSb2xlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfUk9MRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIFJvbGUgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjY3JlYXRlLWd1aWxkLXJvbGV9XG4gICAqL1xuICBjcmVhdGVSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZFJvbGUsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkUm9sZT4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2NoZWR1bGVkIGV2ZW50IGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBjcmVhdGUgdGhlIHNjaGVkdWxlZCBldmVudCBpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBzY2hlZHVsZWQgZXZlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIERpc2NvcmRTY2hlZHVsZWRFdmVudH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0VWRU5UU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQSBndWlsZCBjYW4gb25seSBoYXZlIGEgbWF4aW11bSBvZiAxMDAgZXZlbnRzIHdpdGggYSBzdGF0dXMgb2Yge0BsaW5rIFNjaGVkdWxlZEV2ZW50U3RhdHVzfS5BY3RpdmUgb3Ige0BsaW5rIFNjaGVkdWxlZEV2ZW50U3RhdHVzfS5TY2hlZHVsZWQgKGluY2x1c2l2ZSkuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIFNjaGVkdWxlZCBFdmVudCBDcmVhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC1zY2hlZHVsZWQtZXZlbnQjY3JlYXRlLWd1aWxkLXNjaGVkdWxlZC1ldmVudH1cbiAgICovXG4gIGNyZWF0ZVNjaGVkdWxlZEV2ZW50OiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVTY2hlZHVsZWRFdmVudCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRTY2hlZHVsZWRFdmVudD4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc3RhZ2UgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGEgc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBzdGFnZSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZFN0YWdlSW5zdGFuY2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgdXNlciB0byBiZSBhIG1vZGVyYXRvciBvZiB0aGUgc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogRmlyZXMgYSBfU3RhZ2UgSW5zdGFuY2UgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvc3RhZ2UtaW5zdGFuY2UjY3JlYXRlLXN0YWdlLWluc3RhbmNlfVxuICAgKi9cbiAgY3JlYXRlU3RhZ2VJbnN0YW5jZTogKG9wdGlvbnM6IENyZWF0ZVN0YWdlSW5zdGFuY2UsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU3RhZ2VJbnN0YW5jZT4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgd2ViaG9vay5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBjcmVhdGUgdGhlIHdlYmhvb2sgaW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgd2ViaG9vay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZFdlYmhvb2t9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9XRUJIT09LU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICog4pqg77iPIFRoZSB3ZWJob29rIG5hbWUgbXVzdCBub3QgY29udGFpbiB0aGUgc3Vic3RyaW5ncyAnY2x5ZGUnLCBvciAnZGlzY29yZCcgKGNhc2UtaW5zZW5zaXRpdmUpLlxuICAgKlxuICAgKiBGaXJlcyBhIF9XZWJob29rcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2NyZWF0ZS13ZWJob29rfVxuICAgKi9cbiAgY3JlYXRlV2ViaG9vazogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVXZWJob29rLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFdlYmhvb2s+PlxuICAvKipcbiAgICogRGVsZXRlcyBhbiBhdXRvbW9kIHJ1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBkZWxldGUgdGhlIHJ1bGUgZnJvbS5cbiAgICogQHBhcmFtIHJ1bGVJZCAtIFRoZSBJRCBvZiB0aGUgYXV0b21vZCBydWxlIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYW4gX0F1dG8gTW9kZXJhdGlvbiBSdWxlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2F1dG8tbW9kZXJhdGlvbiNkZWxldGUtYXV0by1tb2RlcmF0aW9uLXJ1bGV9XG4gICAqL1xuICBkZWxldGVBdXRvbW9kUnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcnVsZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIGNoYW5uZWwgZnJvbSB3aXRoaW4gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBkZWxldGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgbm90aGluZ1xuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGb3IgY29tbXVuaXR5IGd1aWxkcywgdGhlIF9SdWxlc18sIF9HdWlkZWxpbmVzXyBhbmQgX0NvbW11bml0eSBVcGRhdGVfIGNoYW5uZWxzIGNhbm5vdCBiZSBkZWxldGVkLlxuICAgKlxuICAgKiBJZiB0aGUgY2hhbm5lbCBpcyBhIHRocmVhZDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYE1BTkFHRV9USFJFQURTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiAtIEZpcmVzIGEgX1RocmVhZCBEZWxldGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIE90aGVyd2lzZTpcbiAgICogLSBSZXF1aXJlcyB0aGUgYE1BTkFHRV9DSEFOTkVMU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogLSDimqDvuI8gRGVsZXRpbmcgYSBjYXRlZ29yeSBjaGFubmVsIGRvZXMgbm90IGRlbGV0ZSBpdHMgY2hpbGQgY2hhbm5lbHMuXG4gICAqICAgSW5zdGVhZCwgdGhleSB3aWxsIGhhdmUgdGhlaXIgYHBhcmVudF9pZGAgcHJvcGVydHkgcmVtb3ZlZCwgYW5kIGEgYENoYW5uZWwgVXBkYXRlYCBnYXRld2F5IGV2ZW50IHdpbGwgZmlyZSBmb3IgZWFjaCBvZiB0aGVtLlxuICAgKlxuICAgKiAtIEZpcmVzIGEgX0NoYW5uZWwgRGVsZXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNkZWxldGVjbG9zZS1jaGFubmVsfVxuICAgKi9cbiAgZGVsZXRlQ2hhbm5lbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBwZXJtaXNzaW9uIG92ZXJyaWRlIGZvciBhIHVzZXIgb3Igcm9sZSBpbiBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZGVsZXRlIHRoZSBwZXJtaXNzaW9uIG92ZXJyaWRlIG9mLlxuICAgKiBAcGFyYW0gb3ZlcndyaXRlSWQgLSBUaGUgSUQgb2YgdGhlIHBlcm1pc3Npb24gb3ZlcnJpZGUgdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZGVsZXRlLWNoYW5uZWwtcGVybWlzc2lvbn1cbiAgICovXG4gIGRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGU6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3ZlcndyaXRlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGVtb2ppIGZyb20gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIGZyb20gd2hpY2ggdG8gZGVsZXRlIHRoZSBlbW9qaS5cbiAgICogQHBhcmFtIGlkIC0gVGhlIElEIG9mIHRoZSBlbW9qaSB0byBkZWxldGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRm9yIGVtb2ppcyBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IHVzZXIsIHJlcXVpcmVzIGVpdGhlciB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRm9yIG90aGVyIGVtb2ppcywgcmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIEVtb2ppcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNkZWxldGUtZ3VpbGQtZW1vaml9XG4gICAqL1xuICBkZWxldGVFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgaWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGVtb2ppIGZyb20gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhlIGVtb2ppIHRvIGRlbGV0ZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2Vtb2ppI2RlbGV0ZS1hcHBsaWNhdGlvbi1lbW9qaX1cbiAgICovXG4gIGRlbGV0ZUFwcGxpY2F0aW9uRW1vamk6IChpZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgZm9sbG93LXVwIG1lc3NhZ2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVubGlrZSBgZGVsZXRlTWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0IG5lZWRpbmcgdG8gc2VlIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIGlzIGluLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIERlbGV0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9yZWNlaXZpbmctYW5kLXJlc3BvbmRpbmcjZGVsZXRlLWZvbGxvd3VwLW1lc3NhZ2V9XG4gICAqL1xuICBkZWxldGVGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhbiBhcHBsaWNhdGlvbiBjb21tYW5kIHJlZ2lzdGVyZWQgZ2xvYmFsbHkuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kSWQgLSBUaGUgSUQgb2YgdGhlIGNvbW1hbmQgdG8gZGVsZXRlLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjZGVsZXRlLWdsb2JhbC1hcHBsaWNhdGlvbi1jb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gYXBwbGljYXRpb24gY29tbWFuZCByZWdpc3RlcmVkIGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBkZWxldGUgdGhlIGNvbW1hbmQgZnJvbS5cbiAgICogQHBhcmFtIGNvbW1hbmRJZCAtIFRoZSBJRCBvZiB0aGUgY29tbWFuZCB0byBkZWxldGUgZnJvbSB0aGUgZ3VpbGQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNkZWxldGUtZ3VpbGQtYXBwbGljYXRpb24tY29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcsIGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlIGEgbmV3IHN0aWNrZXIgZm9yIHRoZSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJuIEEge0BsaW5rIERpc2NvcmRTdGlja2VyfVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGb3Igc3RpY2tlcnMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLCByZXF1aXJlcyBlaXRoZXIgdGhlIGBDUkVBVEVfR1VJTERfRVhQUkVTU0lPTlNgIG9yIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqIEZvciBvdGhlciBzdGlja2VycywgcmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqIEZpcmVzIGEgR3VpbGQgU3RpY2tlcnMgVXBkYXRlIEdhdGV3YXkgZXZlbnQuXG4gICAqIEV2ZXJ5IGd1aWxkcyBoYXMgZml2ZSBmcmVlIHN0aWNrZXIgc2xvdHMgYnkgZGVmYXVsdCwgYW5kIGVhY2ggQm9vc3QgbGV2ZWwgd2lsbCBncmFudCBhY2Nlc3MgdG8gbW9yZSBzbG90cy5cbiAgICogTG90dGllIHN0aWNrZXJzIGNhbiBvbmx5IGJlIHVwbG9hZGVkIG9uIGd1aWxkcyB0aGF0IGhhdmUgZWl0aGVyIHRoZSBgVkVSSUZJRURgIGFuZC9vciB0aGUgYFBBUlRORVJFRGAgZ3VpbGQgZmVhdHVyZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjZGVsZXRlLWd1aWxkLXN0aWNrZXJ9XG4gICAqL1xuICBkZWxldGVHdWlsZFN0aWNrZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHN0aWNrZXJJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSB0ZW1wbGF0ZSBmcm9tIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBkZWxldGUgdGhlIHRlbXBsYXRlIGZyb20uXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZUNvZGUgLSBUaGUgY29kZSBvZiB0aGUgdGVtcGxhdGUgdG8gZGVsZXRlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtdGVtcGxhdGUjZGVsZXRlLWd1aWxkLXRlbXBsYXRlfVxuICAgKi9cbiAgZGVsZXRlR3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdGVtcGxhdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaW50ZWdyYXRpb24gYXR0YWNoZWQgdG8gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIGZyb20gd2hpY2ggdG8gZGVsZXRlIHRoZSBpbnRlZ3JhdGlvbi5cbiAgICogQHBhcmFtIGludGVncmF0aW9uSWQgLSBUaGUgSUQgb2YgdGhlIGludGVncmF0aW9uIHRvIGRlbGV0ZSBmcm9tIHRoZSBndWlsZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRGVsZXRlcyBhbGwgd2ViaG9va3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnRlZ3JhdGlvbiwgYW5kIGtpY2tzIHRoZSBhc3NvY2lhdGVkIGJvdCBpZiB0aGVyZSBpcyBvbmUuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIEludGVncmF0aW9ucyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqIEZpcmVzIGEgX0ludGVncmF0aW9uIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2RlbGV0ZS1ndWlsZC1pbnRlZ3JhdGlvbn1cbiAgICovXG4gIGRlbGV0ZUludGVncmF0aW9uOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpbnRlZ3JhdGlvbklkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhbiBpbnZpdGUgdG8gYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gaW52aXRlQ29kZSAtIFRoZSBpbnZpdGUgY29kZSBvZiB0aGUgaW52aXRlIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9DSEFOTkVMU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYW4gX0ludml0ZSBEZWxldGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2RlbGV0ZS1jaGFubmVsLWludml0ZX1cbiAgICovXG4gIGRlbGV0ZUludml0ZTogKGludml0ZUNvZGU6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgbWVzc2FnZSBmcm9tIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBkZWxldGUgdGhlIG1lc3NhZ2UgZnJvbS5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUgZnJvbSB0aGUgY2hhbm5lbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiBub3QgZGVsZXRpbmcgb3duIG1lc3NhZ2U6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgRGVsZXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNkZWxldGUtbWVzc2FnZX1cbiAgICovXG4gIGRlbGV0ZU1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBtdWx0aXBsZSBtZXNzYWdlcyBmcm9tIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBkZWxldGUgdGhlIG1lc3NhZ2VzIGZyb20uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWRzIC0gVGhlIElEcyBvZiB0aGUgbWVzc2FnZXMgdG8gZGVsZXRlIGZyb20gdGhlIGNoYW5uZWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIOKaoO+4jyBNZXNzYWdlcyBvbGRlciB0aGFuIDIgd2Vla3Mgb2xkIGNhbm5vdCBiZSBkZWxldGVkLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIERlbGV0ZSBCdWxrXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNidWxrLWRlbGV0ZS1tZXNzYWdlc31cbiAgICovXG4gIGRlbGV0ZU1lc3NhZ2VzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZHM6IEJpZ1N0cmluZ1tdLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgdGhlIGluaXRpYWwgbWVzc2FnZSByZXNwb25zZSB0byBhbiBpbnRlcmFjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIGludGVyYWN0aW9uIHRva2VuIHRvIHVzZSwgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbmFsIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVbmxpa2UgYGRlbGV0ZU1lc3NhZ2UoKWAsIHRoaXMgZW5kcG9pbnQgYWxsb3dzIHRoZSBib3QgdXNlciB0byBhY3Qgd2l0aG91dCBuZWVkaW5nIHRvIHNlZSB0aGUgY2hhbm5lbCB0aGUgbWVzc2FnZSBpcyBpbi5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBEZWxldGVfIGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvcmVjZWl2aW5nLWFuZC1yZXNwb25kaW5nI2RlbGV0ZS1vcmlnaW5hbC1pbnRlcmFjdGlvbi1yZXNwb25zZX1cbiAgICovXG4gIGRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogKHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSByZWFjdGlvbiBhZGRlZCBieSB0aGUgYm90IHVzZXIgZnJvbSBhIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlIHRoZSByZWFjdGlvbiBmcm9tIGlzIGluLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZSB0aGUgcmVhY3Rpb24gZnJvbS5cbiAgICogQHBhcmFtIHJlYWN0aW9uIC0gVGhlIHJlYWN0aW9uIHRvIGRlbGV0ZSBmcm9tIHRoZSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFJlYWN0aW9uIFJlbW92ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZGVsZXRlLW93bi1yZWFjdGlvbn1cbiAgICovXG4gIGRlbGV0ZU93blJlYWN0aW9uOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCByZWFjdGlvbnMgZm9yIGFsbCBlbW9qaXMgZnJvbSBhIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlIHRoZSByZWFjdGlvbnMgZnJvbSBpcyBpbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUgdGhlIHJlYWN0aW9ucyBmcm9tLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9NRVNTQUdFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBSZWFjdGlvbiBSZW1vdmUgQWxsXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNkZWxldGUtYWxsLXJlYWN0aW9uc31cbiAgICovXG4gIGRlbGV0ZVJlYWN0aW9uc0FsbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgcmVhY3Rpb25zIGZvciBhbiBlbW9qaSBmcm9tIGEgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0aGUgbWVzc2FnZSB0byBkZWxldGUgdGhlIHJlYWN0aW9ucyBmcm9tIGlzIGluLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZSB0aGUgcmVhY3Rpb25zIGZyb20uXG4gICAqIEBwYXJhbSByZWFjdGlvbiAtIFRoZSByZWFjdGlvbiB0byByZW1vdmUgZnJvbSB0aGUgbWVzc2FnZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgUmVhY3Rpb24gUmVtb3ZlIEVtb2ppXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNkZWxldGUtYWxsLXJlYWN0aW9ucy1mb3ItZW1vaml9XG4gICAqL1xuICBkZWxldGVSZWFjdGlvbnNFbW9qaTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIHJvbGUgZnJvbSBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZGVsZXRlIHRoZSByb2xlIGZyb20uXG4gICAqIEBwYXJhbSByb2xlSWQgLSBUaGUgSUQgb2YgdGhlIHJvbGUgdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBSb2xlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2RlbGV0ZS1ndWlsZC1yb2xlfVxuICAgKi9cbiAgZGVsZXRlUm9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIHNjaGVkdWxlZCBldmVudCBmcm9tIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBkZWxldGUgdGhlIHNjaGVkdWxlZCBldmVudCBmcm9tLlxuICAgKiBAcGFyYW0gZXZlbnRJZCAtIFRoZSBJRCBvZiB0aGUgc2NoZWR1bGVkIGV2ZW50IHRvIGRlbGV0ZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfRVZFTlRTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBTY2hlZHVsZWQgRXZlbnQgRGVsZXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtc2NoZWR1bGVkLWV2ZW50I2RlbGV0ZS1ndWlsZC1zY2hlZHVsZWQtZXZlbnR9XG4gICAqL1xuICBkZWxldGVTY2hlZHVsZWRFdmVudDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgZXZlbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIHRoZSBzdGFnZSBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggYSBzdGFnZSBjaGFubmVsLCBpZiBvbmUgZXhpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBzdGFnZSBjaGFubmVsIHRoZSBzdGFnZSBpbnN0YW5jZSBpcyBhc3NvY2lhdGVkIHdpdGguXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIHVzZXIgdG8gYmUgYSBtb2RlcmF0b3Igb2YgdGhlIHN0YWdlIGNoYW5uZWwuXG4gICAqXG4gICAqIEZpcmVzIGEgX1N0YWdlIEluc3RhbmNlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0YWdlLWluc3RhbmNlI2RlbGV0ZS1zdGFnZS1pbnN0YW5jZX1cbiAgICovXG4gIGRlbGV0ZVN0YWdlSW5zdGFuY2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgdXNlcidzIHJlYWN0aW9uIGZyb20gYSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZSB0aGUgcmVhY3Rpb24gZnJvbSBpcyBpbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUgdGhlIHJlYWN0aW9uIGZyb20uXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgd2hvc2UgcmVhY3Rpb24gdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0gcmVhY3Rpb24gLSBUaGUgcmVhY3Rpb24gdG8gZGVsZXRlIGZyb20gdGhlIG1lc3NhZ2UuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFJlYWN0aW9uIFJlbW92ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZGVsZXRlLXVzZXItcmVhY3Rpb259XG4gICAqL1xuICBkZWxldGVVc2VyUmVhY3Rpb246IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgd2ViaG9vay5cbiAgICpcbiAgICogQHBhcmFtIHdlYmhvb2tJZCAtIFRoZSBJRCBvZiB0aGUgd2ViaG9vayB0byBkZWxldGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9XZWJob29rcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2RlbGV0ZS13ZWJob29rfVxuICAgKi9cbiAgZGVsZXRlV2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSB3ZWJob29rIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZGVsZXRlIHRoZSBtZXNzYWdlIGJlbG9uZ2luZyB0by5cbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHdlYmhvb2sgdG9rZW4sIHVzZWQgdG8gbWFuYWdlIHRoZSB3ZWJob29rLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGRlbGV0aW9uIG9mIHRoZSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9NZXNzYWdlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZGVsZXRlLXdlYmhvb2t9XG4gICAqL1xuICBkZWxldGVXZWJob29rTWVzc2FnZTogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IERlbGV0ZVdlYmhvb2tNZXNzYWdlT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIHdlYmhvb2sgbWVzc2FnZSB1c2luZyB0aGUgd2ViaG9vayB0b2tlbiwgdGhlcmVieSBieXBhc3NpbmcgdGhlIG5lZWQgZm9yIGF1dGhlbnRpY2F0aW9uICsgcGVybWlzc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZGVsZXRlIHRoZSBtZXNzYWdlIGJlbG9uZ2luZyB0by5cbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHdlYmhvb2sgdG9rZW4sIHVzZWQgdG8gZGVsZXRlIHRoZSB3ZWJob29rLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9NZXNzYWdlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZGVsZXRlLXdlYmhvb2std2l0aC10b2tlbn1cbiAgICovXG4gIGRlbGV0ZVdlYmhvb2tXaXRoVG9rZW46ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIHBlcm1pc3Npb25zIGZvciBhIGd1aWxkIGFwcGxpY2F0aW9uIGNvbW1hbmQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgY29tbWFuZCBpcyByZWdpc3RlcmVkIGluLlxuICAgKiBAcGFyYW0gY29tbWFuZElkIC0gVGhlIElEIG9mIHRoZSBjb21tYW5kIHRvIGVkaXQgdGhlIHBlcm1pc3Npb25zIG9mLlxuICAgKiBAcGFyYW0gYmVhcmVyVG9rZW4gLSBUaGUgYmVhcmVyIHRva2VuIHRvIHVzZSB0byBtYWtlIHRoZSByZXF1ZXN0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgY29tbWFuZCBwZXJtaXNzaW9ucy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnN9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGUgYmVhcmVyIHRva2VuIHJlcXVpcmVzIHRoZSBgYXBwbGljYXRpb25zLmNvbW1hbmRzLnBlcm1pc3Npb25zLnVwZGF0ZWAgc2NvcGUgdG8gYmUgZW5hYmxlZCwgYW5kIHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBndWlsZCB3aG9zZSBJRCBoYXMgYmVlbiBwcm92aWRlZCBpbiB0aGUgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2VkaXQtYXBwbGljYXRpb24tY29tbWFuZC1wZXJtaXNzaW9uc31cbiAgICovXG4gIGVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBiZWFyZXJUb2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucz5bXSxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zPj5cbiAgLyoqXG4gICAqIEVkaXRzIGFuIGF1dG9tb2QgcnVsZS5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHJ1bGUgaW4uXG4gICAqIEBwYXJhbSBydWxlSWQgLSBUaGUgSUQgb2YgdGhlIHJ1bGUgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIHJ1bGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZEF1dG9Nb2RlcmF0aW9uUnVsZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhbiBfQXV0byBNb2RlcmF0aW9uIFJ1bGUgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvYXV0by1tb2RlcmF0aW9uI21vZGlmeS1hdXRvLW1vZGVyYXRpb24tcnVsZX1cbiAgICovXG4gIGVkaXRBdXRvbW9kUnVsZTogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBydWxlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEVkaXRBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zPixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXV0b01vZGVyYXRpb25SdWxlPj5cbiAgLyoqXG4gICAqIE1vZGlmaWVzIHRoZSBib3QncyB1c2VybmFtZSwgYXZhdGFyIG9yIGJhbm5lci5cbiAgICogTk9URTogdXNlcm5hbWU6IGlmIGNoYW5nZWQgbWF5IGNhdXNlIHRoZSBib3QncyBkaXNjcmltaW5hdG9yIHRvIGJlIHJhbmRvbWl6ZWQuXG4gICAqL1xuICBlZGl0Qm90UHJvZmlsZTogKG9wdGlvbnM6IHsgdXNlcm5hbWU/OiBzdHJpbmc7IGJvdEF2YXRhclVSTD86IHN0cmluZyB8IG51bGw7IGJvdEJhbm5lclVSTD86IHN0cmluZyB8IG51bGwgfSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkVXNlcj4+XG4gIC8qKlxuICAgKiBFZGl0cyBhIGNoYW5uZWwncyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgY2hhbm5lbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIGVkaXRpbmcgYSBjaGFubmVsIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3JvdXBEbTpcbiAgICogLSBGaXJlcyBhIF9DaGFubmVsIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogSWYgZWRpdGluZyBhIHRocmVhZCBjaGFubmVsOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1RIUkVBRFNgIHBlcm1pc3Npb24gX191bmxlc3NfXyBpZiBzZXR0aW5nIHRoZSBgYXJjaGl2ZWRgIHByb3BlcnR5IHRvIGBmYWxzZWAgd2hlbiB0aGUgYGxvY2tlZGAgcHJvcGVydHkgaXMgYWxzbyBgZmFsc2VgLCBpbiB3aGljaCBjYXNlIG9ubHkgdGhlIGBTRU5EX01FU1NBR0VTYCBwZXJtaXNzaW9uIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiAtIEZpcmVzIGEgX1RocmVhZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIElmIGVkaXRpbmcgYSBndWlsZCBjaGFubmVsOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0NIQU5ORUxTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiAtIElmIG1vZGlmeWluZyBwZXJtaXNzaW9uIG92ZXJyaWRlczpcbiAgICogICAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiAgIC0gT25seSBwZXJtaXNzaW9ucyB0aGUgYm90IHVzZXIgaGFzIGluIHRoZSBndWlsZCBvciBwYXJlbnQgY2hhbm5lbCBjYW4gYmUgYWxsb3dlZC9kZW5pZWQgX191bmxlc3NfXyB0aGUgYm90IHVzZXIgaGFzIGEgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbiBvdmVycmlkZSBpbiB0aGUgY2hhbm5lbC5cbiAgICpcbiAgICogLSBJZiBtb2RpZnlpbmcgYSBjaGFubmVsIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRDYXRlZ29yeTpcbiAgICogICAgIC0gRmlyZXMgYSBfQ2hhbm5lbCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQgZm9yIGVhY2ggY2hpbGQgY2hhbm5lbCBpbXBhY3RlZCBpbiB0aGlzIGNoYW5nZS5cbiAgICogLSBPdGhlcndpc2U6XG4gICAqICAgICAtIEZpcmVzIGEgX0NoYW5uZWwgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKi9cbiAgZWRpdENoYW5uZWw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5Q2hhbm5lbCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDaGFubmVsPj5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBwZXJtaXNzaW9uIG92ZXJyaWRlcyBmb3IgYSB1c2VyIG9yIHJvbGUgaW4gYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGVkaXQgdGhlIHBlcm1pc3Npb24gb3ZlcnJpZGVzIG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwZXJtaXNzaW9uIG92ZXJyaWRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBPbmx5IHBlcm1pc3Npb25zIHRoZSBib3QgdXNlciBoYXMgaW4gdGhlIGd1aWxkIG9yIHBhcmVudCBjaGFubmVsIGNhbiBiZSBhbGxvd2VkL2RlbmllZCBfX3VubGVzc19fIHRoZSBib3QgdXNlciBoYXMgYSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uIG92ZXJyaWRlIGluIHRoZSBjaGFubmVsLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZWRpdC1jaGFubmVsLXBlcm1pc3Npb25zfVxuICAgKi9cbiAgZWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlc09wdGlvbnMsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIHBvc2l0aW9ucyBvZiBhIHNldCBvZiBjaGFubmVscyBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgaW4gd2hpY2ggdG8gZWRpdCB0aGUgcG9zaXRpb25zIG9mIHRoZSBjaGFubmVscy5cbiAgICogQHBhcmFtIGNoYW5uZWxQb3NpdGlvbnMgLSBBIHNldCBvZiBvYmplY3RzIGRlZmluaW5nIHRoZSB1cGRhdGVkIHBvc2l0aW9ucyBvZiB0aGUgY2hhbm5lbHMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0NIQU5ORUxTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIFVwZGF0ZV8gZ2F0ZXdheSBldmVudCBmb3IgZXZlcnkgY2hhbm5lbCBpbXBhY3RlZCBpbiB0aGlzIGNoYW5nZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21vZGlmeS1ndWlsZC1jaGFubmVsLXBvc2l0aW9uc31cbiAgICovXG4gIGVkaXRDaGFubmVsUG9zaXRpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBjaGFubmVsUG9zaXRpb25zOiBNb2RpZnlHdWlsZENoYW5uZWxQb3NpdGlvbnNbXSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgYW4gZW1vamkuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBpbiB3aGljaCB0byBlZGl0IHRoZSBlbW9qaS5cbiAgICogQHBhcmFtIGlkIC0gVGhlIElEIG9mIHRoZSBlbW9qaSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgZW1vamkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIHVwZGF0ZWQge0BsaW5rIERpc2NvcmRFbW9qaX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZvciBlbW9qaXMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLCByZXF1aXJlcyBlaXRoZXIgdGhlIGBDUkVBVEVfR1VJTERfRVhQUkVTU0lPTlNgIG9yIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqIEZvciBvdGhlciBlbW9qaXMsIHJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIGBHdWlsZCBFbW9qaXMgVXBkYXRlYCBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjbW9kaWZ5LWd1aWxkLWVtb2ppfVxuICAgKi9cbiAgZWRpdEVtb2ppOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlHdWlsZEVtb2ppLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEVtb2ppPj5cbiAgLyoqXG4gICAqIEVkaXRzIGFuIGFwcGxpY2F0aW9uIGVtb2ppLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhlIGVtb2ppIHRvIGVkaXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBlbW9qaS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIHVwZGF0ZWQge0BsaW5rIERpc2NvcmRFbW9qaX0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNtb2RpZnktYXBwbGljYXRpb24tZW1vaml9XG4gICAqL1xuICBlZGl0QXBwbGljYXRpb25FbW9qaTogKGlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUFwcGxpY2F0aW9uRW1vamkpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEVtb2ppPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgZm9sbG93LXVwIG1lc3NhZ2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVbmxpa2UgYGVkaXRNZXNzYWdlKClgLCB0aGlzIGVuZHBvaW50IGFsbG93cyB0aGUgYm90IHVzZXIgdG8gYWN0IHdpdGhvdXQgbmVlZGluZyB0byBzZWUgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgaXMgaW4uXG4gICAqXG4gICAqIERvZXMgbm90IHN1cHBvcnQgZXBoZW1lcmFsIGZvbGxvdy11cCBtZXNzYWdlcyBkdWUgdG8gdGhlc2UgYmVpbmcgc3RhdGVsZXNzLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFVwZGF0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9yZWNlaXZpbmctYW5kLXJlc3BvbmRpbmcjZWRpdC1mb2xsb3d1cC1tZXNzYWdlfVxuICAgKi9cbiAgZWRpdEZvbGxvd3VwTWVzc2FnZTogKHRva2VuOiBzdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBFZGl0cyBhIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0gY29tbWFuZElkIC0gVGhlIElEIG9mIHRoZSBjb21tYW5kIHRvIGVkaXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBjb21tYW5kLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2VkaXQtZ2xvYmFsLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBlZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgZ3VpbGQncyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBndWlsZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkR3VpbGR9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgYXR0ZW1wdGluZyB0byBhZGQgb3IgcmVtb3ZlIHRoZSB7QGxpbmsgR3VpbGRGZWF0dXJlc30uQ29tbXVuaXR5IGZlYXR1cmU6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBBRE1JTklTVFJBVE9SYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktZ3VpbGR9XG4gICAqL1xuICBlZGl0R3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEd1aWxkPj5cbiAgLyoqXG4gICAqIEVkaXRzIGFuIGFwcGxpY2F0aW9uIGNvbW1hbmQgcmVnaXN0ZXJlZCBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIGNvbW1hbmQgaXMgcmVnaXN0ZXJlZCBpbi5cbiAgICogQHBhcmFtIGNvbW1hbmRJZCAtIFRoZSBJRCBvZiB0aGUgY29tbWFuZCB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgY29tbWFuZC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZH0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNlZGl0LWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBlZGl0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IChcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZD4+XG4gIC8qKlxuICAgKiBFZGl0IHRoZSBnaXZlbiBzdGlja2VyLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm4gQSB7QGxpbmsgRGlzY29yZFN0aWNrZXJ9XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZvciBzdGlja2VycyBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IHVzZXIsIHJlcXVpcmVzIGVpdGhlciB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRm9yIG90aGVyIHN0aWNrZXJzLCByZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRmlyZXMgYSBHdWlsZCBTdGlja2VycyBVcGRhdGUgR2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjbW9kaWZ5LWd1aWxkLXN0aWNrZXJ9XG4gICAqL1xuICBlZGl0R3VpbGRTdGlja2VyOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHN0aWNrZXJJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IEF0TGVhc3RPbmU8RWRpdEd1aWxkU3RpY2tlck9wdGlvbnM+LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRTdGlja2VyPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgdGVtcGxhdGUncyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgYSB0ZW1wbGF0ZSBvZi5cbiAgICogQHBhcmFtIHRlbXBsYXRlQ29kZSAtIFRoZSBjb2RlIG9mIHRoZSB0ZW1wbGF0ZSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgdGVtcGxhdGUuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIERpc2NvcmRUZW1wbGF0ZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC10ZW1wbGF0ZSNtb2RpZnktZ3VpbGQtdGVtcGxhdGV9XG4gICAqL1xuICBlZGl0R3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdGVtcGxhdGVDb2RlOiBzdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkVGVtcGxhdGUpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFRlbXBsYXRlPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBlZGl0IHRoZSBtZXNzYWdlIGluLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEcyBvZiB0aGUgbWVzc2FnZSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiBlZGl0aW5nIGFub3RoZXIgdXNlcidzIG1lc3NhZ2U6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqIC0gT25seSB0aGUge0BsaW5rIEVkaXRNZXNzYWdlLmZsYWdzIHwgZmxhZ3N9IHByb3BlcnR5IG9mIHRoZSBvcHRpb25zIG9iamVjdCBwYXJhbWV0ZXIgY2FuIGJlIGVkaXRlZC5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2VkaXQtbWVzc2FnZX1cbiAgICovXG4gIGVkaXRNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0TWVzc2FnZSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgaW5pdGlhbCBtZXNzYWdlIHJlc3BvbnNlIHRvIGFuIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgaW50ZXJhY3Rpb24gdG9rZW4gdG8gdXNlLCBwcm92aWRlZCBpbiB0aGUgb3JpZ2luYWwgaW50ZXJhY3Rpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSByZXNwb25zZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVbmxpa2UgYGVkaXRNZXNzYWdlKClgLCB0aGlzIGVuZHBvaW50IGFsbG93cyB0aGUgYm90IHVzZXIgdG8gYWN0IHdpdGhvdXQgbmVlZGluZyB0byBzZWUgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgaXMgaW4uXG4gICAqXG4gICAqIERvZXMgbm90IHN1cHBvcnQgZXBoZW1lcmFsIGZvbGxvdy11cCBtZXNzYWdlcyBkdWUgdG8gdGhlc2UgYmVpbmcgc3RhdGVsZXNzLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFVwZGF0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9yZWNlaXZpbmctYW5kLXJlc3BvbmRpbmcjZWRpdC1vcmlnaW5hbC1pbnRlcmFjdGlvbi1yZXNwb25zZX1cbiAgICovXG4gIGVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6ICh0b2tlbjogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgdm9pY2Ugc3RhdGUgb2YgdGhlIGJvdCB1c2VyLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgaW4gd2hpY2ggdG8gZWRpdCB0aGUgdm9pY2Ugc3RhdGUgb2YgdGhlIGJvdCB1c2VyLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgdm9pY2Ugc3RhdGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSB7QGxpbmsgRWRpdE93blZvaWNlU3RhdGUuY2hhbm5lbElkIHwgY2hhbm5lbElkfSBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBvYmplY3QgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gYSBzdGFnZSBjaGFubmVsLCBhbmQgdGhlIGJvdCB1c2VyIG11c3QgYWxyZWFkeSBoYXZlIGpvaW5lZCBpdC5cbiAgICpcbiAgICogSWYgYXR0ZW1wdGluZyB0byB1bm11dGUgb25lc2VsZjpcbiAgICogLSBSZXF1aXJlcyB0aGUgYE1VVEVfTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgYXR0ZW1wdGluZyB0byByZXF1ZXN0IHRvIHNwZWFrOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgUkVRVUVTVF9UT19TUEVBS2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3ZvaWNlI21vZGlmeS1jdXJyZW50LXVzZXItdm9pY2Utc3RhdGV9XG4gICAqL1xuICBlZGl0T3duVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdE93blZvaWNlU3RhdGUpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEVkaXRzIGEgcm9sZSBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZWRpdCB0aGUgcm9sZSBpbi5cbiAgICogQHBhcmFtIHJvbGVJZCAtIFRoZSBJRCBvZiB0aGUgcm9sZSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgcm9sZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkUm9sZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBSb2xlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21vZGlmeS1ndWlsZC1yb2xlfVxuICAgKi9cbiAgZWRpdFJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0R3VpbGRSb2xlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFJvbGU+PlxuICAvKipcbiAgICogRWRpdHMgdGhlIHBvc2l0aW9ucyBvZiBhIHNldCBvZiByb2xlcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHJvbGUgcG9zaXRpb25zIGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgcm9sZSBwb3NpdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkUm9sZX0gb2JqZWN0cyBhc3NvcnRlZCBieSByb2xlIElELlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgUm9sZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IHJvbGUgaW1wYWN0ZWQgaW4gdGhpcyBjaGFuZ2UuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktZ3VpbGQtcm9sZS1wb3NpdGlvbnN9XG4gICAqL1xuICBlZGl0Um9sZVBvc2l0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5Um9sZVBvc2l0aW9uc1tdLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFJvbGU+W10+XG4gIC8qKlxuICAgKiBFZGl0cyBhIHNjaGVkdWxlZCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHNjaGVkdWxlZCBldmVudCBpbi5cbiAgICogQHBhcmFtIGV2ZW50SWQgLSBUaGUgSUQgb2YgdGhlIHNjaGVkdWxlZCBldmVudCB0byBlZGl0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIERpc2NvcmRTY2hlZHVsZWRFdmVudH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0VWRU5UU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogVG8gc3RhcnQgb3IgZW5kIGFuIGV2ZW50LCBtb2RpZnkgdGhlIGV2ZW50J3MgYHN0YXR1c2AgcHJvcGVydHkuXG4gICAqXG4gICAqIFRoZSBgZW50aXR5X21ldGFkYXRhYCBwcm9wZXJ0eSBpcyBkaXNjYXJkZWQgZm9yIGV2ZW50cyB3aG9zZSBgZW50aXR5X3R5cGVgIGlzIG5vdCB7QGxpbmsgU2NoZWR1bGVkRXZlbnRFbnRpdHlUeXBlfS5FeHRlcm5hbC5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgU2NoZWR1bGVkIEV2ZW50IFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXNjaGVkdWxlZC1ldmVudCNtb2RpZnktZ3VpbGQtc2NoZWR1bGVkLWV2ZW50fVxuICAgKi9cbiAgZWRpdFNjaGVkdWxlZEV2ZW50OiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGV2ZW50SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEVkaXRTY2hlZHVsZWRFdmVudD4sXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFNjaGVkdWxlZEV2ZW50Pj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgc3RhZ2UgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHN0YWdlIGNoYW5uZWwgdGhlIHN0YWdlIGluc3RhbmNlIGlzIGFzc29jaWF0ZWQgd2l0aC5cbiAgICogQHBhcmFtIHRvcGljIC0gVG9waWMgb2YgdGhlIFN0YWdlIGluc3RhbmNlICgxLTEyMCBjaGFyYWN0ZXJzKS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgdXBkYXRlZCB7QGxpbmsgRGlzY29yZFN0YWdlSW5zdGFuY2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgdXNlciB0byBiZSBhIG1vZGVyYXRvciBvZiB0aGUgc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogRmlyZXMgYSBfU3RhZ2UgSW5zdGFuY2UgVXBkYXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0YWdlLWluc3RhbmNlI21vZGlmeS1zdGFnZS1pbnN0YW5jZX1cbiAgICovXG4gIGVkaXRTdGFnZUluc3RhbmNlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHRvcGljOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU3RhZ2VJbnN0YW5jZT4+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgdm9pY2Ugc3RhdGUgb2YgYW5vdGhlciB1c2VyLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgaW4gd2hpY2ggdG8gZWRpdCB0aGUgdm9pY2Ugc3RhdGUgb2YgdGhlIGJvdCB1c2VyLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgdm9pY2Ugc3RhdGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSB7QGxpbmsgRWRpdE93blZvaWNlU3RhdGUuY2hhbm5lbElkIHwgY2hhbm5lbElkfSBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBvYmplY3QgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gYSBzdGFnZSBjaGFubmVsLCBhbmQgdGhlIHVzZXIgbXVzdCBhbHJlYWR5IGhhdmUgam9pbmVkIGl0LlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYE1VVEVfTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3ZvaWNlI21vZGlmeS11c2VyLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgZWRpdFVzZXJWb2ljZVN0YXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0VXNlclZvaWNlU3RhdGUpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEVkaXQgdGhlIGN1cnJlbnQgdXNlciBhcHBsaWNhdGlvbiByb2xlIGNvbm5lY3Rpb24gZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gVGhlIGFjY2VzcyB0b2tlbiBvZiB0aGUgdXNlclxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZWRpdCB0aGUgcm9sZSBjb25uZWN0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gZWRpdFxuICAgKiBAcmV0dXJucyB7RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb259XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgcmVxdWlyZXMgdGhlIGByb2xlX2Nvbm5lY3Rpb25zLndyaXRlYCBzY29wZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3VzZXIjdXBkYXRlLXVzZXItYXBwbGljYXRpb24tcm9sZS1jb25uZWN0aW9ufVxuICAgKi9cbiAgZWRpdFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uOiAoXG4gICAgYmVhcmVyVG9rZW46IHN0cmluZyxcbiAgICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+LFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+PlxuICAvKipcbiAgICogRWRpdHMgYSB3ZWJob29rLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGVkaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZFdlYmhvb2t9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9XRUJIT09LU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfV2ViaG9va3MgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNlZGl0LXdlYmhvb2t9XG4gICAqL1xuICBlZGl0V2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlXZWJob29rLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFdlYmhvb2s+PlxuICAvKipcbiAgICogRWRpdHMgYSB3ZWJob29rIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZWRpdCB0aGUgbWVzc2FnZSBvZi5cbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHdlYmhvb2sgdG9rZW4sIHVzZWQgdG8gZWRpdCB0aGUgbWVzc2FnZS5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZWRpdC13ZWJob29rLW1lc3NhZ2V9XG4gICAqL1xuICBlZGl0V2ViaG9va01lc3NhZ2U6IChcbiAgICB3ZWJob29rSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IEVkaXRXZWJob29rTWVzc2FnZU9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBFZGl0cyBhIHdlYmhvb2sgdXNpbmcgdGhlIHdlYmhvb2sgdG9rZW4sIHRoZXJlYnkgYnlwYXNzaW5nIHRoZSBuZWVkIGZvciBhdXRoZW50aWNhdGlvbiArIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGVkaXQuXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB3ZWJob29rIHRva2VuLCB1c2VkIHRvIGVkaXQgdGhlIHdlYmhvb2suXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIERpc2NvcmRXZWJob29rfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfV0VCSE9PS1NgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX1dlYmhvb2tzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjbW9kaWZ5LXdlYmhvb2std2l0aC10b2tlbn1cbiAgICovXG4gIGVkaXRXZWJob29rV2l0aFRva2VuOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IE9taXQ8TW9kaWZ5V2ViaG9vaywgJ2NoYW5uZWxJZCc+KSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWJob29rPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgZ3VpbGQncyB3ZWxjb21lIHNjcmVlbi5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHdlbGNvbWUgc2NyZWVuIG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgd2VsY29tZSBzY3JlZW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZFdlbGNvbWVTY3JlZW59LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbW9kaWZ5LWd1aWxkLXdlbGNvbWUtc2NyZWVufVxuICAgKi9cbiAgZWRpdFdlbGNvbWVTY3JlZW46IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkV2VsY29tZVNjcmVlbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWxjb21lU2NyZWVuPj5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBzZXR0aW5ncyBvZiBhIGd1aWxkJ3Mgd2lkZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgdGhlIHdpZGdldCBvZi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5nc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktZ3VpbGQtd2lkZ2V0fVxuICAgKi9cbiAgZWRpdFdpZGdldFNldHRpbmdzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRHdWlsZFdpZGdldFNldHRpbmdzPixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5ncz4+XG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIHdlYmhvb2ssIGNhdXNpbmcgYSBtZXNzYWdlIHRvIGJlIHBvc3RlZCBpbiB0aGUgY2hhbm5lbCBjb25maWd1cmVkIGZvciB0aGUgd2ViaG9vay5cbiAgICpcbiAgICogQHBhcmFtIHdlYmhvb2tJZCAtIFRoZSBJRCBvZiB0aGUgd2ViaG9vayB0byBleGVjdXRlLlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgd2ViaG9vayB0b2tlbiwgdXNlZCB0byBleGVjdXRlIHRoZSB3ZWJob29rLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSB3ZWJob29rLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LCBvciBgdW5kZWZpbmVkYCBpZiB0aGUge0BsaW5rIEV4ZWN1dGVXZWJob29rLndhaXQgfCB3YWl0fSBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBvYmplY3QgcGFyYW1ldGVyIGlzIHNldCB0byBgZmFsc2VgLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiB0aGUgd2ViaG9vayBjaGFubmVsIGlzIGEgZm9ydW0gY2hhbm5lbCwgeW91IG11c3QgcHJvdmlkZSBhIHZhbHVlIGZvciBlaXRoZXIgYHRocmVhZElkYCBvciBgdGhyZWFkTmFtZWAuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2V4ZWN1dGUtd2ViaG9va31cbiAgICovXG4gIGV4ZWN1dGVXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IEV4ZWN1dGVXZWJob29rKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZXNzYWdlPiB8IHVuZGVmaW5lZD5cbiAgLyoqXG4gICAqIEZvbGxvd3MgYW4gYW5ub3VuY2VtZW50IGNoYW5uZWwsIGFsbG93aW5nIG1lc3NhZ2VzIHBvc3RlZCB3aXRoaW4gaXQgdG8gYmUgY3Jvc3MtcG9zdGVkIGludG8gdGhlIHRhcmdldCBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlQ2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBhbm5vdW5jZW1lbnQgY2hhbm5lbCB0byBmb2xsb3cuXG4gICAqIEBwYXJhbSB0YXJnZXRDaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHRhcmdldCBjaGFubmVsIC0gdGhlIGNoYW5uZWwgdG8gY3Jvc3MtcG9zdCB0by5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEZvbGxvd2VkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uIGluIHRoZSBfX3RhcmdldCBjaGFubmVsX18uXG4gICAqXG4gICAqIEZpcmVzIGEgX1dlYmhvb2tzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZm9sbG93LWFubm91bmNlbWVudC1jaGFubmVsfVxuICAgKi9cbiAgZm9sbG93QW5ub3VuY2VtZW50OiAoc291cmNlQ2hhbm5lbElkOiBCaWdTdHJpbmcsIHRhcmdldENoYW5uZWxJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEZvbGxvd2VkQ2hhbm5lbD4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGFsbCBhY3RpdmUgdGhyZWFkcyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgdGhyZWFkcyBvZi5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRMaXN0QWN0aXZlVGhyZWFkc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJldHVybnMgYm90aCBwdWJsaWMgYW5kIHByaXZhdGUgdGhyZWFkcy5cbiAgICpcbiAgICogVGhyZWFkcyBhcmUgb3JkZXJlZCBieSB0aGUgYGlkYCBwcm9wZXJ0eSBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbGlzdC1hY3RpdmUtZ3VpbGQtdGhyZWFkc31cbiAgICovXG4gIGdldEFjdGl2ZVRocmVhZHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExpc3RBY3RpdmVUaHJlYWRzPj5cbiAgLyoqIEdldCB0aGUgYXBwbGljYXRpb25zIGluZm8gKi9cbiAgZ2V0QXBwbGljYXRpb25JbmZvOiAoKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbj4+XG4gIC8qKlxuICAgKiBFZGl0IHByb3BlcnRpZXMgb2YgdGhlIGFwcCBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3RpbmcgYm90IHVzZXIuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIE9ubHkgcHJvcGVydGllcyB0aGF0IGFyZSBwYXNzZWQgd2lsbCBiZSB1cGRhdGVkLlxuICAgKi9cbiAgZWRpdEFwcGxpY2F0aW9uSW5mbzogKGJvZHk6IEVkaXRBcHBsaWNhdGlvbikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb24+PlxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IGF1dGhlbnRpY2F0aW9uIGluZm8gZm9yIHRoZSBhdXRoZW50aWNhdGVkIHVzZXJcbiAgICpcbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gQW55IE9BdXRoMiBkZXJpdmVkIGFjY2VzcyB0b2tlblxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEN1cnJlbnRBdXRob3JpemF0aW9ufVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGUgdXNlciBvYmplY3QgaXMgbm90IGRlZmluZWQgaWYgdGhlIHNjb3BlcyBkbyBub3QgaW5jbHVkZSBgaWRlbnRpZnlgLlxuICAgKiBJbiB0aGUgdXNlciBvYmplY3QsIGlmIGRlZmluZWQsIHRoZSBlbWFpbCBpcyBub3QgaW5jbHVkZWQgaWYgdGhlIHNjb3BlcyBkbyBub3QgaW5jbHVkZSBgZW1haWxgXG4gICAqL1xuICBnZXRDdXJyZW50QXV0aGVudGljYXRpb25JbmZvOiAoYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQ3VycmVudEF1dGhvcml6YXRpb24+PlxuICAvKipcbiAgICogRXhjaGFuZ2UgdGhlIGluZm9ybWF0aW9uIHRvIGdldCBhIE9BdXRoMiBhY2Nlc3NUb2tlbiB0b2tlblxuICAgKlxuICAgKiBAcGFyYW0gY2xpZW50SWQgLSBBcHBsaWNhdGlvbidzIGNsaWVudCBpZFxuICAgKiBAcGFyYW0gY2xpZW50U2VjcmV0IC0gYXBwbGljYXRpb24ncyBjbGllbnQgc2VjcmV0XG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gbWFrZSB0aGUgZXhjaGFuZ2Ugd2l0aCBkaXNjb3JkXG4gICAqL1xuICBleGNoYW5nZVRva2VuOiAoY2xpZW50SWQ6IEJpZ1N0cmluZywgY2xpZW50U2VjcmV0OiBzdHJpbmcsIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRUb2tlbkV4Y2hhbmdlPikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQWNjZXNzVG9rZW5SZXNwb25zZT4+XG4gIC8qKlxuICAgKiBSZXZva2UgYW4gYWNjZXNzX3Rva2VuXG4gICAqXG4gICAqIEBwYXJhbSBjbGllbnRJZCAtIEFwcGxpY2F0aW9uJ3MgY2xpZW50IGlkXG4gICAqIEBwYXJhbSBjbGllbnRTZWNyZXQgLSBhcHBsaWNhdGlvbidzIGNsaWVudCBzZWNyZXRcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byByZXZva2UgdGhlIGFjY2Vzc190b2tlblxuICAgKi9cbiAgcmV2b2tlVG9rZW46IChjbGllbnRJZDogQmlnU3RyaW5nLCBjbGllbnRTZWNyZXQ6IHN0cmluZywgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZFRva2VuUmV2b2NhdGlvbj4pID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBlcm1pc3Npb25zIG9mIGEgZ3VpbGQgYXBwbGljYXRpb24gY29tbWFuZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRoZSBjb21tYW5kIGlzIHJlZ2lzdGVyZWQgaW4uXG4gICAqIEBwYXJhbSBjb21tYW5kSWQgLSBUaGUgSUQgb2YgdGhlIGNvbW1hbmQgdG8gZ2V0IHRoZSBwZXJtaXNzaW9ucyBvZi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgT0F1dGgyIHJlbGF0ZWQgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZW4gc3BlY2lmeWluZyB0aGUgb3B0aW9ucyBvYmplY3QgdGhlIGFjY2VzcyB0b2tlbiBwYXNzZWQtaW4gcmVxdWlyZXMgdGhlIE9BdXRoMiBzY29wZSBgYXBwbGljYXRpb25zLmNvbW1hbmRzLnBlcm1pc3Npb25zLnVwZGF0ZWBcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2dldC1hcHBsaWNhdGlvbi1jb21tYW5kLXBlcm1pc3Npb25zfVxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbjogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbk9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucz4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwZXJtaXNzaW9ucyBvZiBhbGwgYXBwbGljYXRpb24gY29tbWFuZHMgcmVnaXN0ZXJlZCBpbiBhIGd1aWxkIGJ5IHRoZSBJRCBvZiB0aGUgZ3VpbGQgYW5kIG9wdGlvbmFsbHkgYW4gZXh0ZXJuYWwgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHBlcm1pc3Npb25zIG9iamVjdHMgb2YuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIE9BdXRoMiByZWxhdGVkIG9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSBlbmRwb2ludFxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zfSBvYmplY3RzIGFzc29ydGVkIGJ5IGNvbW1hbmQgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZW4gc3BlY2lmeWluZyB0aGUgb3B0aW9ucyBvYmplY3QgdGhlIGFjY2VzcyB0b2tlbiBwYXNzZWQtaW4gcmVxdWlyZXMgdGhlIE9BdXRoMiBzY29wZSBgYXBwbGljYXRpb25zLmNvbW1hbmRzLnBlcm1pc3Npb25zLnVwZGF0ZWBcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2dldC1ndWlsZC1hcHBsaWNhdGlvbi1jb21tYW5kLXBlcm1pc3Npb25zfVxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25PcHRpb25zLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM+W10+XG4gIC8qKlxuICAgKiBHZXRzIGEgZ3VpbGQncyBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGF1ZGl0IGxvZyBvZi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQXVkaXRMb2d9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFZJRVdfQVVESVRfTE9HYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvYXVkaXQtbG9nI2dldC1ndWlsZC1hdWRpdC1sb2d9XG4gICAqL1xuICBnZXRBdWRpdExvZzogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEd1aWxkQXVkaXRMb2cpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEF1ZGl0TG9nPj5cbiAgLyoqXG4gICAqIEdldHMgYW4gYXV0b21vZCBydWxlIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgcnVsZSBvZi5cbiAgICogQHBhcmFtIHJ1bGVJZCAtIFRoZSBJRCBvZiB0aGUgcnVsZSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQXV0b01vZGVyYXRpb25SdWxlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9hdXRvLW1vZGVyYXRpb24jZ2V0LWF1dG8tbW9kZXJhdGlvbi1ydWxlfVxuICAgKi9cbiAgZ2V0QXV0b21vZFJ1bGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJ1bGVJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGU+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBhdXRvbW9kIHJ1bGVzIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBydWxlcyBmcm9tLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGV9IG9iamVjdHMgYXNzb3J0ZWQgYnkgcnVsZSBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9hdXRvLW1vZGVyYXRpb24jbGlzdC1hdXRvLW1vZGVyYXRpb24tcnVsZXMtZm9yLWd1aWxkfVxuICAgKi9cbiAgZ2V0QXV0b21vZFJ1bGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGU+W10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB2b2ljZSByZWdpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRWb2ljZVJlZ2lvbn0gb2JqZWN0cyBhc3NvcnRlZCBieSB2b2ljZSByZWdpb24gSUQuXG4gICAqL1xuICBnZXRBdmFpbGFibGVWb2ljZVJlZ2lvbnM6ICgpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFZvaWNlUmVnaW9uPltdPlxuICAvKipcbiAgICogR2V0cyBhIGJhbiBieSB1c2VyIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBiYW4gZnJvbS5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBnZXQgdGhlIGJhbiBmb3IuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQmFufS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBCQU5fTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1iYW59XG4gICAqL1xuICBnZXRCYW46IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRCYW4+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBiYW5zIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaXN0IG9mIGJhbnMgZm9yLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIGxpc3Qgb2YgYmFucy5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkQmFufSBvYmplY3RzIGFzc29ydGVkIGJ5IHVzZXIgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQkFOX01FTUJFUlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFVzZXJzIGFyZSBvcmRlcmVkIGJ5IHRoZWlyIElEcyBpbiBfYXNjZW5kaW5nXyBvcmRlci5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1iYW5zfVxuICAgKi9cbiAgZ2V0QmFuczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEJhbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEJhbj5bXT5cbiAgLyoqXG4gICAqIEdldHMgYSBjaGFubmVsIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHRoZSBjaGFubmVsIGlzIGEgdGhyZWFkLCBhIHtAbGluayBEaXNjb3JkVGhyZWFkTWVtYmVyfSBvYmplY3QgaXMgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZ2V0LWNoYW5uZWx9XG4gICAqL1xuICBnZXRDaGFubmVsOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZENoYW5uZWw+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBpbnZpdGVzIGZvciBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0IHRoZSBpbnZpdGVzIG9mLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRJbnZpdGVNZXRhZGF0YX0gb2JqZWN0cyBhc3NvcnRlZCBieSBpbnZpdGUgY29kZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfQ0hBTk5FTFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIE9ubHkgdXNhYmxlIGZvciBndWlsZCBjaGFubmVscy5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZ2V0LWNoYW5uZWwtaW52aXRlc31cbiAgICovXG4gIGdldENoYW5uZWxJbnZpdGVzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEludml0ZU1ldGFkYXRhPltdPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBjaGFubmVscyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgY2hhbm5lbHMgb2YuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZENoYW5uZWx9IG9iamVjdHMgYXNzb3J0ZWQgYnkgY2hhbm5lbCBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRXhjbHVkZXMgdGhyZWFkcy5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1jaGFubmVsc31cbiAgICovXG4gIGdldENoYW5uZWxzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDaGFubmVsPltdPlxuICAvKipcbiAgICogR2V0cyBhIGxpc3Qgb2Ygd2ViaG9va3MgZm9yIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB3aGljaCB0byBnZXQgdGhlIHdlYmhvb2tzIG9mLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRXZWJob29rfSBvYmplY3RzIGFzc29ydGVkIGJ5IHdlYmhvb2sgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNnZXQtY2hhbm5lbC13ZWJob29rc31cbiAgICovXG4gIGdldENoYW5uZWxXZWJob29rczogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWJob29rPltdPlxuICAvKipcbiAgICogR2V0cyBvciBjcmVhdGVzIGEgRE0gY2hhbm5lbCB3aXRoIGEgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBjcmVhdGUgdGhlIERNIGNoYW5uZWwgd2l0aC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRDaGFubmVsfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3VzZXIjY3JlYXRlLWRtfVxuICAgKi9cbiAgZ2V0RG1DaGFubmVsOiAodXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZENoYW5uZWw+PlxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGdyb3VwIERNIGNoYW5uZWwgd2l0aCBtdWx0aXBsZSB1c2Vycy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgY3JlYXRlIGEgbmV3IGdyb3VwIGRtXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSBhY2Nlc3MgdG9rZW5zIHJlcXVpcmUgdG8gaGF2ZSB0aGUgYGdkbS5qb2luYCBzY29wZVxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGlzIGxpbWl0ZWQgdG8gMTAgYWN0aXZlIGdyb3VwIERNcy5cbiAgICpcbiAgICogRmlyZXMgYSBfQ2hhbm5lbCBjcmVhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy91c2VyI2NyZWF0ZS1ncm91cC1kbX1cbiAgICovXG4gIGdldEdyb3VwRG1DaGFubmVsOiAob3B0aW9uczogQ3JlYXRlR3JvdXBEbU9wdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZENoYW5uZWw+PlxuICAvKipcbiAgICogR2V0cyBhbiBlbW9qaSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBmcm9tIHdoaWNoIHRvIGdldCB0aGUgZW1vamkuXG4gICAqIEBwYXJhbSBlbW9qaUlkIC0gVGhlIElEIG9mIHRoZSBlbW9qaSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkRW1vaml9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJbmNsdWRlcyB0aGUgYHVzZXJgIGZpZWxkIGlmIHRoZSBib3QgaGFzIHRoZSBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLFxuICAgKiBvciBpZiB0aGUgYm90IGNyZWF0ZWQgdGhlIGVtb2ppIGFuZCBoYXMgdGhlIHRoZSBgQ1JFQVRFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjZ2V0LWd1aWxkLWVtb2ppfVxuICAgKi9cbiAgZ2V0RW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIGVtb2ppSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkRW1vamk+PlxuICAvKipcbiAgICogR2V0cyBhbiBhcHBsaWNhdGlvbiBlbW9qaSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBlbW9qaUlkIC0gVGhlIElEIG9mIHRoZSBlbW9qaSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkRW1vaml9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBBbHdheXMgaW5jbHVkZXMgdGhlIGB1c2VyYCBvYmplY3QgZm9yIHRoZSB0ZWFtIG1lbWJlciB0aGF0IHVwbG9hZGVkIHRoZSBlbW9qaSBmcm9tIHRoZSBhcHAncyBzZXR0aW5ncywgb3IgZm9yIHRoZSBib3QgdXNlciBpZiB1cGxvYWRlZCB1c2luZyB0aGUgQVBJLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjZ2V0LWFwcGxpY2F0aW9uLWVtb2ppfVxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb25FbW9qaTogKGVtb2ppSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkRW1vamk+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBlbW9qaXMgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB3aGljaCB0byBnZXQgdGhlIGVtb2ppcyBvZi5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkRW1vaml9IG9iamVjdHMgYXNzb3J0ZWQgYnkgZW1vamkgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEluY2x1ZGVzIGB1c2VyYCBmaWVsZHMgaWYgdGhlIGJvdCBoYXMgdGhlIGBDUkVBVEVfR1VJTERfRVhQUkVTU0lPTlNgIG9yIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNsaXN0LWd1aWxkLWVtb2ppc31cbiAgICovXG4gIGdldEVtb2ppczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkRW1vamk+W10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGVtb2ppcyBmb3IgYW4gYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHRoZSBhcnJheSBvZiB7QGxpbmsgRGlzY29yZEVtb2ppfSBvYmplY3RzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBBbHdheXMgaW5jbHVkZXMgdGhlIGB1c2VyYCBvYmplY3QgZm9yIHRoZSB0ZWFtIG1lbWJlciB0aGF0IHVwbG9hZGVkIHRoZSBlbW9qaSBmcm9tIHRoZSBhcHAncyBzZXR0aW5ncywgb3IgZm9yIHRoZSBib3QgdXNlciBpZiB1cGxvYWRlZCB1c2luZyB0aGUgQVBJLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjbGlzdC1hcHBsaWNhdGlvbi1lbW9qaXN9XG4gICAqL1xuICBnZXRBcHBsaWNhdGlvbkVtb2ppczogKCkgPT4gUHJvbWlzZTx7IGl0ZW1zOiBDYW1lbGl6ZTxEaXNjb3JkRW1vamk+W10gfT5cbiAgLyoqXG4gICAqIEdldHMgYSBmb2xsb3ctdXAgbWVzc2FnZSB0byBhbiBpbnRlcmFjdGlvbiBieSB0aGUgSUQgb2YgdGhlIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVubGlrZSBgZ2V0TWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0OlxuICAgKiAtIE5lZWRpbmcgdG8gYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIHRoYXQgdGhlIG1lc3NhZ2UgaXMgaW4uIChgUkVBRF9NRVNTQUdFU2AgcGVybWlzc2lvbi4pXG4gICAqIC0gUmVxdWlyaW5nIHRoZSBgTUVTU0FHRV9DT05URU5UYCBpbnRlbnQuXG4gICAqXG4gICAqIERvZXMgbm90IHN1cHBvcnQgZXBoZW1lcmFsIGZvbGxvdy11cCBtZXNzYWdlcyBkdWUgdG8gdGhlc2UgYmVpbmcgc3RhdGVsZXNzLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvcmVjZWl2aW5nLWFuZC1yZXNwb25kaW5nI2dldC1mb2xsb3d1cC1tZXNzYWdlfVxuICAgKi9cbiAgZ2V0Rm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lc3NhZ2U+PlxuICAvKiogR2V0IHRoZSBib3RzIEdhdGV3YXkgbWV0YWRhdGEgdGhhdCBjYW4gaGVscCBkdXJpbmcgdGhlIG9wZXJhdGlvbiBvZiBsYXJnZSBvciBzaGFyZGVkIGJvdHMuICovXG4gIGdldEdhdGV3YXlCb3Q6ICgpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+PlxuICAvKipcbiAgICogR2V0cyBhIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmRJZCAtIFRoZSBJRCBvZiB0aGUgY29tbWFuZCB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2dldC1nbG9iYWwtYXBwbGljYXRpb24tY29tbWFuZH1cbiAgICovXG4gIGdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiB5b3VyIGJvdCdzIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kcy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kc1xuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmR9IG9iamVjdHMgYXNzb3J0ZWQgYnkgY29tbWFuZCBJRC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2dldC1nbG9iYWwtYXBwbGljYXRpb24tY29tbWFuZHN9XG4gICAqL1xuICBnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzOiAob3B0aW9ucz86IEdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHNPcHRpb25zKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+W10+XG4gIC8qKlxuICAgKiBHZXRzIGEgZ3VpbGQgYnkgaXRzIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIGd1aWxkLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEd1aWxkfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZH1cbiAgICovXG4gIGdldEd1aWxkOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogeyBjb3VudHM/OiBib29sZWFuIH0pID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEd1aWxkPj5cbiAgLyoqXG4gICAqIEdldCB0aGUgdXNlciBndWlsZHMuXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXIsIGlmIHVuc3BlY2lmaWVkIHRoZSBib3QgdG9rZW4gaXMgdXNlZCBpbnN0ZWFkXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgZ3VpbGQuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHBhcnRpYWwge0BsaW5rIERpc2NvcmRHdWlsZH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHVzZWQgd2l0aCBhbiBhY2Nlc3MgdG9rZW4sIHRoZSB0b2tlbiBuZWVkcyB0byBoYXZlIHRoZSBgZ3VpbGRzYCBzY29wZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvdXNlciNnZXQtY3VycmVudC11c2VyLWd1aWxkc31cbiAgICovXG4gIGdldEd1aWxkczogKGJlYXJlclRva2VuPzogc3RyaW5nLCBvcHRpb25zPzogR2V0VXNlckd1aWxkcykgPT4gUHJvbWlzZTxQYXJ0aWFsPENhbWVsaXplPERpc2NvcmRHdWlsZD4+W10+XG4gIC8qKlxuICAgKiBHZXRzIGEgZ3VpbGQgYXBwbGljYXRpb24gY29tbWFuZCBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgY29tbWFuZCBpcyByZWdpc3RlcmVkIGluLlxuICAgKiBAcGFyYW0gY29tbWFuZElkIC0gVGhlIElEIG9mIHRoZSBjb21tYW5kIHRvIGdldC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmR9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjZ2V0LWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZD4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGFwcGxpY2F0aW9uIGNvbW1hbmRzIHJlZ2lzdGVyZWQgYnkgeW91ciBib3QgaW4gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRoZSBjb21tYW5kcyBhcmUgcmVnaXN0ZXJlZCBpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIGd1aWxkIGFwcGxpY2F0aW9uIGNvbW1hbmRzXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZH0gb2JqZWN0cyBhc3NvcnRlZCBieSBjb21tYW5kIElELlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjZ2V0LWdsb2JhbC1hcHBsaWNhdGlvbi1jb21tYW5kc3N9XG4gICAqL1xuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHNPcHRpb25zKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+W10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwcmV2aWV3IG9mIGEgZ3VpbGQgYnkgYSBndWlsZCdzIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBwcmV2aWV3IG9mLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEd1aWxkUHJldmlld30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHRoZSBib3QgdXNlciBpcyBub3QgaW4gdGhlIGd1aWxkLCB0aGUgZ3VpbGQgbXVzdCBiZSBkaXNjb3ZlcmFibGUuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtcHJldmlld31cbiAgICovXG4gIGdldEd1aWxkUHJldmlldzogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR3VpbGRQcmV2aWV3Pj5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdGlja2VyIG9iamVjdCBmb3IgdGhlIGdpdmVuIGd1aWxkIGFuZCBzdGlja2VyIElEcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXRcbiAgICogQHBhcmFtIHN0aWNrZXJJZCBUaGUgSUQgb2YgdGhlIHN0aWNrZXIgdG8gZ2V0XG4gICAqIEByZXR1cm4gQSB7QGxpbmsgRGlzY29yZFN0aWNrZXJ9XG4gICAqXG4gICAqIEByZW1hcmtzIEluY2x1ZGVzIHRoZSB1c2VyIGZpZWxkIGlmIHRoZSBib3QgaGFzIHRoZSBgQ1JFQVRFX0dVSUxEX0VYUFJFU1NJT05TYCBvciBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvc3RpY2tlciNnZXQtZ3VpbGQtc3RpY2tlcn1cbiAgICovXG4gIGdldEd1aWxkU3RpY2tlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgc3RpY2tlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFN0aWNrZXI+PlxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBzdGlja2VyIG9iamVjdHMgZm9yIHRoZSBnaXZlbiBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXRcbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkU3RpY2tlcn0gb2JqZWN0cyBhc3NvcnRlZCBieSBzdGlja2VyIElELlxuICAgKlxuICAgKiBAcmVtYXJrcyBJbmNsdWRlcyB1c2VyIGZpZWxkcyBpZiB0aGUgYm90IGhhcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjbGlzdC1ndWlsZC1zdGlja2Vyc31cbiAgICovXG4gIGdldEd1aWxkU3RpY2tlcnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFN0aWNrZXI+W10+XG4gIC8qKlxuICAgKiBHZXRzIGEgdGVtcGxhdGUgYnkgaXRzIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZUNvZGUgLSBUaGUgY29kZSBvZiB0aGUgdGVtcGxhdGUgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZFRlbXBsYXRlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC10ZW1wbGF0ZSNnZXQtZ3VpbGQtdGVtcGxhdGV9XG4gICAqL1xuICBnZXRHdWlsZFRlbXBsYXRlOiAodGVtcGxhdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFRlbXBsYXRlPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgdGVtcGxhdGVzIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaXN0IG9mIHRlbXBsYXRlcyBmb3IuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZFRlbXBsYXRlfSBvYmplY3RzIGFzc29ydGVkIGJ5IHRlbXBsYXRlIGNvZGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtdGVtcGxhdGUjZ2V0LWd1aWxkLXRlbXBsYXRlc31cbiAgICovXG4gIGdldEd1aWxkVGVtcGxhdGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRUZW1wbGF0ZT5bXT5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2Ygd2ViaG9va3MgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpc3Qgb2Ygd2ViaG9va3MgZm9yLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRXZWJob29rfSBvYmplY3RzIGFzc29ydGVkIGJ5IHdlYmhvb2sgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNnZXQtZ3VpbGQtd2ViaG9va3N9XG4gICAqL1xuICBnZXRHdWlsZFdlYmhvb2tzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWJob29rPltdPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBpbnRlZ3JhdGlvbnMgYXR0YWNoZWQgdG8gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGlzdCBvZiBpbnRlZ3JhdGlvbnMgZnJvbS5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkSW50ZWdyYXRpb259IG9iamVjdHMgYXNzb3J0ZWQgYnkgaW50ZWdyYXRpb24gSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLWludGVncmF0aW9uc31cbiAgICovXG4gIGdldEludGVncmF0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkSW50ZWdyYXRpb24+W10+XG4gIC8qKlxuICAgKiBHZXRzIGFuIGludml0ZSB0byBhIGNoYW5uZWwgYnkgaXRzIGludml0ZSBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gaW52aXRlQ29kZSAtIFRoZSBpbnZpdGUgY29kZSBvZiB0aGUgaW52aXRlIHRvIGdldC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBpbnZpdGUuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkSW52aXRlTWV0YWRhdGF9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvaW52aXRlI2dldC1pbnZpdGV9XG4gICAqL1xuICBnZXRJbnZpdGU6IChpbnZpdGVDb2RlOiBzdHJpbmcsIG9wdGlvbnM/OiBHZXRJbnZpdGUpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEludml0ZU1ldGFkYXRhPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgaW52aXRlcyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgaW52aXRlcyBmcm9tLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRJbnZpdGVNZXRhZGF0YX0gb2JqZWN0cyBhc3NvcnRlZCBieSBpbnZpdGUgY29kZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9pbnZpdGUjZ2V0LWludml0ZXN9XG4gICAqL1xuICBnZXRJbnZpdGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRJbnZpdGVNZXRhZGF0YT5bXT5cbiAgLyoqXG4gICAqIEdldHMgYSBtZXNzYWdlIGZyb20gYSBjaGFubmVsIGJ5IHRoZSBJRCBvZiB0aGUgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCBmcm9tIHdoaWNoIHRvIGdldCB0aGUgbWVzc2FnZS5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoYXQgdGhlIGJvdCB1c2VyIGJlIGFibGUgdG8gc2VlIHRoZSBjb250ZW50cyBvZiB0aGUgY2hhbm5lbCBpbiB3aGljaCB0aGUgbWVzc2FnZSB3YXMgcG9zdGVkLlxuICAgKlxuICAgKiBJZiBnZXR0aW5nIGEgbWVzc2FnZSBmcm9tIGEgZ3VpbGQgY2hhbm5lbDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNnZXQtY2hhbm5lbC1tZXNzYWdlfVxuICAgKi9cbiAgZ2V0TWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBHZXRzIG11bHRpcGxlIG1lc3NhZ2VzIGZyb20gYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIGZyb20gd2hpY2ggdG8gZ2V0IHRoZSBtZXNzYWdlcy5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBtZXNzYWdlcy5cbiAgICogQHJldHVybnMgUmV0dXJucyBhbiBhcnJheSBvZiB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9IG9iamVjdHMgZnJvbSBuZXdlc3QgdG8gb2xkZXN0IG9uIHN1Y2Nlc3MuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoYXQgdGhlIGJvdCB1c2VyIGJlIGFibGUgdG8gc2VlIHRoZSBjb250ZW50cyBvZiB0aGUgY2hhbm5lbCBpbiB3aGljaCB0aGUgbWVzc2FnZXMgd2VyZSBwb3N0ZWQuXG4gICAqXG4gICAqIElmIGdldHRpbmcgYSBtZXNzYWdlcyBmcm9tIGEgZ3VpbGQgY2hhbm5lbDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNnZXQtY2hhbm5lbC1tZXNzYWdlc31cbiAgICovXG4gIGdldE1lc3NhZ2VzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRNZXNzYWdlc09wdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lc3NhZ2U+W10+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RpY2tlciBwYWNrIGZvciB0aGUgZ2l2ZW4gSUQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERpc2NvcmRTdGlja2VyUGFja30gb2JqZWN0LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvc3RpY2tlciNnZXQtc3RpY2tlci1wYWNrfVxuICAgKi9cbiAgZ2V0U3RpY2tlclBhY2s6IChzdGlja2VyUGFja0lkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFN0aWNrZXJQYWNrPj5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2Ygc3RpY2tlciBwYWNrcyBhdmFpbGFibGUuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZFN0aWNrZXJQYWNrfSBvYmplY3RzIGFzc29ydGVkIGJ5IHN0aWNrZXIgSUQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9zdGlja2VyI2xpc3Qtc3RpY2tlci1wYWNrc31cbiAgICovXG4gIGdldFN0aWNrZXJQYWNrczogKCkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU3RpY2tlclBhY2s+W10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpbml0aWFsIG1lc3NhZ2UgcmVzcG9uc2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVW5saWtlIGBnZXRNZXNzYWdlKClgLCB0aGlzIGVuZHBvaW50IGFsbG93cyB0aGUgYm90IHVzZXIgdG8gYWN0IHdpdGhvdXQ6XG4gICAqIC0gTmVlZGluZyB0byBiZSBhYmxlIHRvIHNlZSB0aGUgY29udGVudHMgb2YgdGhlIGNoYW5uZWwgdGhhdCB0aGUgbWVzc2FnZSBpcyBpbi4gKGBSRUFEX01FU1NBR0VTYCBwZXJtaXNzaW9uLilcbiAgICogLSBSZXF1aXJpbmcgdGhlIGBNRVNTQUdFX0NPTlRFTlRgIGludGVudC5cbiAgICpcbiAgICogRG9lcyBub3Qgc3VwcG9ydCBlcGhlbWVyYWwgZm9sbG93LXVwIG1lc3NhZ2VzIGR1ZSB0byB0aGVzZSBiZWluZyBzdGF0ZWxlc3MuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9yZWNlaXZpbmctYW5kLXJlc3BvbmRpbmcjZ2V0LW9yaWdpbmFsLWludGVyYWN0aW9uLXJlc3BvbnNlfVxuICAgKi9cbiAgZ2V0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlOiAodG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgcGlucyBpbiBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0IHRoZSBwaW5zIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBwaW5zLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEaXNjb3JkR2V0Q2hhbm5lbFBpbnN9IG9iamVjdHNcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBWSUVXX0NIQU5ORUxgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIHRoZSB1c2VyIGlzIG1pc3NpbmcgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbiBpbiB0aGUgY2hhbm5lbCwgdGhlbiBubyBwaW5zIHdpbGwgYmUgcmV0dXJuZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9tZXNzYWdlI2dldC1jaGFubmVsLXBpbnN9XG4gICAqL1xuICBnZXRDaGFubmVsUGluczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0Q2hhbm5lbFBpbnNPcHRpb25zKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHZXRDaGFubmVsUGlucz4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwaW5uZWQgbWVzc2FnZXMgZm9yIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBnZXQgdGhlIHBpbm5lZCBtZXNzYWdlcyBmb3IuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9IG9iamVjdHMgYXNzb3J0ZWQgYnkgbWVzc2FnZSBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhhdCB0aGUgYm90IHVzZXIgYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIGluIHdoaWNoIHRoZSBtZXNzYWdlcyB3ZXJlIHBvc3RlZC5cbiAgICpcbiAgICogSWYgZ2V0dGluZyBhIG1lc3NhZ2UgZnJvbSBhIGd1aWxkIGNoYW5uZWw6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL21lc3NhZ2UjZ2V0LXBpbm5lZC1tZXNzYWdlcy1kZXByZWNhdGVkfVxuICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIGdldENoYW5uZWxQaW5zfSBpbnN0ZWFkLlxuICAgKi9cbiAgZ2V0UGlubmVkTWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT5bXT5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgcHJpdmF0ZSBhcmNoaXZlZCB0aHJlYWRzIGZvciBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0IHRoZSBhcmNoaXZlZCB0aHJlYWRzIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRocmVhZHMuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkTGlzdEFyY2hpdmVkVGhyZWFkc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1RIUkVBRFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFJldHVybnMgdGhyZWFkcyBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkUHJpdmF0ZVRocmVhZC5cbiAgICpcbiAgICogVGhyZWFkcyBhcmUgb3JkZXJlZCBieSB0aGUgYGFyY2hpdmVfdGltZXN0YW1wYCBwcm9wZXJ0eSBpbmNsdWRlZCBpbiB0aGUgbWV0YWRhdGEgb2YgdGhlIG9iamVjdCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNsaXN0LXByaXZhdGUtYXJjaGl2ZWQtdGhyZWFkc31cbiAgICovXG4gIGdldFByaXZhdGVBcmNoaXZlZFRocmVhZHM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RBcmNoaXZlZFRocmVhZHMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHM+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBwcml2YXRlIGFyY2hpdmVkIHRocmVhZHMgdGhlIGJvdCBpcyBhIG1lbWJlciBvZiBmb3IgYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGdldCB0aGUgYXJjaGl2ZWQgdGhyZWFkcyBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aHJlYWRzLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEFyY2hpdmVkVGhyZWFkc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFJldHVybnMgdGhyZWFkcyBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkUHJpdmF0ZVRocmVhZC5cbiAgICpcbiAgICogVGhyZWFkcyBhcmUgb3JkZXJlZCBieSB0aGUgYGlkYCBwcm9wZXJ0eSBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNsaXN0LWpvaW5lZC1wcml2YXRlLWFyY2hpdmVkLXRocmVhZHN9XG4gICAqL1xuICBnZXRQcml2YXRlSm9pbmVkQXJjaGl2ZWRUaHJlYWRzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRMaXN0QXJjaGl2ZWRUaHJlYWRzPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgd291bGQgYmUga2lja2VkIGZyb20gYSBndWlsZCBkdXJpbmcgcHJ1bmluZy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgcHJ1bmUgY291bnQgb2YuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgcHJ1bmUgY291bnQuXG4gICAqIEByZXR1cm5zIEEgbnVtYmVyIGluZGljYXRpbmcgdGhlIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgd291bGQgYmUga2lja2VkLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgYW5kIGBLSUNLX01FTUJFUlNgIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLXBydW5lLWNvdW50fVxuICAgKi9cbiAgZ2V0UHJ1bmVDb3VudDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEd1aWxkUHJ1bmVDb3VudFF1ZXJ5KSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRQcnVuZWRDb3VudD4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIHB1YmxpYyBhcmNoaXZlZCB0aHJlYWRzIGZvciBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0IHRoZSBhcmNoaXZlZCB0aHJlYWRzIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRocmVhZHMuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQXJjaGl2ZWRUaHJlYWRzfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgY2FsbGVkIG9uIGEgY2hhbm5lbCBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkVGV4dCwgcmV0dXJucyB0aHJlYWRzIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRQdWJsaWNUaHJlYWQuXG4gICAqIElmIGNhbGxlZCBvbiBhIGNoYW5uZWwgb2YgdHlwZSB7QGxpbmsgQ2hhbm5lbFR5cGVzfS5HdWlsZE5ld3MsIHJldHVybnMgdGhyZWFkcyBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkTmV3c1RocmVhZC5cbiAgICpcbiAgICogVGhyZWFkcyBhcmUgb3JkZXJlZCBieSB0aGUgYGFyY2hpdmVfdGltZXN0YW1wYCBwcm9wZXJ0eSBpbmNsdWRlZCBpbiB0aGUgbWV0YWRhdGEgb2YgdGhlIG9iamVjdCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNsaXN0LXB1YmxpYy1hcmNoaXZlZC10aHJlYWRzfVxuICAgKi9cbiAgZ2V0UHVibGljQXJjaGl2ZWRUaHJlYWRzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0QXJjaGl2ZWRUaHJlYWRzKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRMaXN0QXJjaGl2ZWRUaHJlYWRzPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2Ygcm9sZXMgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpc3Qgb2Ygcm9sZXMgZm9yLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRSb2xlfSBvYmplY3RzIGFzc29ydGVkIGJ5IHJvbGUgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIOKaoO+4jyBUaGlzIGVuZHBvaW50IHNob3VsZCBiZSB1c2VkIHNwYXJpbmdseSBkdWUgdG8ge0BsaW5rIERpc2NvcmRSb2xlfSBvYmplY3RzIGFscmVhZHkgYmVpbmcgaW5jbHVkZWQgaW4gZ3VpbGQgcGF5bG9hZHMuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtcm9sZXN9XG4gICAqL1xuICBnZXRSb2xlczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkUm9sZT5bXT5cbiAgLyoqXG4gICAqIEdldHMgYSByb2xlIGJ5IGlkIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHJvbGUgZm9yLlxuICAgKiBAcGFyYW0gcm9sZUlkIC0gVGhlIElEIG9mIHRoZSByb2xlLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEaXNjb3JkUm9sZX0gb2JqZWN0LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLXJvbGV9XG4gICAqL1xuICBnZXRSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkUm9sZT4+XG4gIC8qKlxuICAgKiBHZXRzIGEgc2NoZWR1bGVkIGV2ZW50IGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgc2NoZWR1bGVkIGV2ZW50IGZyb20uXG4gICAqIEBwYXJhbSBldmVudElkIC0gVGhlIElEIG9mIHRoZSBzY2hlZHVsZWQgZXZlbnQgdG8gZ2V0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIHNjaGVkdWxlZCBldmVudC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRTY2hlZHVsZWRFdmVudH0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC1zY2hlZHVsZWQtZXZlbnQjZ2V0LWd1aWxkLXNjaGVkdWxlZC1ldmVudH1cbiAgICovXG4gIGdldFNjaGVkdWxlZEV2ZW50OiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBldmVudElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiB7IHdpdGhVc2VyQ291bnQ/OiBib29sZWFuIH0pID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFNjaGVkdWxlZEV2ZW50Pj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2Ygc2NoZWR1bGVkIGV2ZW50cyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgc2NoZWR1bGVkIGV2ZW50cyBmcm9tLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIHNjaGVkdWxlZCBldmVudHMuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZFNjaGVkdWxlZEV2ZW50fSBvYmplY3RzIGFzc29ydGVkIGJ5IGV2ZW50IElELlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtc2NoZWR1bGVkLWV2ZW50I2xpc3Qtc2NoZWR1bGVkLWV2ZW50cy1mb3ItZ3VpbGR9XG4gICAqL1xuICBnZXRTY2hlZHVsZWRFdmVudHM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRTY2hlZHVsZWRFdmVudHMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFNjaGVkdWxlZEV2ZW50PltdPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBzdWJzY3JpYmVycyB0byBhIHNjaGVkdWxlZCBldmVudCBmcm9tIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHN1YnNjcmliZXJzIHRvIHRoZSBzY2hlZHVsZWQgZXZlbnQgZnJvbS5cbiAgICogQHBhcmFtIGV2ZW50SWQgLSBUaGUgSUQgb2YgdGhlIHNjaGVkdWxlZCBldmVudCB0byBnZXQgdGhlIHN1YnNjcmliZXJzIG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIHN1YnNjcmliZXJzLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRVc2VyfSBvYmplY3RzIGFzc29ydGVkIGJ5IHVzZXIgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0VWRU5UU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogVXNlcnMgYXJlIG9yZGVyZWQgYnkgdGhlaXIgSURzIGluIF9hc2NlbmRpbmdfIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtc2NoZWR1bGVkLWV2ZW50I2dldC1ndWlsZC1zY2hlZHVsZWQtZXZlbnQtdXNlcnN9XG4gICAqL1xuICBnZXRTY2hlZHVsZWRFdmVudFVzZXJzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGV2ZW50SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0U2NoZWR1bGVkRXZlbnRVc2VycyxcbiAgKSA9PiBQcm9taXNlPEFycmF5PHsgdXNlcjogQ2FtZWxpemU8RGlzY29yZFVzZXI+OyBtZW1iZXI/OiBDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyPiB9Pj5cbiAgLyoqIEdldCB0aGUgYm90cyBHYXRld2F5IG1ldGFkYXRhIHRoYXQgY2FuIGhlbHAgZHVyaW5nIHRoZSBvcGVyYXRpb24gb2YgbGFyZ2Ugb3Igc2hhcmRlZCBib3RzLiAqL1xuICBnZXRTZXNzaW9uSW5mbzogKCkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR2V0R2F0ZXdheUJvdD4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzdGFnZSBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggYSBzdGFnZSBjaGFubmVsLCBpZiBvbmUgZXhpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBzdGFnZSBjaGFubmVsIHRoZSBzdGFnZSBpbnN0YW5jZSBpcyBhc3NvY2lhdGVkIHdpdGguXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkU3RhZ2VJbnN0YW5jZX0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9zdGFnZS1pbnN0YW5jZSNnZXQtc3RhZ2UtaW5zdGFuY2V9XG4gICAqL1xuICBnZXRTdGFnZUluc3RhbmNlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFN0YWdlSW5zdGFuY2U+PlxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCB1c2VyJ3Mgdm9pY2Ugc3RhdGUgaW4gdGhlIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSB2b2ljZSBzdGF0ZSBmcm9tLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZFZvaWNlU3RhdGV9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvdm9pY2UjZ2V0LWN1cnJlbnQtdXNlci12b2ljZS1zdGF0ZX1cbiAgICovXG4gIGdldE93blZvaWNlU3RhdGU6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFZvaWNlU3RhdGU+PlxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3BlY2lmaWVkIHVzZXIncyB2b2ljZSBzdGF0ZSBpbiB0aGUgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHZvaWNlIHN0YXRlIGZyb20uXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSB2b2ljZSBzdGF0ZSBmcm9tXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkVm9pY2VTdGF0ZX0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy92b2ljZSNnZXQtdXNlci12b2ljZS1zdGF0ZX1cbiAgICovXG4gIGdldFVzZXJWb2ljZVN0YXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkVm9pY2VTdGF0ZT4+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RpY2tlciBvYmplY3QgZm9yIHRoZSBnaXZlbiBzdGlja2VyIElELlxuICAgKlxuICAgKiBAcGFyYW0gc3RpY2tlcklkIFRoZSBJRCBvZiB0aGUgc3RpY2tlciB0byBnZXRcbiAgICogQHJldHVybnMgQSB7QGxpbmsgRGlzY29yZFN0aWNrZXJ9XG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9zdGlja2VyI2dldC1zdGlja2VyfVxuICAgKi9cbiAgZ2V0U3RpY2tlcjogKHN0aWNrZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRTdGlja2VyPj5cbiAgLyoqXG4gICAqIEdldHMgYSB0aHJlYWQgbWVtYmVyIGJ5IHRoZWlyIHVzZXIgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHRocmVhZCB0byBnZXQgdGhlIHRocmVhZCBtZW1iZXIgb2YuXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgdXNlciBJRCBvZiB0aGUgdGhyZWFkIG1lbWJlciB0byBnZXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgdGhyZWFkIG1lbWJlci5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRUaHJlYWRNZW1iZXJ9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNnZXQtdGhyZWFkLW1lbWJlcn1cbiAgICovXG4gIGdldFRocmVhZE1lbWJlcjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldFRocmVhZE1lbWJlcikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkVGhyZWFkTWVtYmVyPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgdGhyZWFkIG1lbWJlcnMgZm9yIGEgdGhyZWFkLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSB0aHJlYWQgdG8gZ2V0IHRoZSB0aHJlYWQgbWVtYmVycyBvZi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSB0aHJlYWQgbWVtYmVycy5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkVGhyZWFkTWVtYmVyfSBhc3NvcnRlZCBieSB1c2VyIElELlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYXBwbGljYXRpb24gdG8gaGF2ZSB0aGUgYEdVSUxEX01FTUJFUlNgIHByaXZpbGVnZWQgaW50ZW50IGVuYWJsZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2xpc3QtdGhyZWFkLW1lbWJlcnN9XG4gICAqL1xuICBnZXRUaHJlYWRNZW1iZXJzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0VGhyZWFkTWVtYmVycykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkVGhyZWFkTWVtYmVyPltdPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiB1c2VycyB0aGF0IHJlYWN0ZWQgd2l0aCBhbiBlbW9qaSB0byBhIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgdG8gZ2V0IHRoZSB1c2VycyBmb3IgaXMgaW4uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZ2V0IHRoZSB1c2VycyBmb3IuXG4gICAqIEBwYXJhbSByZWFjdGlvbiAtIFRoZSByZWFjdGlvbiBmb3Igd2hpY2ggdG8gZ2V0IHRoZSB1c2Vycy5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSB1c2Vycy5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkVXNlcn0gb2JqZWN0cyBhc3NvcnRlZCBieSB1c2VyIElELlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNnZXQtcmVhY3Rpb25zfVxuICAgKi9cbiAgZ2V0UmVhY3Rpb25zOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nLCBvcHRpb25zPzogR2V0UmVhY3Rpb25zKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRVc2VyPltdPlxuICAvKipcbiAgICogR2V0IGEgdXNlcidzIGRhdGEgZnJvbSB0aGUgYXBpXG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgdXNlcidzIGlkXG4gICAqIEByZXR1cm5zIHtEaXNjb3JkVXNlcn1cbiAgICovXG4gIGdldFVzZXI6IChpZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRVc2VyPj5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCB1c2VyIGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXJcbiAgICogQHJldHVybnMge0Rpc2NvcmRVc2VyfVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHJlcXVpcmVzIHRoZSBgaWRlbnRpZnlgIHNjb3BlLlxuICAgKlxuICAgKiBUbyBnZXQgdGhlIG1haWwgdGhpcyBhbHNvIHJlcXVpcmVzIHRoZSBgZW1haWxgIHNjb3BlXG4gICAqL1xuICBnZXRDdXJyZW50VXNlcjogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFVzZXI+PlxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHVzZXIgY29ubmVjdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXJcbiAgICogQHJldHVybnMge0Rpc2NvcmRDb25uZWN0aW9uW119XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgcmVxdWlyZXMgdGhlIGBjb25uZWN0aW9uc2Agc2NvcGUuXG4gICAqL1xuICBnZXRVc2VyQ29ubmVjdGlvbnM6IChiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDb25uZWN0aW9uPltdPlxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHVzZXIgYXBwbGljYXRpb24gcm9sZSBjb25uZWN0aW9uIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXJcbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgcm9sZSBjb25uZWN0aW9uXG4gICAqIEByZXR1cm5zIHtEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbn1cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhlIGFjY2VzcyB0b2tlbiByZXF1aXJlcyB0aGUgYHJvbGVfY29ubmVjdGlvbnMud3JpdGVgIHNjb3BlLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvdXNlciNnZXQtdXNlci1hcHBsaWNhdGlvbi1yb2xlLWNvbm5lY3Rpb259XG4gICAqL1xuICBnZXRVc2VyQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbjogKGJlYXJlclRva2VuOiBzdHJpbmcsIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbj4+XG4gIC8qKlxuICAgKiBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YW5pdHkgdXJsIG9mIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHZhbml0eSB1cmwgaW5mb3JtYXRpb24gZm9yLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZFZhbml0eVVybH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBUaGUgYGNvZGVgIHByb3BlcnR5IHdpbGwgYmUgYG51bGxgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc2V0IHZhbml0eSB1cmwuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtdmFuaXR5LXVybH1cbiAgICovXG4gIGdldFZhbml0eVVybDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkVmFuaXR5VXJsPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2Ygdm9pY2UgcmVnaW9ucyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgdm9pY2UgcmVnaW9ucyBmb3IuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZFZvaWNlUmVnaW9ufSBvYmplY3RzIGFzc29ydGVkIGJ5IHZvaWNlIHJlZ2lvbiBJRC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC12b2ljZS1yZWdpb25zfVxuICAgKi9cbiAgZ2V0Vm9pY2VSZWdpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRWb2ljZVJlZ2lvbj5bXT5cbiAgLyoqXG4gICAqIEdldHMgYSB3ZWJob29rIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIHdlYmhvb2tJZCAtIFRoZSBJRCBvZiB0aGUgd2ViaG9vayB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkV2ViaG9va30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uIHVubGVzcyB0aGUgYXBwbGljYXRpb24gbWFraW5nIHRoZSByZXF1ZXN0IG93bnMgdGhlIHdlYmhvb2suXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2dldC13ZWJob29rfVxuICAgKi9cbiAgZ2V0V2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWJob29rPj5cbiAgLyoqXG4gICAqIEdldHMgYSB3ZWJob29rIG1lc3NhZ2UgYnkgaXRzIElELlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGdldCBhIG1lc3NhZ2Ugb2YuXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB3ZWJob29rIHRva2VuLCB1c2VkIHRvIGdldCB3ZWJob29rIG1lc3NhZ2VzLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gdGhlIElEIG9mIHRoZSB3ZWJob29rIG1lc3NhZ2UgdG8gZ2V0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIG1lc3NhZ2UuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2dldC13ZWJob29rLW1lc3NhZ2V9XG4gICAqL1xuICBnZXRXZWJob29rTWVzc2FnZTogKFxuICAgIHdlYmhvb2tJZDogQmlnU3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldFdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZXNzYWdlPj5cbiAgLyoqXG4gICAqIEdldHMgYSB3ZWJob29rIHVzaW5nIHRoZSB3ZWJob29rIHRva2VuLCB0aGVyZWJ5IGJ5cGFzc2luZyB0aGUgbmVlZCBmb3IgYXV0aGVudGljYXRpb24gKyBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHdlYmhvb2tJZCAtIFRoZSBJRCBvZiB0aGUgd2ViaG9vayB0byBnZXQuXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB3ZWJob29rIHRva2VuLCB1c2VkIHRvIGdldCB0aGUgd2ViaG9vay5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRXZWJob29rfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZ2V0LXdlYmhvb2std2l0aC10b2tlbn1cbiAgICovXG4gIGdldFdlYmhvb2tXaXRoVG9rZW46ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkV2ViaG9vaz4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSB3ZWxjb21lIHNjcmVlbiBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgd2VsY29tZSBzY3JlZW4gZm9yLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZFdlbGNvbWVTY3JlZW59LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiB0aGUgd2VsY29tZSBzY3JlZW4gaXMgbm90IGVuYWJsZWQ6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtd2VsY29tZS1zY3JlZW59XG4gICAqL1xuICBnZXRXZWxjb21lU2NyZWVuOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWxjb21lU2NyZWVuPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGd1aWxkIHdpZGdldCBieSBndWlsZCBJRC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgd2lkZ2V0IG9mLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEd1aWxkV2lkZ2V0fS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYW4gYElOVklURV9DUkVBVEVEYCBHYXRld2F5IGV2ZW50IHdoZW4gYW4gaW52aXRlIGNoYW5uZWwgaXMgZGVmaW5lZCBhbmQgYSBuZXcgYEludml0ZWAgaXMgZ2VuZXJhdGVkLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLXdpZGdldH1cbiAgICovXG4gIGdldFdpZGdldDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR3VpbGRXaWRnZXQ+PlxuICAvKipcbiAgICogR2V0cyB0aGUgc2V0dGluZ3Mgb2YgYSBndWlsZCdzIHdpZGdldC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgd2lkZ2V0IG9mLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEd1aWxkV2lkZ2V0U2V0dGluZ3N9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC13aWRnZXQtc2V0dGluZ3N9XG4gICAqL1xuICBnZXRXaWRnZXRTZXR0aW5nczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5ncz4+XG4gIC8qKlxuICAgKiBBZGRzIHRoZSBib3QgdXNlciB0byBhIHRocmVhZC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgdGhyZWFkIHRvIGFkZCB0aGUgYm90IHVzZXIgdG8uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSB0aHJlYWQgbm90IGJlIGFyY2hpdmVkLlxuICAgKlxuICAgKiBGaXJlcyBhIF9UaHJlYWQgTWVtYmVycyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2pvaW4tdGhyZWFkfVxuICAgKi9cbiAgam9pblRocmVhZDogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBMZWF2ZXMgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGxlYXZlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9HdWlsZCBEZWxldGVfIGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvdXNlciNsZWF2ZS1ndWlsZH1cbiAgICovXG4gIGxlYXZlR3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGJvdCB1c2VyIGZyb20gYSB0aHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHRocmVhZCB0byByZW1vdmUgdGhlIGJvdCB1c2VyIGZyb20uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSB0aHJlYWQgbm90IGJlIGFyY2hpdmVkLlxuICAgKlxuICAgKiBGaXJlcyBhIF9UaHJlYWQgTWVtYmVycyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2xlYXZlLXRocmVhZH1cbiAgICovXG4gIGxlYXZlVGhyZWFkOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIENyb3NzLXBvc3RzIGEgbWVzc2FnZSBwb3N0ZWQgaW4gYW4gYW5ub3VuY2VtZW50IGNoYW5uZWwgdG8gc3Vic2NyaWJlZCBjaGFubmVscy5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgYW5ub3VuY2VtZW50IGNoYW5uZWwuXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gY3Jvc3MtcG9zdC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyb3NzLXBvc3RlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFNFTkRfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIG5vdCBjcm9zcy1wb3N0aW5nIG93biBtZXNzYWdlOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIENyZWF0ZV8gZXZlbnQgaW4gdGhlIGd1aWxkcyB0aGUgc3Vic2NyaWJlZCBjaGFubmVscyBhcmUgaW4uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2Nyb3NzcG9zdC1tZXNzYWdlfVxuICAgKi9cbiAgcHVibGlzaE1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lc3NhZ2U+PlxuICAvKipcbiAgICogUmVtb3ZlcyBhIHJvbGUgZnJvbSBhIG1lbWJlci5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRoZSBtZW1iZXIgdG8gcmVtb3ZlIHRoZSByb2xlIGZyb20gaXMgaW4uXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgdXNlciBJRCBvZiB0aGUgbWVtYmVyIHRvIHJlbW92ZSB0aGUgcm9sZSBmcm9tLlxuICAgKiBAcGFyYW0gcm9sZUlkIC0gVGhlIElEIG9mIHRoZSByb2xlIHRvIHJlbW92ZSBmcm9tIHRoZSBtZW1iZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfUk9MRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIE1lbWJlciBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNyZW1vdmUtZ3VpbGQtbWVtYmVyLXJvbGV9XG4gICAqL1xuICByZW1vdmVSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogUmVtb3ZlcyBhIG1lbWJlciBmcm9tIGEgdGhyZWFkLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSB0aHJlYWQgdG8gcmVtb3ZlIHRoZSB0aHJlYWQgbWVtYmVyIG9mLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIHRocmVhZCBtZW1iZXIgdG8gcmVtb3ZlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiB0aGUgdGhyZWFkIGlzIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRQcml2YXRlVGhyZWFkLCByZXF1aXJlcyB0byBiZSB0aGUgY3JlYXRvciBvZiB0aGUgdGhyZWFkLlxuICAgKiBPdGhlcndpc2UsIHJlcXVpcmVzIHRoZSBgTUFOQUdFX1RIUkVBRFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFJlcXVpcmVzIHRoZSB0aHJlYWQgbm90IGJlIGFyY2hpdmVkLlxuICAgKlxuICAgKiBGaXJlcyBhIF9UaHJlYWQgTWVtYmVycyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI3JlbW92ZS10aHJlYWQtbWVtYmVyfVxuICAgKi9cbiAgcmVtb3ZlVGhyZWFkTWVtYmVyOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgbWVtYmVyIGZyb20gYSBHcm91cCBETS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byByZW1vdmUgdGhlIHJlY2lwaWVudCB1c2VyIG9mLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIHVzZXIgdG8gcmVtb3ZlLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNncm91cC1kbS1yZW1vdmUtcmVjaXBpZW50fVxuICAgKi9cbiAgcmVtb3ZlRG1SZWNpcGllbnQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFNlbmRzIGEgbWVzc2FnZSB0byBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gc2VuZCB0aGUgbWVzc2FnZSBpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBtZXNzYWdlLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGF0IHRoZSBib3QgdXNlciBiZSBhYmxlIHRvIHNlZSB0aGUgY29udGVudHMgb2YgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgaXMgdG8gYmUgc2VudCBpbi5cbiAgICpcbiAgICogSWYgc2VuZGluZyBhIG1lc3NhZ2UgdG8gYSBndWlsZCBjaGFubmVsOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgU0VORF9NRVNTQUdFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgc2VuZGluZyBhIFRUUyBtZXNzYWdlOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgU0VORF9UVFNfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIHNlbmRpbmcgYSBtZXNzYWdlIGFzIGEgcmVwbHkgdG8gYW5vdGhlciBtZXNzYWdlOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqIC0gVGhlIG1lc3NhZ2UgYmVpbmcgcmVwbGllZCB0byBjYW5ub3QgYmUgYSBzeXN0ZW0gbWVzc2FnZS5cbiAgICpcbiAgICog4pqg77iPIFRoZSBtYXhpbXVtIHNpemUgb2YgYSByZXF1ZXN0IChhY2NvdW50aW5nIGZvciBhbnkgYXR0YWNobWVudHMgYW5kIG1lc3NhZ2UgY29udGVudCkgZm9yIGJvdCB1c2VycyBpcyBfOCBNaUJfLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjY3JlYXRlLW1lc3NhZ2V9XG4gICAqL1xuICBzZW5kTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVNZXNzYWdlT3B0aW9ucykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBTZW5kcyBhIGZvbGxvdy11cCBtZXNzYWdlIHRvIGFuIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgaW50ZXJhY3Rpb24gdG9rZW4gdG8gdXNlLCBwcm92aWRlZCBpbiB0aGUgb3JpZ2luYWwgaW50ZXJhY3Rpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4pqg77iPIEludGVyYWN0aW9uIHRva2VucyBhcmUgb25seSB2YWxpZCBmb3IgXzE1IG1pbnV0ZXNfLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBtZW50aW9ucyBhcmUgc3VwcHJlc3NlZC4gVG8gZW5hYmxlIG1lbnRpb25zLCBwYXNzIGEgbWVudGlvbiBvYmplY3Qgd2l0aCB0aGUgY2FsbGJhY2sgZGF0YS5cbiAgICpcbiAgICogVW5saWtlIGBzZW5kTWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0OlxuICAgKiAtIE5lZWRpbmcgdG8gYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIHRoYXQgdGhlIG1lc3NhZ2UgaXMgaW4uIChgUkVBRF9NRVNTQUdFU2AgcGVybWlzc2lvbi4pXG4gICAqIC0gUmVxdWlyaW5nIHRoZSBgTUVTU0FHRV9DT05URU5UYCBpbnRlbnQuXG4gICAqXG4gICAqIEFwcHMgYXJlIGxpbWl0ZWQgdG8gNSBmb2xsb3d1cCBtZXNzYWdlcyBwZXIgaW50ZXJhY3Rpb24gaWYgaXQgd2FzIGluaXRpYXRlZCBmcm9tIGEgdXNlci1pbnN0YWxsZWQgYXBwIGFuZCBpc24ndCBpbnN0YWxsZWQgaW4gdGhlIHNlcnZlclxuICAgKiBZb3UgY2FuIGNoZWNrIGlmIGl0IHdhcyBpbml0aWF0ZWQgZnJvbSBhIHVzZXItaW5zdGFsbGVkIGFwcCB0aGF0IGlzbid0IGluc3RhbGxlZCBpbiB0aGUgc2VydmVyIGJ5IGNoZWNraW5nIGlmIHtAbGluayBEaXNjb3JkSW50ZXJhY3Rpb24uYXV0aG9yaXppbmdfaW50ZWdyYXRpb25fb3duZXJzIHwgYXV0aG9yaXppbmdJbnRlZ3JhdGlvbk93bmVyc30gb25seSBjb250YWlucyB7QGxpbmsgRGlzY29yZEFwcGxpY2F0aW9uSW50ZWdyYXRpb25UeXBlLlVzZXJJbnN0YWxsIHwgVXNlckluc3RhbGx9LlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIENyZWF0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9yZWNlaXZpbmctYW5kLXJlc3BvbmRpbmcjY3JlYXRlLWZvbGxvd3VwLW1lc3NhZ2V9XG4gICAqL1xuICBzZW5kRm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgb3B0aW9uczogSW50ZXJhY3Rpb25DYWxsYmFja0RhdGEpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lc3NhZ2U+PlxuICAvKipcbiAgICogU2VuZHMgYSByZXNwb25zZSB0byBhbiBpbnRlcmFjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGludGVyYWN0aW9uSWQgLSBUaGUgSUQgb2YgdGhlIGludGVyYWN0aW9uIHRvIHJlc3BvbmQgdG8uXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBtZXNzYWdlLlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIHRoZSByZXNwb25zZSBvZiB0aGUgY2FsbGJhY2tcbiAgICogQHJldHVybnMgTm90aGluZyBvciB0aGUge0BsaW5rIERpc2NvcmRJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2V9IGlmIHdpdGhSZXNwb25zZSBwYXJhbSBpcyB0cnVlXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIOKaoO+4jyBJbnRlcmFjdGlvbiB0b2tlbnMgYXJlIG9ubHkgdmFsaWQgZm9yIF8xNSBtaW51dGVzXy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgbWVudGlvbnMgYXJlIHN1cHByZXNzZWQuIFRvIGVuYWJsZSBtZW50aW9ucywgcGFzcyBhIG1lbnRpb24gb2JqZWN0IHdpdGggdGhlIGNhbGxiYWNrIGRhdGEuXG4gICAqXG4gICAqIFVubGlrZSBgc2VuZE1lc3NhZ2UoKWAsIHRoaXMgZW5kcG9pbnQgYWxsb3dzIHRoZSBib3QgdXNlciB0byBhY3Qgd2l0aG91dDpcbiAgICogLSBOZWVkaW5nIHRvIGJlIGFibGUgdG8gc2VlIHRoZSBjb250ZW50cyBvZiB0aGUgY2hhbm5lbCB0aGF0IHRoZSBtZXNzYWdlIGlzIGluLiAoYFJFQURfTUVTU0FHRVNgIHBlcm1pc3Npb24uKVxuICAgKiAtIFJlcXVpcmluZyB0aGUgYE1FU1NBR0VfQ09OVEVOVGAgaW50ZW50LlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIENyZWF0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9yZWNlaXZpbmctYW5kLXJlc3BvbmRpbmcjY3JlYXRlLWludGVyYWN0aW9uLXJlc3BvbnNlfVxuICAgKi9cbiAgc2VuZEludGVyYWN0aW9uUmVzcG9uc2U6IChcbiAgICBpbnRlcmFjdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBvcHRpb25zOiBJbnRlcmFjdGlvblJlc3BvbnNlLFxuICAgIHBhcmFtcz86IEludGVyYWN0aW9uQ2FsbGJhY2tPcHRpb25zLFxuICApID0+IFByb21pc2U8dm9pZCB8IENhbWVsaXplPERpc2NvcmRJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2U+PlxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRocmVhZCwgdXNpbmcgYW4gZXhpc3RpbmcgbWVzc2FnZSBhcyBpdHMgcG9pbnQgb2Ygb3JpZ2luLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgdGhyZWFkLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIHVzZSBhcyB0aGUgdGhyZWFkJ3MgcG9pbnQgb2Ygb3JpZ2luLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIHRvIHVzZSBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSB0aHJlYWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIERpc2NvcmRDaGFubmVsfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSWYgY2FsbGVkIG9uIGEgY2hhbm5lbCBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkVGV4dCwgY3JlYXRlcyBhIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkUHVibGljVGhyZWFkLlxuICAgKiBJZiBjYWxsZWQgb24gYSBjaGFubmVsIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGROZXdzLCBjcmVhdGVzIGEge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGROZXdzVGhyZWFkLlxuICAgKiBEb2VzIG5vdCB3b3JrIG9uIGNoYW5uZWxzIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRGb3J1bS5cbiAgICpcbiAgICogVGhlIElEIG9mIHRoZSBjcmVhdGVkIHRocmVhZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBJRCBvZiB0aGUgc291cmNlIG1lc3NhZ2UuXG4gICAqXG4gICAqIEZpcmVzIGEgX1RocmVhZCBDcmVhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI3N0YXJ0LXRocmVhZC1mcm9tLW1lc3NhZ2V9XG4gICAqL1xuICBzdGFydFRocmVhZFdpdGhNZXNzYWdlOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogU3RhcnRUaHJlYWRXaXRoTWVzc2FnZSxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQ2hhbm5lbD4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGhyZWFkIHdpdGhvdXQgdXNpbmcgYSBtZXNzYWdlIGFzIHRoZSB0aHJlYWQncyBwb2ludCBvZiBvcmlnaW4uXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZSB0aHJlYWQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgdG8gdXNlIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIHRocmVhZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZENoYW5uZWwgfCBUaHJlYWR9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBDcmVhdGluZyBhIHByaXZhdGUgdGhyZWFkIHJlcXVpcmVzIHRoZSBzZXJ2ZXIgdG8gYmUgYm9vc3RlZC5cbiAgICpcbiAgICogRmlyZXMgYSBfVGhyZWFkIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjc3RhcnQtdGhyZWFkLXdpdGhvdXQtbWVzc2FnZX1cbiAgICovXG4gIHN0YXJ0VGhyZWFkV2l0aG91dE1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogU3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDaGFubmVsPj5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgdXNlcnMgdGhhdCB2b3RlZCBmb3IgdGhpcyBzcGVjaWZpYyBhbnN3ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgaW4gd2hpY2ggdGhlIG1lc3NhZ2Ugd2l0aCB0aGUgcG9sbCBsaXZlc1xuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIGluIHdoaWNoIHRoZSBwb2xsIGxpdmVzXG4gICAqIEBwYXJhbSBhbnN3ZXJJZCAtIFRoZSBJRCBvZiB0aGUgYW5zd2VyIHRvIGdldCB0aGUgdXNlcnMgdGhhdCB2b3RlZCB0aGF0IGFuc3dlclxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdFxuICAgKiBAcmV0dXJucyBUaGUgbGlzdCBvZiB1c2VycyB0aGF0IHZvdGVkIGZvciB0aGUgc3BlY2lmaWMgYW5zd2VyLlxuICAgKi9cbiAgZ2V0UG9sbEFuc3dlclZvdGVyczogKFxuICAgIGNoYW5uZWxJZDogQmlnU3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIGFuc3dlcklkOiBudW1iZXIsXG4gICAgb3B0aW9ucz86IEdldFBvbGxBbnN3ZXJWb3RlcyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHZXRBbnN3ZXJWb3Rlc1Jlc3BvbnNlPj5cbiAgLyoqXG4gICAqIEltbWVkaWF0ZWx5IGVuZHMgdGhlIHBvbGwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgaW4gd2hpY2ggdGhlIG1lc3NhZ2Ugd2l0aCB0aGUgcG9sbCBsaXZlc1xuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIGluIHdoaWNoIHRoZSBwb2xsIGxpdmVzXG4gICAqIEByZXR1cm5zIFRoZSBtZXNzYWdlIHdpdGggdGhlIGV4cGlyZWQgcG9sbFxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBZb3UgY2Fubm90IGVuZCBwb2xscyBmcm9tIG90aGVyIHVzZXJzLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudFxuICAgKi9cbiAgZW5kUG9sbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBTeW5jaHJvbmlzZXMgYSB0ZW1wbGF0ZSB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9mIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBzeW5jaHJvbmlzZSBhIHRlbXBsYXRlIG9mLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkVGVtcGxhdGV9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtdGVtcGxhdGUjZ2V0LWd1aWxkLXRlbXBsYXRlc31cbiAgICovXG4gIHN5bmNHdWlsZFRlbXBsYXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRUZW1wbGF0ZT4+XG4gIC8qKlxuICAgKiBUcmlnZ2VycyBhIHR5cGluZyBpbmRpY2F0b3IgZm9yIHRoZSBzcGVjaWZpZWQgY2hhbm5lbCwgd2hpY2ggZXhwaXJlcyBhZnRlciAxMCBzZWNvbmRzLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIGluIHdoaWNoIHRvIHRyaWdnZXIgdGhlIHR5cGluZyBpbmRpY2F0b3IuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEdlbmVyYWxseSBib3RzIHNob3VsZCAqKm5vdCoqIHVzZSB0aGlzIHJvdXRlLlxuICAgKiBIb3dldmVyLCBpZiBhIGJvdCBpcyByZXNwb25kaW5nIHRvIGEgY29tbWFuZCBhbmQgZXhwZWN0cyB0aGUgY29tcHV0YXRpb24gdG8gdGFrZSBhIGZldyBzZWNvbmRzLFxuICAgKiB0aGlzIGVuZHBvaW50IG1heSBiZSBjYWxsZWQgdG8gbGV0IHRoZSB1c2VyIGtub3cgdGhhdCB0aGUgYm90IGlzIHByb2Nlc3NpbmcgdGhlaXIgbWVzc2FnZS5cbiAgICpcbiAgICogRmlyZXMgYSBfVHlwaW5nIFN0YXJ0XyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCN0cmlnZ2VyLXR5cGluZy1pbmRpY2F0b3J9XG4gICAqL1xuICB0cmlnZ2VyVHlwaW5nSW5kaWNhdG9yOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFJlLXJlZ2lzdGVycyB0aGUgbGlzdCBvZiBnbG9iYWwgYXBwbGljYXRpb24gY29tbWFuZHMsIG92ZXJ3cml0aW5nIHRoZSBwcmV2aW91cyBjb21tYW5kcyBjb21wbGV0ZWx5LlxuICAgKlxuICAgKiBAcGFyYW0gY29tbWFuZHMgLSBUaGUgbGlzdCBvZiBjb21tYW5kcyB0byB1c2UgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBsaXN0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGVuZHBvaW50LlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmR9IG9iamVjdHMgYXNzb3J0ZWQgYnkgY29tbWFuZCBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4p2XIENvbW1hbmRzIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIHRoZSBgY29tbWFuZHNgIGFycmF5IHdpbGwgYmUgX19kZWxldGVkX18uXG4gICAqXG4gICAqIOKaoO+4jyBDb21tYW5kcyB0aGF0IGRvIG5vdCBhbHJlYWR5IGV4aXN0IHdpbGwgY291bnQgdG93YXJkcyB0aGUgZGFpbHkgbGltaXQgb2YgXzIwMF8gbmV3IGNvbW1hbmRzLlxuICAgKlxuICAgKiBXaGVuIHVzaW5nIHRoZSBiZWFyZXIgdG9rZW4gdGhlIHRva2VuIG5lZWRzIHRoZSBgYXBwbGljYXRpb25zLmNvbW1hbmRzLnVwZGF0ZWAgc2NvcGUgYW5kIG11c3QgYmUgYSBgQ2xpZW50IGdyYW50YCB0b2tlbi5cbiAgICogIFlvdSB3aWxsIGJlIGFibGUgdG8gdXBkYXRlIG9ubHkgeW91ciBvd24gYXBwbGljYXRpb24gY29tbWFuZHNcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2J1bGstb3ZlcndyaXRlLWdsb2JhbC1hcHBsaWNhdGlvbi1jb21tYW5kc31cbiAgICovXG4gIHVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHM6IChcbiAgICBjb21tYW5kczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kW10sXG4gICAgb3B0aW9ucz86IFVwc2VydEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kPltdPlxuICAvKipcbiAgICogUmUtcmVnaXN0ZXJzIHRoZSBsaXN0IG9mIGFwcGxpY2F0aW9uIGNvbW1hbmRzIHJlZ2lzdGVyZWQgaW4gYSBndWlsZCwgb3ZlcndyaXRpbmcgdGhlIHByZXZpb3VzIGNvbW1hbmRzIGNvbXBsZXRlbHkuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB3aG9zZSBsaXN0IG9mIGNvbW1hbmRzIHRvIG92ZXJ3cml0ZS5cbiAgICogQHBhcmFtIGNvbW1hbmRzIC0gVGhlIGxpc3Qgb2YgY29tbWFuZHMgdG8gdXNlIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgbGlzdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBlbmRwb2ludC5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfSBvYmplY3RzIGFzc29ydGVkIGJ5IGNvbW1hbmQgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIOKdlyBDb21tYW5kcyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgYGNvbW1hbmRzYCBhcnJheSB3aWxsIGJlIF9fZGVsZXRlZF9fLlxuICAgKlxuICAgKiDimqDvuI8gQ29tbWFuZHMgdGhhdCBkbyBub3QgYWxyZWFkeSBleGlzdCB3aWxsIGNvdW50IHRvd2FyZHMgdGhlIGRhaWx5IGxpbWl0IG9mIF8yMDBfIG5ldyBjb21tYW5kcy5cbiAgICpcbiAgICogV2hlbiB1c2luZyB0aGUgYmVhcmVyIHRva2VuIHRoZSB0b2tlbiBuZWVkcyB0aGUgYGFwcGxpY2F0aW9ucy5jb21tYW5kcy51cGRhdGVgIHNjb3BlIGFuZCBtdXN0IGJlIGEgYENsaWVudCBncmFudGAgdG9rZW4uXG4gICAqICBZb3Ugd2lsbCBiZSBhYmxlIHRvIHVwZGF0ZSBvbmx5IHlvdXIgb3duIGFwcGxpY2F0aW9uIGNvbW1hbmRzXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNidWxrLW92ZXJ3cml0ZS1ndWlsZC1hcHBsaWNhdGlvbi1jb21tYW5kc31cbiAgICovXG4gIHVwc2VydEd1aWxkQXBwbGljYXRpb25Db21tYW5kczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kW10sXG4gICAgb3B0aW9ucz86IFVwc2VydEd1aWxkQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+W10+XG4gIC8qKlxuICAgKiBCYW5zIGEgdXNlciBmcm9tIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBiYW4gdGhlIHVzZXIgZnJvbS5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBiYW4gZnJvbSB0aGUgZ3VpbGQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgYmFuLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQkFOX01FTUJFUlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIEJhbiBBZGRfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNjcmVhdGUtZ3VpbGQtYmFufVxuICAgKi9cbiAgYmFuTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IENyZWF0ZUd1aWxkQmFuLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEJhbnMgdXAgdG8gMjAwIHVzZXJzIGZyb20gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGJhbiB0aGUgdXNlcnMgZnJvbS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgdXNlcnMgdG8gYmFuIGFuZCB0aGUgb3RoZXIgb3B0aW9ucyBmb3IgdGhlIGJhbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYEJBTl9NRU1CRVJTYCBhbmQgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbnMuXG4gICAqXG4gICAqIElmIGFsbCBwcm92aWRlZCB1c2VycyBmYWlsIHRvIGJlIGJhbm5lZCwgZGlzY29yZCB3aWxsIHJlc3BvbmQgd2l0aCBhbiBlcnJvciAoY29kZTogYDUwMDAwMDogRmFpbGVkIHRvIGJhbiB1c2Vyc2ApXG4gICAqXG4gICAqIEZpcmVzIGFzIG1hbnkgX0d1aWxkIEJhbiBBZGRfIGdhdGV3YXkgZXZlbnRzIGFzIG1hbnkgdXNlciB3aGVyZSBiYW5uZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNidWxrLWd1aWxkLWJhbn1cbiAgICovXG4gIGJ1bGtCYW5NZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZEJ1bGtCYW4sIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQnVsa0Jhbj4+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgbmlja25hbWUgb2YgdGhlIGJvdCB1c2VyLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZWRpdCB0aGUgbmlja25hbWUgb2YgdGhlIGJvdCB1c2VyIGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgbmlja25hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZE1lbWJlcn1cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfR3VpbGQgTWVtYmVyIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21vZGlmeS1jdXJyZW50LW1lbWJlcn1cbiAgICovXG4gIGVkaXRCb3RNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRCb3RNZW1iZXJPcHRpb25zLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcj4+XG4gIC8qKlxuICAgKiBFZGl0cyBhIG1lbWJlcidzIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBlZGl0IHRoZSBtZW1iZXIgb2YuXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgdXNlciBJRCBvZiB0aGUgbWVtYmVyIHRvIGVkaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIHVzZXIuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgZW5kcG9pbnQgcmVxdWlyZXMgdmFyaW91cyBwZXJtaXNzaW9ucyBkZXBlbmRpbmcgb24gd2hhdCBpcyBlZGl0ZWQgYWJvdXQgdGhlIG1lbWJlci5cbiAgICogVG8gZmluZCBvdXQgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb24gdG8gZW5hY3QgYSBjaGFuZ2UsIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyBlbmRwb2ludCdzIHtAbGluayBNb2RpZnlHdWlsZE1lbWJlciB8IHBhcmFtZXRlcnN9LlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXIgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbW9kaWZ5LWd1aWxkLW1lbWJlcn1cbiAgICovXG4gIGVkaXRNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlHdWlsZE1lbWJlciwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZW1iZXI+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbWVtYmVyIG9iamVjdCBieSB1c2VyIElELlxuICAgKlxuICBcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbWVtYmVyIG9iamVjdCBmb3IuXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBtZW1iZXIgb2JqZWN0IGZvci5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRNZW1iZXJXaXRoVXNlcn0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtbWVtYmVyfVxuICAgKi9cbiAgZ2V0TWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyV2l0aFVzZXI+PlxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBtZW1iZXIgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gYmVhcmVyVG9rZW4gLSBUaGUgYWNjZXNzIHRva2VuIG9mIHRoZSB1c2VyXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIG1lbWJlciBvYmplY3QgZm9yLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZE1lbWJlcldpdGhVc2VyfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhlIGFjY2VzcyB0b2tlbnMgbmVlZHMgdGhlIGBndWlsZHMubWVtYmVycy5yZWFkYCBzY29wZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvdXNlciNnZXQtY3VycmVudC11c2VyLWd1aWxkLW1lbWJlcn1cbiAgICovXG4gIGdldEN1cnJlbnRNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcldpdGhVc2VyPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgbWVtYmVycyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGlzdCBvZiBtZW1iZXJzIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBtZW1iZXJzLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRNZW1iZXJXaXRoVXNlcn0gb2JqZWN0cyBhc3NvcnRlZCBieSB1c2VyIElELlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYEdVSUxEX01FTUJFUlNgIGludGVudC5cbiAgICpcbiAgICog4pqg77iPIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBlbmRwb2ludCB3aXRoIHZlcnkgbGFyZ2UgYm90cy4gSW5zdGVhZCwgb3B0IHRvIHVzZSBgZmV0Y2hNZW1iZXJzKClgOlxuICAgKiBSRVNUIGNvbW11bmljYXRpb24gb25seSBwZXJtaXRzIDUwIHJlcXVlc3RzIHRvIGJlIG1hZGUgcGVyIHNlY29uZCwgd2hpbGUgZ2F0ZXdheXMgYWxsb3cgZm9yIHVwIHRvIDEyMCByZXF1ZXN0c1xuICAgKiBwZXIgbWludXRlIHBlciBzaGFyZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlYWQge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9yYXRlLWxpbWl0cyNyYXRlLWxpbWl0c30uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNsaXN0LWd1aWxkLW1lbWJlcnN9XG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3JlcXVlc3QtZ3VpbGQtbWVtYmVyc31cbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL3JhdGUtbGltaXRzI3JhdGUtbGltaXRzfVxuICAgKi9cbiAgZ2V0TWVtYmVyczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTGlzdEd1aWxkTWVtYmVycykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyV2l0aFVzZXI+W10+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc2VyaWFsaXplZCBhY3Rpdml0eSBpbnN0YW5jZSwgaWYgaXQgZXhpc3RzLiBVc2VmdWwgZm9yIHByZXZlbnRpbmcgdW53YW50ZWQgYWN0aXZpdHkgc2Vzc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvblxuICAgKiBAcGFyYW0gaW5zdGFuY2VJZCAtIFRoZSBJRCBvZiB0aGUgYWN0aXZpdHkgaW5zdGFuY2VcbiAgICovXG4gIGdldEFwcGxpY2F0aW9uQWN0aXZpdHlJbnN0YW5jZTogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgaW5zdGFuY2VJZDogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBY3Rpdml0eUluc3RhbmNlPj5cbiAgLyoqXG4gICAqIEtpY2tzIGEgbWVtYmVyIGZyb20gYSBndWlsZC5cbiAgICpcbiAgXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBraWNrIHRoZSBtZW1iZXIgZnJvbS5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSBtZW1iZXIgdG8ga2ljayBmcm9tIHRoZSBndWlsZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYEtJQ0tfTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgTWVtYmVyIFJlbW92ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI3JlbW92ZS1ndWlsZC1tZW1iZXJ9XG4gICAqL1xuICBraWNrTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBQaW5zIGEgbWVzc2FnZSBpbiBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgd2hlcmUgdGhlIG1lc3NhZ2UgaXMgdG8gYmUgcGlubmVkLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIHBpbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFBJTl9NRVNTQUdFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfQ2hhbm5lbCBQaW5zIFVwZGF0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9tZXNzYWdlI3Bpbi1tZXNzYWdlfVxuICAgKi9cbiAgcGluTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBJbml0aWF0ZXMgdGhlIHByb2Nlc3Mgb2YgcHJ1bmluZyBpbmFjdGl2ZSBtZW1iZXJzLlxuICAgKlxuICBcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIHBydW5lIHRoZSBtZW1iZXJzIG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcHJ1bmluZyBvZiBtZW1iZXJzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEEgbnVtYmVyIGluZGljYXRpbmcgaG93IG1hbnkgbWVtYmVycyB3ZXJlIHBydW5lZC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIGFuZCBgS0lDS19NRU1CRVJTYCBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICog4p2XIFJlcXVlc3RzIHRvIHRoaXMgZW5kcG9pbnQgd2lsbCB0aW1lIG91dCBmb3IgbGFyZ2UgZ3VpbGRzLiBUbyBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmcsIHNldCB0aGUge0BsaW5rIEJlZ2luR3VpbGRQcnVuZS5jb21wdXRlUHJ1bmVDb3VudH0gcHJvcGVydHkgb2YgdGhlIG9wdGlvbnMgb2JqZWN0IHBhcmFtZXRlciB0byBgZmFsc2VgLiBUaGlzIHdpbGwgYmVnaW4gdGhlIHByb2Nlc3Mgb2YgcHJ1bmluZywgYW5kIGltbWVkaWF0ZWx5IHJldHVybiBgdW5kZWZpbmVkYCwgcmF0aGVyIHRoYW4gd2FpdCBmb3IgdGhlIHByb2Nlc3MgdG8gY29tcGxldGUgYmVmb3JlIHJldHVybmluZyB0aGUgYWN0dWFsIGNvdW50IG9mIG1lbWJlcnMgdGhhdCBoYXZlIGJlZW4ga2lja2VkLlxuICAgKlxuICAgKiDimqDvuI8gQnkgZGVmYXVsdCwgdGhpcyBwcm9jZXNzIHdpbGwgbm90IHJlbW92ZSBtZW1iZXJzIHdpdGggYSByb2xlLiBUbyBpbmNsdWRlIHRoZSBtZW1iZXJzIHdobyBoYXZlIGEgX3BhcnRpY3VsYXIgc3Vic2V0IG9mIHJvbGVzXywgc3BlY2lmeSB0aGUgcm9sZShzKSBpbiB0aGUge0BsaW5rIEJlZ2luR3VpbGRQcnVuZS5pbmNsdWRlUm9sZXMgfCBpbmNsdWRlUm9sZXN9IHByb3BlcnR5IG9mIHRoZSBvcHRpb25zIG9iamVjdCBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIE1lbWJlciBSZW1vdmVfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IG1lbWJlciBraWNrZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNiZWdpbi1ndWlsZC1wcnVuZX1cbiAgICovXG4gIHBydW5lTWVtYmVyczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQmVnaW5HdWlsZFBydW5lLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8eyBwcnVuZWQ6IG51bWJlciB8IG51bGwgfT5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgbWVtYmVycyB3aG9zZSB1c2VybmFtZXMgb3Igbmlja25hbWVzIHN0YXJ0IHdpdGggYSBwcm92aWRlZCBzdHJpbmcuXG4gICAqXG4gIFxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gc2VhcmNoIGluLlxuICAgKiBAcGFyYW0gcXVlcnkgLSBUaGUgc3RyaW5nIHRvIG1hdGNoIHVzZXJuYW1lcyBvciBuaWNrbmFtZXMgYWdhaW5zdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3Igc2VhcmNoaW5nIHRocm91Z2ggdGhlIG1lbWJlcnMuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZE1lbWJlcn0gb2JqZWN0cyBhc3NvcnRlZCBieSB1c2VyIElELlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjc2VhcmNoLWd1aWxkLW1lbWJlcnN9XG4gICAqL1xuICBzZWFyY2hNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBxdWVyeTogc3RyaW5nLCBvcHRpb25zPzogT21pdDxTZWFyY2hNZW1iZXJzLCAncXVlcnknPikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyV2l0aFVzZXI+W10+XG4gIC8qKlxuICAgKiBVbmJhbnMgYSB1c2VyIGZyb20gYSBndWlsZC5cbiAgICpcbiAgXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byB1bmJhbiB0aGUgdXNlciBpbi5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byB1bmJhbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYEJBTl9NRU1CRVJTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBCYW4gUmVtb3ZlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjcmVtb3ZlLWd1aWxkLWJhbn1cbiAgICovXG4gIHVuYmFuTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBVbnBpbiBhIG1lc3NhZ2UgaW4gYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHdoZXJlIHRoZSBtZXNzYWdlIGlzIHBpbm5lZC5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byB1bnBpbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFBJTl9NRVNTQUdFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfQ2hhbm5lbCBQaW5zIFVwZGF0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9tZXNzYWdlI3VucGluLW1lc3NhZ2V9XG4gICAqL1xuICB1bnBpbk1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogR2V0IHRoZSBndWlsZCBvbmJvYXJkaW5nXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIGd1aWxkIHRvIGdldCB0aGUgb25ib2FyZGluZyBmcm9tXG4gICAqL1xuICBnZXRHdWlsZE9uYm9hcmRpbmc6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEd1aWxkT25ib2FyZGluZz4+XG4gIC8qKlxuICAgKiBNb2RpZmllcyB0aGUgb25ib2FyZGluZyBjb25maWd1cmF0aW9uIG9mIHRoZSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgZ3VpbGQgdG8gZWRpdCB0aGUgb25ib2FyZGluZyBmcm9tXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIGFuZCBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogT25ib2FyZGluZyBlbmZvcmNlcyBjb25zdHJhaW50cyB3aGVuIGVuYWJsZWQuIFRoZXNlIGNvbnN0cmFpbnRzIGFyZTpcbiAgICogIC0gYXQgbGVhc3QgNyBkZWZhdWx0IGNoYW5uZWxzXG4gICAqICAtIGF0IGxlYXN0IDUgb2YgdGhlIDcgY2hhbm5lbHMgbXVzdCBhbGxvdyBzZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBcXEBldmVyeW9uZSByb2xlXG4gICAqXG4gICAqIFRoZSBgbW9kZWAgZmllbGQgbW9kaWZpZXMgd2hhdCBpcyBjb25zaWRlcmVkIHdoZW4gZW5mb3JjaW5nIHRoZXNlIGNvbnN0cmFpbnRzLlxuICAgKi9cbiAgZWRpdEd1aWxkT25ib2FyZGluZzogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdEd1aWxkT25ib2FyZGluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHdWlsZE9uYm9hcmRpbmc+PlxuICAvKipcbiAgICogTW9kaWZpZXMgdGhlIGluY2lkZW50IGFjdGlvbnMgb2YgdGhlIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBndWlsZCB0byBlZGl0IHRoZSBpbmNpZGVudCBhY3Rpb25zIGZyb21cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGluY2lkZW50IGFjdGlvbnNcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqL1xuICBtb2RpZnlHdWlsZEluY2lkZW50QWN0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5R3VpbGRJbmNpZGVudEFjdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEluY2lkZW50c0RhdGE+PlxuICAvKipcbiAgICogUmV0dXJucyBhbGwgZW50aXRsZW1lbnRzIGZvciBhIGdpdmVuIGFwcCwgYWN0aXZlIGFuZCBleHBpcmVkLlxuICAgKlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBlbnRpdGxlbWVudHNcbiAgICogQHBhcmFtIHtHZXRFbnRpdGxlbWVudHN9IFtvcHRpb25zXSAtIFRoZSBvcHRpb25hbCBxdWVyeSBwYXJhbXMgZm9yIHRoZSBlbmRwb2ludFxuICAgKi9cbiAgbGlzdEVudGl0bGVtZW50czogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEVudGl0bGVtZW50cykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkRW50aXRsZW1lbnQ+W10+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGVudGl0bGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBlbnRpdGxlbWVudFxuICAgKiBAcGFyYW0gZW50aXRsZW1lbnRJZCAtIFRoZSBpZCBvZiB0aGUgZW50aXRsZW1lbnQgdG8gZ2V0XG4gICAqL1xuICBnZXRFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgZW50aXRsZW1lbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRFbnRpdGxlbWVudD4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGVzdCBlbnRpdGxlbWVudCB0byBhIGdpdmVuIFNLVSBmb3IgYSBnaXZlbiBndWlsZCBvciB1c2VyLiBEaXNjb3JkIHdpbGwgYWN0IGFzIHRob3VnaCB0aGF0IHVzZXIgb3IgZ3VpbGQgaGFzIGVudGl0bGVtZW50IHRvIHlvdXIgcHJlbWl1bSBvZmZlcmluZy5cbiAgICpcbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGNyZWF0ZSB0aGUgZW50aXRsZW1lbnRcbiAgICogQHBhcmFtIGJvZHkgLSBUaGUgb3B0aW9ucyBmb3IgbmV3IGVudGl0bGVtZW50XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgZW5kcG9pbnQgcmV0dXJucyBhIHBhcnRpYWwgZW50aXRsZW1lbnQgb2JqZWN0LlxuICAgKiBJdCB3aWxsIG5vdCBjb250YWluIHN1YnNjcmlwdGlvbl9pZCwgc3RhcnRzX2F0LCBvciBlbmRzX2F0LCBhcyBpdCdzIHZhbGlkIGluIHBlcnBldHVpdHkuXG4gICAqL1xuICBjcmVhdGVUZXN0RW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsIGJvZHk6IENyZWF0ZVRlc3RFbnRpdGxlbWVudCkgPT4gUHJvbWlzZTxQYXJ0aWFsPENhbWVsaXplPERpc2NvcmRFbnRpdGxlbWVudD4+PlxuICAvKipcbiAgICogRGVsZXRlcyBhIGN1cnJlbnRseS1hY3RpdmUgdGVzdCBlbnRpdGxlbWVudC4gRGlzY29yZCB3aWxsIGFjdCBhcyB0aG91Z2ggdGhhdCB1c2VyIG9yIGd1aWxkIG5vIGxvbmdlciBoYXMgZW50aXRsZW1lbnQgdG8geW91ciBwcmVtaXVtIG9mZmVyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gZnJvbSB3aGVyZSBkZWxldGUgdGhlIGVudGl0bGVtZW50XG4gICAqIEBwYXJhbSBlbnRpdGxlbWVudElkIC0gVGhlIGlkIG9mIHRoZSBlbnRpdGxlbWVudCB0byBkZWxldGVcbiAgICovXG4gIGRlbGV0ZVRlc3RFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgZW50aXRsZW1lbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBGb3IgT25lLVRpbWUgUHVyY2hhc2UgY29uc3VtYWJsZSBTS1VzLCBtYXJrcyBhIGdpdmVuIGVudGl0bGVtZW50IGZvciB0aGUgdXNlciBhcyBjb25zdW1lZC4gVGhlIGVudGl0bGVtZW50IHdpbGwgaGF2ZSBgY29uc3VtZWQ6IHRydWVgIHdoZW4gdXNpbmcge0BsaW5rIGxpc3RFbnRpdGxlbWVudHMgfCBMaXN0IEVudGl0bGVtZW50c31cbiAgICpcbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgZW50aXRsZW1lbnRcbiAgICogQHBhcmFtIGVudGl0bGVtZW50SWQgLSBUaGUgaWQgb2YgdGhlIGVudGl0bGVtZW50IHRvIGdldFxuICAgKi9cbiAgY29uc3VtZUVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBlbnRpdGxlbWVudElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIFNLVXMgZm9yIGEgZ2l2ZW4gYXBwbGljYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgaWQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgU0tVc1xuICAgKi9cbiAgbGlzdFNrdXM6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFNrdT5bXT5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIHN1YnNjcmlwdGlvbnMgY29udGFpbmluZyB0aGUgU0tVLCBmaWx0ZXJlZCBieSB1c2VyLlxuICAgKlxuICAgKiBAcGFyYW0gc2t1SWQgLSBUaGUgaWQgb2YgdGhlIHNrdSBvZiBnZXQgdGhlIHN1YnNjcmlwdGlvbnMgZm9yXG4gICAqL1xuICBsaXN0U3Vic2NyaXB0aW9uczogKHNrdUlkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBMaXN0U2t1U3Vic2NyaXB0aW9uc09wdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFN1YnNjcmlwdGlvbltdPj5cbiAgLyoqXG4gICAqIEdldCBhIHN1YnNjcmlwdGlvbiBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBza3VJZCAtIFRoZSBpZCBvZiB0aGUgc2t1IG9mIGdldCB0aGUgc3Vic2NyaXB0aW9ucyBmb3JcbiAgICovXG4gIGdldFN1YnNjcmlwdGlvbjogKHNrdUlkOiBCaWdTdHJpbmcsIHN1YnNjcmlwdGlvbklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFN1YnNjcmlwdGlvbj4+XG4gIC8qKlxuICAgKiBTZW5kIGEgc291bmRib2FyZCBzb3VuZCB0byBhIHZvaWNlIGNoYW5uZWwgdGhlIHVzZXIgaXMgY29ubmVjdGVkIHRvLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIGlkIG9mIHRoZSB2b2ljZSBjaGFubmVsXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX1ZvaWNlIENoYW5uZWwgRWZmZWN0IFNlbmRfIEdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIFJlcXVpcmVzIHRoZSBgU1BFQUtgIGFuZCBgVVNFX1NPVU5EQk9BUkRgIHBlcm1pc3Npb25zLCBhbmQgYWxzbyB0aGUgYFVTRV9FWFRFUk5BTF9TT1VORFNgIHBlcm1pc3Npb24gaWYgdGhlIHNvdW5kIGlzIGZyb20gYSBkaWZmZXJlbnQgc2VydmVyLlxuICAgKiBBZGRpdGlvbmFsbHksIHJlcXVpcmVzIHRoZSB1c2VyIHRvIGJlIGNvbm5lY3RlZCB0byB0aGUgdm9pY2UgY2hhbm5lbCwgaGF2aW5nIGEgdm9pY2Ugc3RhdGUgd2l0aG91dCBgZGVhZmAsIGBzZWxmX2RlYWZgLCBgbXV0ZWAsIG9yIGBzdXBwcmVzc2AgZW5hYmxlZC5cbiAgICovXG4gIHNlbmRTb3VuZGJvYXJkU291bmQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogU2VuZFNvdW5kYm9hcmRTb3VuZCkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogUmV0dXJucyBhbiBhcnJheSBvZiBzb3VuZGJvYXJkIHNvdW5kIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBieSBhbGwgdXNlcnMuICovXG4gIGxpc3REZWZhdWx0U291bmRib2FyZFNvdW5kczogKCkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU291bmRib2FyZFNvdW5kPltdPlxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGd1aWxkJ3Mgc291bmRib2FyZCBzb3VuZHMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIGd1aWxkIHRvIGdldCB0aGUgc291bmRzIGZyb21cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSW5jbHVkZXMgYHVzZXJgIGZpZWxkcyBpZiB0aGUgYm90IGhhcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICovXG4gIGxpc3RHdWlsZFNvdW5kYm9hcmRTb3VuZHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8eyBpdGVtczogQ2FtZWxpemU8RGlzY29yZFNvdW5kYm9hcmRTb3VuZD5bXSB9PlxuICAvKipcbiAgICogUmV0dXJucyBhIHNvdW5kYm9hcmQgc291bmQgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gc291bmQgaWQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIGd1aWxkIHRvIGdldCB0aGUgc291bmRzIGZyb21cbiAgICogQHBhcmFtIHNvdW5kSWQgLSBUaGUgc291bmQgaWRcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSW5jbHVkZXMgYHVzZXJgIGZpZWxkcyBpZiB0aGUgYm90IGhhcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICovXG4gIGdldEd1aWxkU291bmRib2FyZFNvdW5kOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBzb3VuZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFNvdW5kYm9hcmRTb3VuZD4+XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc291bmRib2FyZCBzb3VuZCBmb3IgdGhlIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBndWlsZCB0byBjcmVhdGUgdGhlIHNvdW5kcyBpblxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIGNyZWF0ZSB0aGUgc291bmRcbiAgICogQHBhcmFtIHJlYXNvbiAtIFRoZSBhdWRpdCBsb2cgcmVhc29uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX0d1aWxkIFNvdW5kYm9hcmQgU291bmQgQ3JlYXRlXyBHYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICovXG4gIGNyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRTb3VuZGJvYXJkU291bmQ+PlxuICAvKipcbiAgICogTW9kaWZ5IHRoZSBnaXZlbiBzb3VuZGJvYXJkIHNvdW5kLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBndWlsZCB0byBjcmVhdGUgdGhlIHNvdW5kcyBpblxuICAgKiBAcGFyYW0gc291bmRJZCAtIFRoZSBzb3VuZCBpZCB0byB1cGRhdGVcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byB1cGRhdGUgdGhlIHNvdW5kXG4gICAqIEBwYXJhbSByZWFzb24gLSBUaGUgYXVkaXQgbG9nIHJlYXNvblxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9HdWlsZCBTb3VuZGJvYXJkIFNvdW5kIFVwZGF0ZV8gR2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogRm9yIHNvdW5kcyBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IHVzZXIsIHJlcXVpcmVzIGVpdGhlciB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRm9yIG90aGVyIHNvdW5kcywgcmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqL1xuICBtb2RpZnlHdWlsZFNvdW5kYm9hcmRTb3VuZDogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBzb3VuZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogTW9kaWZ5R3VpbGRTb3VuZGJvYXJkU291bmQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFNvdW5kYm9hcmRTb3VuZD4+XG4gIC8qKlxuICAgKiBEZWxldGUgdGhlIGdpdmVuIHNvdW5kYm9hcmQgc291bmQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIGd1aWxkIHRvIGNyZWF0ZSB0aGUgc291bmRzIGluXG4gICAqIEBwYXJhbSBzb3VuZElkIC0gVGhlIHNvdW5kIGlkIHRvIGRlbGV0ZVxuICAgKiBAcGFyYW0gcmVhc29uIC0gVGhlIGF1ZGl0IGxvZyByZWFzb25cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfR3VpbGQgU291bmRib2FyZCBTb3VuZCBEZWxldGVfIEdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEZvciBzb3VuZHMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLCByZXF1aXJlcyBlaXRoZXIgdGhlIGBDUkVBVEVfR1VJTERfRVhQUkVTU0lPTlNgIG9yIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqIEZvciBvdGhlciBzb3VuZHMsIHJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKi9cbiAgZGVsZXRlR3VpbGRTb3VuZGJvYXJkU291bmQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHNvdW5kSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBhcHBsaWNhdGlvbiByb2xlIGNvbm5lY3Rpb24gbWV0YWRhdGEgb2JqZWN0cyBmb3IgdGhlIGdpdmVuIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIHJvbGUgY29ubmVjdGlvbnMgZnJvbVxuICAgKiBAcmV0dXJucyBBIGxpc3Qgb2YgYXBwbGljYXRpb24gcm9sZSBjb25uZWN0aW9uIG1ldGFkYXRhIG9iamVjdHNcbiAgICovXG4gIGxpc3RBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkczogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhPltdPlxuICAvKipcbiAgICogVXBkYXRlcyBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgYXBwbGljYXRpb24gcm9sZSBjb25uZWN0aW9uIG1ldGFkYXRhIG9iamVjdHMgZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSByb2xlIGNvbm5lY3Rpb25zIGZyb21cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byB1cGRhdGUgdGhlIHJvbGUgY29ubmVjdGlvbnNcbiAgICogQHJldHVybnMgQSBsaXN0IG9mIGFwcGxpY2F0aW9uIHJvbGUgY29ubmVjdGlvbiBtZXRhZGF0YSBvYmplY3RzXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEFuIGFwcGxpY2F0aW9uIGNhbiBoYXZlIGEgbWF4aW11bSBvZiA1IG1ldGFkYXRhIHJlY29yZHMuXG4gICAqL1xuICB1cGRhdGVBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uc01ldGFkYXRhUmVjb3JkczogKFxuICAgIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhPltdLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25NZXRhZGF0YT5bXT5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgbG9iYnksIGFkZGluZyBhbnkgb2YgdGhlIHNwZWNpZmllZCBtZW1iZXJzIHRvIGl0LCBpZiBwcm92aWRlZC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byBjcmVhdGUgdGhlIGxvYmJ5XG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIGxvYmJ5XG4gICAqL1xuICBjcmVhdGVMb2JieTogKG9wdGlvbnM6IENyZWF0ZUxvYmJ5KSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRMb2JieT4+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbG9iYnkgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIGxvYmJ5IGlkLCBpZiBpdCBleGlzdHMuXG4gICAqXG4gICAqIEBwYXJhbSBsb2JieUlkIC0gVGhlIElEIG9mIHRoZSBsb2JieSB0byBnZXRcbiAgICogQHJldHVybnMgVGhlIGxvYmJ5IG9iamVjdFxuICAgKi9cbiAgZ2V0TG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExvYmJ5Pj5cbiAgLyoqXG4gICAqIE1vZGlmaWVzIHRoZSBzcGVjaWZpZWQgbG9iYnkgd2l0aCBuZXcgdmFsdWVzLCBpZiBwcm92aWRlZC5cbiAgICpcbiAgICogQHBhcmFtIGxvYmJ5SWQgLSBUaGUgSUQgb2YgdGhlIGxvYmJ5IHRvIG1vZGlmeVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIG1vZGlmeSB0aGUgbG9iYnlcbiAgICogQHJldHVybnMgVGhlIG1vZGlmaWVkIGxvYmJ5XG4gICAqL1xuICBtb2RpZnlMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5TG9iYnkpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExvYmJ5Pj5cbiAgLyoqXG4gICAqIERlbGV0ZXMgdGhlIHNwZWNpZmllZCBsb2JieSBpZiBpdCBleGlzdHMuXG4gICAqXG4gICAqIEl0IGlzIHNhZmUgdG8gY2FsbCBldmVuIGlmIHRoZSBsb2JieSBpcyBhbHJlYWR5IGRlbGV0ZWQgYXMgd2VsbC5cbiAgICpcbiAgICogQHBhcmFtIGxvYmJ5SWQgLSBUaGUgSUQgb2YgdGhlIGxvYmJ5IHRvIGRlbGV0ZVxuICAgKiBAcmV0dXJucyBOb3RoaW5nXG4gICAqL1xuICBkZWxldGVMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQWRkcyB0aGUgcHJvdmlkZWQgdXNlciB0byB0aGUgc3BlY2lmaWVkIGxvYmJ5LiBJZiBjYWxsZWQgd2hlbiB0aGUgdXNlciBpcyBhbHJlYWR5IGEgbWVtYmVyIG9mIHRoZSBsb2JieSB3aWxsIHVwZGF0ZSBmaWVsZHMgc3VjaCBhcyBtZXRhZGF0YSBvbiB0aGF0IHVzZXIgaW5zdGVhZC5cbiAgICpcbiAgICogQHBhcmFtIGxvYmJ5SWQgLSBUaGUgSUQgb2YgdGhlIGxvYmJ5IHRvIGFkZCB0aGUgdXNlciB0b1xuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGFkZCB0byB0aGUgbG9iYnlcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byBhZGQgdGhlIHVzZXIgdG8gdGhlIGxvYmJ5XG4gICAqIEByZXR1cm5zIFRoZSBsb2JieSBtZW1iZXIgb2JqZWN0XG4gICAqL1xuICBhZGRNZW1iZXJUb0xvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkTG9iYnlNZW1iZXIpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExvYmJ5TWVtYmVyPj5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIHByb3ZpZGVkIHVzZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGxvYmJ5LiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBldmVuIGlmIHRoZSB1c2VyIGlzIG5vIGxvbmdlciBhIG1lbWJlciBvZiB0aGUgbG9iYnksIGJ1dCB3aWxsIGZhaWwgaWYgdGhlIGxvYmJ5IGRvZXMgbm90IGV4aXN0LlxuICAgKlxuICAgKiBAcGFyYW0gbG9iYnlJZCAtIFRoZSBJRCBvZiB0aGUgbG9iYnkgdG8gcmVtb3ZlIHRoZSB1c2VyIGZyb21cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byByZW1vdmUgZnJvbSB0aGUgbG9iYnlcbiAgICogQHJldHVybnMgTm90aGluZ1xuICAgKi9cbiAgcmVtb3ZlTWVtYmVyRnJvbUxvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgY3VycmVudCB1c2VyIGZyb20gdGhlIHNwZWNpZmllZCBsb2JieS4gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZXZlbiBpZiB0aGUgdXNlciBpcyBubyBsb25nZXIgYSBtZW1iZXIgb2YgdGhlIGxvYmJ5LCBidXQgd2lsbCBmYWlsIGlmIHRoZSBsb2JieSBkb2VzIG5vdCBleGlzdC5cbiAgICpcbiAgICogQHBhcmFtIGxvYmJ5SWQgLSBUaGUgSUQgb2YgdGhlIGxvYmJ5IHRvIHJlbW92ZSB0aGUgdXNlciBmcm9tXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXJcbiAgICogQHJldHVybnMgTm90aGluZ1xuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIHJlcXVpcmVzIGEgYmVhcmVyIHRva2VuIGZvciBhdXRob3JpemF0aW9uXG4gICAqL1xuICBsZWF2ZUxvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCBiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBMaW5rcyBhbiBleGlzdGluZyB0ZXh0IGNoYW5uZWwgdG8gYSBsb2JieS5cbiAgICpcbiAgICogQHBhcmFtIGxvYmJ5SWQgLSBUaGUgSUQgb2YgdGhlIGxvYmJ5IHRvIGxpbmsgdGhlIGNoYW5uZWwgdG9cbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gVGhlIGFjY2VzcyB0b2tlbiBvZiB0aGUgdXNlclxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIGxpbmsgdGhlIGNoYW5uZWwgdG8gdGhlIGxvYmJ5XG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIGxvYmJ5IG9iamVjdFxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVc2VzIGJlYXJlciB0b2tlbiBmb3IgYXV0aG9yaXphdGlvbiBhbmQgdGhlIHVzZXIgbXVzdCBiZSBhIGxvYmJ5IG1lbWJlciB3aXRoIHRoZSBDYW5MaW5rTG9iYnkgbG9iYnkgbWVtYmVyIGZsYWcuXG4gICAqL1xuICBsaW5rQ2hhbm5lbFRvTG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcsIGJlYXJlclRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IExpbmtDaGFubmVsVG9Mb2JieSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTG9iYnk+PlxuICAvKipcbiAgICogVW5saW5rcyBhbnkgY3VycmVudGx5IGxpbmtlZCBjaGFubmVscyBmcm9tIHRoZSBzcGVjaWZpZWQgbG9iYnkuXG4gICAqXG4gICAqIEBwYXJhbSBsb2JieUlkIC0gVGhlIElEIG9mIHRoZSBsb2JieSB0byB1bmxpbmsgdGhlIGNoYW5uZWwgZnJvbVxuICAgKiBAcGFyYW0gYmVhcmVyVG9rZW4gLSBUaGUgYWNjZXNzIHRva2VuIG9mIHRoZSB1c2VyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIGxvYmJ5IG9iamVjdFxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVc2VzIGJlYXJlciB0b2tlbiBmb3IgYXV0aG9yaXphdGlvbiBhbmQgdGhlIHVzZXIgbXVzdCBiZSBhIGxvYmJ5IG1lbWJlciB3aXRoIHRoZSBDYW5MaW5rTG9iYnkgbG9iYnkgbWVtYmVyIGZsYWcuXG4gICAqL1xuICB1bmxpbmtDaGFubmVsVG9Mb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTG9iYnk+PlxufVxuXG5leHBvcnQgdHlwZSBSZXF1ZXN0TWV0aG9kcyA9ICdHRVQnIHwgJ1BPU1QnIHwgJ0RFTEVURScgfCAnUEFUQ0gnIHwgJ1BVVCdcbmV4cG9ydCB0eXBlIEFwaVZlcnNpb25zID0gOSB8IDEwXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUmVxdWVzdEJvZHlPcHRpb25zIHtcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgYm9keT86IGFueVxuICB1bmF1dGhvcml6ZWQ/OiBib29sZWFuXG4gIHJlYXNvbj86IHN0cmluZ1xuICBmaWxlcz86IEZpbGVDb250ZW50W11cbn1cblxuZXhwb3J0IHR5cGUgTWFrZVJlcXVlc3RPcHRpb25zID0gT21pdDxDcmVhdGVSZXF1ZXN0Qm9keU9wdGlvbnMsICdtZXRob2QnPiAmIFBpY2s8U2VuZFJlcXVlc3RPcHRpb25zLCAncnVuVGhyb3VnaFF1ZXVlJz5cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0Qm9keSB7XG4gIGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgYm9keT86IHN0cmluZyB8IEZvcm1EYXRhXG4gIG1ldGhvZDogUmVxdWVzdE1ldGhvZHNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZW5kUmVxdWVzdE9wdGlvbnMge1xuICAvKiogVGhlIHJvdXRlIHRvIHNlbmQgdGhlIHJlcXVlc3QgdG8uICovXG4gIHJvdXRlOiBzdHJpbmdcbiAgLyoqIFRoZSBtZXRob2QgdG8gdXNlIGZvciBzZW5kaW5nIHRoZSByZXF1ZXN0LiAqL1xuICBtZXRob2Q6IFJlcXVlc3RNZXRob2RzXG4gIC8qKiBUaGUgYW1vdW50IG9mIHRpbWVzIHRoaXMgcmVxdWVzdCBoYXMgYmVlbiByZXRyaWVkLiAqL1xuICByZXRyeUNvdW50OiBudW1iZXJcbiAgLyoqIEhhbmRsZXIgdG8gcmV0cnkgYSByZXF1ZXN0IHNob3VsZCBpdCBiZSByYXRlIGxpbWl0ZWQuICovXG4gIHJldHJ5UmVxdWVzdD86IChvcHRpb25zOiBTZW5kUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFJlc29sdmUgaGFuZGxlciB3aGVuIGEgcmVxdWVzdCBzdWNjZWVkcy4gKi9cbiAgcmVzb2x2ZTogKHZhbHVlOiBSZXN0UmVxdWVzdFJlc3BvbnNlKSA9PiB2b2lkXG4gIC8qKiBSZWplY3QgaGFuZGxlciB3aGVuIGEgcmVxdWVzdCBmYWlscy4gKi9cbiAgcmVqZWN0OiAodmFsdWU6IFJlc3RSZXF1ZXN0UmVqZWN0aW9uKSA9PiB2b2lkXG4gIC8qKiBJZiB0aGlzIHJlcXVlc3QgaGFzIGEgYnVja2V0IGlkIHdoaWNoIGl0IGZhbGxzIHVuZGVyIGZvciByYXRlIGxpbWl0ICovXG4gIGJ1Y2tldElkPzogc3RyaW5nXG4gIC8qKiBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9ucywgdXNlZCBmb3IgdGhpbmdzIGxpa2Ugb3ZlcnJpZGluZyBhdXRob3JpemF0aW9uIGhlYWRlci4gKi9cbiAgcmVxdWVzdEJvZHlPcHRpb25zPzogQ3JlYXRlUmVxdWVzdEJvZHlPcHRpb25zXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByZXF1ZXN0IHNob3VsZCBiZSBydW4gdGhyb3VnaCB0aGUgcXVldWUuXG4gICAqIFVzZWZ1bCBmb3Igcm91dGVzIHdoaWNoIGRvIG5vdCBoYXZlIGFueSByYXRlIGxpbWl0cy5cbiAgICovXG4gIHJ1blRocm91Z2hRdWV1ZT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN0UmF0ZUxpbWl0ZWRQYXRoIHtcbiAgdXJsOiBzdHJpbmdcbiAgcmVzZXRUaW1lc3RhbXA6IG51bWJlclxuICBidWNrZXRJZD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RSZXF1ZXN0UmVzcG9uc2Uge1xuICBvazogYm9vbGVhblxuICBzdGF0dXM6IG51bWJlclxuICAvKiogVGhlIHJldHVybmVkIGJvZHkgcGFyc2VkIGlmIGl0IHdhcyBKU09OLCBvdGhlcndpc2UgaXQgd2lsbCBiZSB0aGUgcmF3IGJvZHkgYXMgYSBzdHJpbmcgKi9cbiAgYm9keT86IHN0cmluZyB8IG9iamVjdFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RSZXF1ZXN0UmVqZWN0aW9uIHtcbiAgb2s6IGJvb2xlYW5cbiAgc3RhdHVzOiBudW1iZXJcbiAgLyoqIFRoZSBIVFRQIDEuMSBzdGF0dXMgY29kZSB0ZXh0ICovXG4gIHN0YXR1c1RleHQ/OiBzdHJpbmdcbiAgLyoqIFRoZSByZXR1cm5lZCBib2R5IHBhcnNlZCBpZiBpdCB3YXMgSlNPTiwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgdGhlIHJhdyBib2R5IGFzIGEgc3RyaW5nICovXG4gIGJvZHk/OiBzdHJpbmcgfCBvYmplY3RcbiAgZXJyb3I/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN0TWFuYWdlckV2ZW50cyB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYSByZXF1ZXN0IGlzIG1hZGUgdG8gdGhlIEFQSS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhlIGJvZHkgdGhhdCB3aWxsIGJlIHNlbnQgdG8gdGhlIEFQSSBpcyBhdmFpbGFibGUgaW4gdGhlIGBleHRyYWAgcGFyYW1ldGVyLiBEbyBub3QgY29uc3VtZSB0aGUgYm9keSBpbiB0aGUgYFJlcXVlc3RgIG9iamVjdCBhbmQgdXNlIHRoZSBvbmUgaW4gdGhlIGBleHRyYWAgcGFyYW1ldGVyIGluc3RlYWQuXG4gICAqL1xuICByZXF1ZXN0OiAocmVxdWVzdDogUmVxdWVzdCwgZXh0cmE6IHsgYm9keTogYW55IH0pID0+IHZvaWRcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhIHJlc3BvbnNlIGlzIHJlY2VpdmVkIGZyb20gdGhlIEFQSS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyBpcyBmaXJlZCBmb3IgYm90aCBzdWNjZXNzZnVsIGFuZCBmYWlsZWQgcmVxdWVzdHMsIHlvdSBzaG91bGQgY2hlY2sgdGhlIFJlc3BvbnNlIG9iamVjdCB0byBkZXRlcm1pbmUgaWYgdGhlIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWwgb3Igbm90LlxuICAgKlxuICAgKiBCb3RoIHRoZSByZXF1ZXN0IGFuZCB0aGUgcmVzcG9uc2UgYm9keSBhcmUgYXZhaWxhYmxlIGluIHRoZSBgZXh0cmFgIHBhcmFtZXRlci4gRG8gbm90IGNvbnN1bWUgdGhlIGJvZHkgaW4gdGhlIGBSZXF1ZXN0YCBvciBgUmVzcG9uc2VgIG9iamVjdCBhbmQgdXNlIHRoZSBvbmUgaW4gdGhlIGBleHRyYWAgcGFyYW1ldGVyIGluc3RlYWQuXG4gICAqL1xuICByZXNwb25zZTogKHJlcXVlc3Q6IFJlcXVlc3QsIHJlc3BvbnNlOiBSZXNwb25zZSwgZXh0cmE6IHsgcmVxdWVzdEJvZHk6IGFueTsgcmVzcG9uc2VCb2R5OiBzdHJpbmcgfCBvYmplY3QgfSkgPT4gdm9pZFxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgcmVxdWVzdCBlcnJvcnMgZHVlIHRvIGZldGNoIGVycm9yLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGUgYm9keSB0aGF0IHdhcyBzZW50IHRvIHRoZSBBUEkgaXMgYXZhaWxhYmxlIGluIHRoZSBgZXh0cmFgIHBhcmFtZXRlci5cbiAgICovXG4gIHJlcXVlc3RFcnJvcjogKHJlcXVlc3Q6IFJlcXVlc3QsIGVycm9yOiBhbnksIGV4dHJhOiB7IGJvZHk6IGFueSB9KSA9PiB2b2lkXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdXNHQSxXQXdCQyJ9
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEFkZERtUmVjaXBpZW50T3B0aW9ucyxcbiAgQWRkR3VpbGRNZW1iZXJPcHRpb25zLFxuICBBZGRMb2JieU1lbWJlcixcbiAgQXRMZWFzdE9uZSxcbiAgQmVnaW5HdWlsZFBydW5lLFxuICBCaWdTdHJpbmcsXG4gIENhbWVsaXplLFxuICBDaGFubmVsVHlwZXMsXG4gIENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgQ3JlYXRlQXBwbGljYXRpb25FbW9qaSxcbiAgQ3JlYXRlQXV0b01vZGVyYXRpb25SdWxlT3B0aW9ucyxcbiAgQ3JlYXRlQ2hhbm5lbEludml0ZSxcbiAgQ3JlYXRlRm9ydW1Qb3N0V2l0aE1lc3NhZ2UsXG4gIENyZWF0ZUdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gIENyZWF0ZUdyb3VwRG1PcHRpb25zLFxuICBDcmVhdGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZE9wdGlvbnMsXG4gIENyZWF0ZUd1aWxkQmFuLFxuICBDcmVhdGVHdWlsZEJ1bGtCYW4sXG4gIENyZWF0ZUd1aWxkQ2hhbm5lbCxcbiAgQ3JlYXRlR3VpbGRFbW9qaSxcbiAgQ3JlYXRlR3VpbGRSb2xlLFxuICBDcmVhdGVHdWlsZFNvdW5kYm9hcmRTb3VuZCxcbiAgQ3JlYXRlR3VpbGRTdGlja2VyT3B0aW9ucyxcbiAgQ3JlYXRlTG9iYnksXG4gIENyZWF0ZU1lc3NhZ2VPcHRpb25zLFxuICBDcmVhdGVTY2hlZHVsZWRFdmVudCxcbiAgQ3JlYXRlU3RhZ2VJbnN0YW5jZSxcbiAgQ3JlYXRlVGVtcGxhdGUsXG4gIENyZWF0ZVRlc3RFbnRpdGxlbWVudCxcbiAgQ3JlYXRlV2ViaG9vayxcbiAgRGVsZXRlV2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICBEaXNjb3JkQWNjZXNzVG9rZW5SZXNwb25zZSxcbiAgRGlzY29yZEFjdGl2aXR5SW5zdGFuY2UsXG4gIERpc2NvcmRBcHBsaWNhdGlvbixcbiAgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zLFxuICBEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUsXG4gIERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uLFxuICBEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhLFxuICBEaXNjb3JkQXVkaXRMb2csXG4gIERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGUsXG4gIERpc2NvcmRCYW4sXG4gIERpc2NvcmRCdWxrQmFuLFxuICBEaXNjb3JkQ2hhbm5lbCxcbiAgRGlzY29yZENvbm5lY3Rpb24sXG4gIERpc2NvcmRDdXJyZW50QXV0aG9yaXphdGlvbixcbiAgRGlzY29yZEVtb2ppLFxuICBEaXNjb3JkRW50aXRsZW1lbnQsXG4gIERpc2NvcmRGb2xsb3dlZENoYW5uZWwsXG4gIERpc2NvcmRHZXRBbnN3ZXJWb3Rlc1Jlc3BvbnNlLFxuICBEaXNjb3JkR2V0Q2hhbm5lbFBpbnMsXG4gIERpc2NvcmRHZXRHYXRld2F5Qm90LFxuICBEaXNjb3JkR3VpbGQsXG4gIERpc2NvcmRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zLFxuICBEaXNjb3JkR3VpbGRPbmJvYXJkaW5nLFxuICBEaXNjb3JkR3VpbGRQcmV2aWV3LFxuICBEaXNjb3JkR3VpbGRXaWRnZXQsXG4gIERpc2NvcmRHdWlsZFdpZGdldFNldHRpbmdzLFxuICBEaXNjb3JkSW5jaWRlbnRzRGF0YSxcbiAgRGlzY29yZEludGVncmF0aW9uLFxuICBEaXNjb3JkSW50ZXJhY3Rpb24sXG4gIERpc2NvcmRJbnRlcmFjdGlvbkNhbGxiYWNrUmVzcG9uc2UsXG4gIERpc2NvcmRJbnZpdGUsXG4gIERpc2NvcmRJbnZpdGVNZXRhZGF0YSxcbiAgRGlzY29yZExpc3RBY3RpdmVUaHJlYWRzLFxuICBEaXNjb3JkTGlzdEFyY2hpdmVkVGhyZWFkcyxcbiAgRGlzY29yZExvYmJ5LFxuICBEaXNjb3JkTG9iYnlNZW1iZXIsXG4gIERpc2NvcmRNZW1iZXIsXG4gIERpc2NvcmRNZW1iZXJXaXRoVXNlcixcbiAgRGlzY29yZE1lc3NhZ2UsXG4gIERpc2NvcmRQcnVuZWRDb3VudCxcbiAgRGlzY29yZFJvbGUsXG4gIERpc2NvcmRTY2hlZHVsZWRFdmVudCxcbiAgRGlzY29yZFNrdSxcbiAgRGlzY29yZFNvdW5kYm9hcmRTb3VuZCxcbiAgRGlzY29yZFN0YWdlSW5zdGFuY2UsXG4gIERpc2NvcmRTdGlja2VyLFxuICBEaXNjb3JkU3RpY2tlclBhY2ssXG4gIERpc2NvcmRTdWJzY3JpcHRpb24sXG4gIERpc2NvcmRUZW1wbGF0ZSxcbiAgRGlzY29yZFRocmVhZE1lbWJlcixcbiAgRGlzY29yZFRva2VuRXhjaGFuZ2UsXG4gIERpc2NvcmRUb2tlblJldm9jYXRpb24sXG4gIERpc2NvcmRVc2VyLFxuICBEaXNjb3JkVmFuaXR5VXJsLFxuICBEaXNjb3JkVm9pY2VSZWdpb24sXG4gIERpc2NvcmRWb2ljZVN0YXRlLFxuICBEaXNjb3JkV2ViaG9vayxcbiAgRGlzY29yZFdlbGNvbWVTY3JlZW4sXG4gIEVkaXRBcHBsaWNhdGlvbixcbiAgRWRpdEF1dG9Nb2RlcmF0aW9uUnVsZU9wdGlvbnMsXG4gIEVkaXRCb3RNZW1iZXJPcHRpb25zLFxuICBFZGl0Q2hhbm5lbFBlcm1pc3Npb25PdmVycmlkZXNPcHRpb25zLFxuICBFZGl0R3VpbGRPbmJvYXJkaW5nLFxuICBFZGl0R3VpbGRSb2xlLFxuICBFZGl0R3VpbGRTdGlja2VyT3B0aW9ucyxcbiAgRWRpdE1lc3NhZ2UsXG4gIEVkaXRPd25Wb2ljZVN0YXRlLFxuICBFZGl0U2NoZWR1bGVkRXZlbnQsXG4gIEVkaXRVc2VyVm9pY2VTdGF0ZSxcbiAgRWRpdFdlYmhvb2tNZXNzYWdlT3B0aW9ucyxcbiAgRXhlY3V0ZVdlYmhvb2ssXG4gIEZpbGVDb250ZW50LFxuICBHZXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uT3B0aW9ucyxcbiAgR2V0QmFucyxcbiAgR2V0Q2hhbm5lbFBpbnNPcHRpb25zLFxuICBHZXRFbnRpdGxlbWVudHMsXG4gIEdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHNPcHRpb25zLFxuICBHZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHNPcHRpb25zLFxuICBHZXRHdWlsZEF1ZGl0TG9nLFxuICBHZXRHdWlsZFBydW5lQ291bnRRdWVyeSxcbiAgR2V0SW52aXRlLFxuICBHZXRNZXNzYWdlc09wdGlvbnMsXG4gIEdldFBvbGxBbnN3ZXJWb3RlcyxcbiAgR2V0UmVhY3Rpb25zLFxuICBHZXRTY2hlZHVsZWRFdmVudHMsXG4gIEdldFNjaGVkdWxlZEV2ZW50VXNlcnMsXG4gIEdldFRocmVhZE1lbWJlcixcbiAgR2V0VXNlckd1aWxkcyxcbiAgR2V0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICBHdWlsZEZlYXR1cmVzLFxuICBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSxcbiAgSW50ZXJhY3Rpb25DYWxsYmFja09wdGlvbnMsXG4gIEludGVyYWN0aW9uUmVzcG9uc2UsXG4gIExpbmtDaGFubmVsVG9Mb2JieSxcbiAgTGlzdEFyY2hpdmVkVGhyZWFkcyxcbiAgTGlzdEd1aWxkTWVtYmVycyxcbiAgTGlzdFNrdVN1YnNjcmlwdGlvbnNPcHRpb25zLFxuICBMaXN0VGhyZWFkTWVtYmVycyxcbiAgTW9kaWZ5QXBwbGljYXRpb25FbW9qaSxcbiAgTW9kaWZ5Q2hhbm5lbCxcbiAgTW9kaWZ5R3VpbGQsXG4gIE1vZGlmeUd1aWxkQ2hhbm5lbFBvc2l0aW9ucyxcbiAgTW9kaWZ5R3VpbGRFbW9qaSxcbiAgTW9kaWZ5R3VpbGRJbmNpZGVudEFjdGlvbnMsXG4gIE1vZGlmeUd1aWxkTWVtYmVyLFxuICBNb2RpZnlHdWlsZFNvdW5kYm9hcmRTb3VuZCxcbiAgTW9kaWZ5R3VpbGRUZW1wbGF0ZSxcbiAgTW9kaWZ5R3VpbGRXZWxjb21lU2NyZWVuLFxuICBNb2RpZnlMb2JieSxcbiAgTW9kaWZ5Um9sZVBvc2l0aW9ucyxcbiAgTW9kaWZ5V2ViaG9vayxcbiAgU2NoZWR1bGVkRXZlbnRFbnRpdHlUeXBlLFxuICBTY2hlZHVsZWRFdmVudFN0YXR1cyxcbiAgU2VhcmNoTWVtYmVycyxcbiAgU2VuZFNvdW5kYm9hcmRTb3VuZCxcbiAgU3RhcnRUaHJlYWRXaXRoTWVzc2FnZSxcbiAgU3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZSxcbiAgVXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgVXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxufSBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmltcG9ydCB0eXBlIHsgbG9nZ2VyIH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEludmFsaWRSZXF1ZXN0QnVja2V0IH0gZnJvbSAnLi9pbnZhbGlkQnVja2V0LmpzJ1xuaW1wb3J0IHR5cGUgeyBRdWV1ZSB9IGZyb20gJy4vcXVldWUuanMnXG5pbXBvcnQgdHlwZSB7IFJlc3RSb3V0ZXMgfSBmcm9tICcuL3R5cGluZ3Mvcm91dGVzLmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJlc3RNYW5hZ2VyT3B0aW9ucyB7XG4gIC8qKiBUaGUgYm90IHRva2VuIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBtYWtlIHJlcXVlc3RzLiAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKlxuICAgKiBGb3Igb2xkIGJvdHMgdGhhdCBoYXZlIGEgZGlmZmVyZW50IGJvdCBpZCBhbmQgYXBwbGljYXRpb24gaWQuXG4gICAqIEBkZWZhdWx0IGJvdCBpZCBmcm9tIHRva2VuXG4gICAqL1xuICBhcHBsaWNhdGlvbklkPzogQmlnU3RyaW5nXG4gIC8qKiBDb25maWd1cmF0aW9uIHdoZW4gdXNpbmcgYSBwcm94eS4gKi9cbiAgcHJveHk/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgdXJsIHRvIGNvbm5lY3QgdG8uIElmIHlvdSBjcmVhdGUgYSBwcm94eSByZXN0LCB0aGF0IHVybCB3b3VsZCBnbyBoZXJlLlxuICAgICAqIElUIFNIT1VMRCBOT1QgRU5EIFdJVEggQSAvXG4gICAgICogQGRlZmF1bHQgaHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGlcbiAgICAgKi9cbiAgICBiYXNlVXJsOiBzdHJpbmdcbiAgICAvKiogVGhlIGF1dGhvcml6YXRpb24gaGVhZGVyIHZhbHVlIHRvIGF0dGFjaCB3aGVuIHNlbmRpbmcgcmVxdWVzdHMgdG8gdGhlIHByb3h5LiAqL1xuICAgIGF1dGhvcml6YXRpb24/OiBzdHJpbmdcbiAgICAvKipcbiAgICAgKiBUaGUgYXV0aG9yaXphdGlvbiBoZWFkZXIgbmFtZSB0byB1c2Ugd2hlbiBzZW5kaW5nIHJlcXVlc3RzIHRvIHRoZSBwcm94eVxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBJZiB0aGUgaGVhZGVyIG5hbWUgaXMgc2V0IHRvIGBhdXRob3JpemF0aW9uYCwgaXQgd2lsbCBvdmVycmlkZSBhbnkgYXV0aG9yaXphdGlvbiB0aGF0IGlzIGdpdmVuIGV2ZW4gaWZcbiAgICAgKiB0aGUgcmVxdWVzdHMgdXNlcyBPQXV0aDIgQmVhcmVyIHRva2VucyAvIEJhc2ljIHRva2Vuc1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJhdXRob3JpemF0aW9uXCIgLy8gRm9yIGNvbXBhdGliaWxpdHkgcHVycG9zZXNcbiAgICAgKi9cbiAgICBhdXRob3JpemF0aW9uSGVhZGVyPzogc3RyaW5nXG4gICAgLyoqXG4gICAgICogVGhlIGVuZHBvaW50IHRvIHVzZSBpbiB0aGUgcmVzdCBwcm94eSB0byB1cGRhdGUgdGhlIGJlYXJlciB0b2tlbnNcbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogU2hvdWxkIG5vdCBpbmNsdWRlIGEgYC9gIGluIHRoZSBzdGFydFxuICAgICAqXG4gICAgICogVGhpcyB2YWx1ZSBpcyBhY3R1YWxseSByZXF1aXJlZCBpZiB5b3Ugd2FudCB0byB1c2UgYHVwZGF0ZVRva2VuUXVldWVzYFxuICAgICAqL1xuICAgIHVwZGF0ZUJlYXJlclRva2VuRW5kcG9pbnQ/OiBzdHJpbmdcbiAgfVxuICAvKipcbiAgICogVGhlIGFwaSB2ZXJzaW9ucyB3aGljaCBjYW4gYmUgdXNlZCB0byBtYWtlIHJlcXVlc3RzLlxuICAgKiBAZGVmYXVsdCAxMFxuICAgKi9cbiAgdmVyc2lvbj86IEFwaVZlcnNpb25zXG4gIC8qKlxuICAgKiBUaGUgbG9nZ2VyIHRoYXQgdGhlIHJlc3QgbWFuYWdlciB3aWxsIHVzZVxuICAgKiBAZGVmYXVsdCBsb2dnZXIgLy8gVGhlIGxvZ2dlciBleHBvcnRlZCBieSBgQGRpc2NvcmRlbm8vdXRpbHNgXG4gICAqL1xuICBsb2dnZXI/OiBQaWNrPHR5cGVvZiBsb2dnZXIsICdkZWJ1ZycgfCAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InIHwgJ2ZhdGFsJz5cbiAgLyoqIEV2ZW50cyBmb3IgdGhlIHJlc3QgbWFuYWdlciAqL1xuICBldmVudHM/OiBQYXJ0aWFsPFJlc3RNYW5hZ2VyRXZlbnRzPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RNYW5hZ2VyIHtcbiAgLyoqIFRoZSBib3QgdG9rZW4gd2hpY2ggd2lsbCBiZSB1c2VkIHRvIG1ha2UgcmVxdWVzdHMuICovXG4gIHRva2VuOiBzdHJpbmdcbiAgLyoqIFRoZSBhcHBsaWNhdGlvbiBpZC4gTm9ybWFsbHkgdGhpcyBpcyBub3QgcmVxdWlyZWQgZm9yIHJlY2VudCBib3RzIGJ1dCBvbGQgYm90J3MgYXBwbGljYXRpb24gaWQgaXMgc29tZXRpbWVzIGRpZmZlcmVudCBmcm9tIHRoZSBib3QgaWQgc28gaXQgaXMgcmVxdWlyZWQgZm9yIHRob3NlIGJvdHMuICovXG4gIGFwcGxpY2F0aW9uSWQ6IGJpZ2ludFxuICAvKiogVGhlIGFwaSB2ZXJzaW9uIHRvIHVzZSB3aGVuIG1ha2luZyByZXF1ZXN0cy4gT25seSB0aGUgbGF0ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uIHdpbGwgYmUgdGVzdGVkLiAqL1xuICB2ZXJzaW9uOiBBcGlWZXJzaW9uc1xuICAvKipcbiAgICogVGhlIGJhc2UgdXJsIHRvIGNvbm5lY3QgdG8uIElmIHlvdSBjcmVhdGUgYSBwcm94eSByZXN0LCB0aGF0IHVybCB3b3VsZCBnbyBoZXJlLlxuICAgKiBJVCBTSE9VTEQgTk9UIEVORCBXSVRIIEEgL1xuICAgKiBAZGVmYXVsdCBodHRwczovL2Rpc2NvcmQuY29tL2FwaVxuICAgKi9cbiAgYmFzZVVybDogc3RyaW5nXG4gIC8qKlxuICAgKiBgdHJ1ZWAgaWYgdGhlIGBiYXNlVXJsYCBkb2VzIG5vdCBzdGFydCB3aXRoIGBodHRwczovL2Rpc2NvcmQuY29tL2FwaWAuXG4gICAqXG4gICAqIE1vc3RseSB1c2VkIG9ubHkgZm9yIGludGVybiBmdW5jdGlvbnMuXG4gICAqL1xuICBpc1Byb3hpZWQ6IGJvb2xlYW5cbiAgLyoqIFRoZSBhdXRob3JpemF0aW9uIGhlYWRlciB2YWx1ZSB0byBhdHRhY2ggd2hlbiBzZW5kaW5nIHJlcXVlc3RzIHRvIHRoZSBwcm94eS4gKi9cbiAgYXV0aG9yaXphdGlvbj86IHN0cmluZ1xuICAvKiogVGhlIGF1dGhvcml6YXRpb24gaGVhZGVyIG5hbWUgdG8gYXR0YWNoIHdoZW4gc2VuZGluZyByZXF1ZXN0cyB0byB0aGUgcHJveHkgKi9cbiAgYXV0aG9yaXphdGlvbkhlYWRlcjogc3RyaW5nXG4gIC8qKiBUaGUgZW5kcG9pbnQgdG8gdXNlIGZvciBgdXBkYXRlVG9rZW5RdWV1ZXNgIHdoZW4gd29ya2luZyB3aXRoIGEgcmVzdCBwcm94eSAqL1xuICB1cGRhdGVCZWFyZXJUb2tlbkVuZHBvaW50Pzogc3RyaW5nXG4gIC8qKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZXMgYSByZXF1ZXN0IHNob3VsZCBiZSByZXRyaWVkLiBEZWZhdWx0cyB0byBJbmZpbml0eSAqL1xuICBtYXhSZXRyeUNvdW50OiBudW1iZXJcbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSBtYW5hZ2VyIGlzIHJhdGUgbGltaXRlZCBnbG9iYWxseSBhY3Jvc3MgYWxsIHJlcXVlc3RzLiBEZWZhdWx0cyB0byBmYWxzZS4gKi9cbiAgZ2xvYmFsbHlSYXRlTGltaXRlZDogYm9vbGVhblxuICAvKiogV2hldGhlciBvciBub3QgdGhlIHJhdGUgbGltaXRlZCBwYXRocyBhcmUgYmVpbmcgcHJvY2Vzc2VkIHRvIGFsbG93IHJlcXVlc3RzIHRvIGJlIG1hZGUgb25jZSB0aW1lIGlzIHVwLiBEZWZhdWx0cyB0byBmYWxzZS4gKi9cbiAgcHJvY2Vzc2luZ1JhdGVMaW1pdGVkUGF0aHM6IGJvb2xlYW5cbiAgLyoqIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBkZWxldGluZyB0aGlzIHF1ZXVlIGlmIGl0IGlzIGVtcHR5LiBEZWZhdWx0cyB0byA2MDAwMChvbmUgbWludXRlKS4gKi9cbiAgZGVsZXRlUXVldWVEZWxheTogbnVtYmVyXG4gIC8qKiBUaGUgcXVldWVzIHRoYXQgaG9sZCBhbGwgdGhlIHJlcXVlc3RzIHRvIGJlIHByb2Nlc3NlZC4gKi9cbiAgcXVldWVzOiBNYXA8c3RyaW5nLCBRdWV1ZT5cbiAgLyoqIFRoZSBwYXRocyB0aGF0IGFyZSBjdXJyZW50bHkgcmF0ZSBsaW1pdGVkLiAqL1xuICByYXRlTGltaXRlZFBhdGhzOiBNYXA8c3RyaW5nLCBSZXN0UmF0ZUxpbWl0ZWRQYXRoPlxuICAvKiogVGhlIGJ1Y2tldCBmb3IgaGFuZGxpbmcgYW55IGludmFsaWQgcmVxdWVzdHMuICAqL1xuICBpbnZhbGlkQnVja2V0OiBJbnZhbGlkUmVxdWVzdEJ1Y2tldFxuICAvKiogVGhlIHJvdXRlcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoaXMgbWFuYWdlci4gKi9cbiAgcm91dGVzOiBSZXN0Um91dGVzXG4gIC8qKiBUaGUgbG9nZ2VyIHRvIHVzZSBmb3IgdGhlIHJlc3QgbWFuYWdlciAqL1xuICBsb2dnZXI6IFBpY2s8dHlwZW9mIGxvZ2dlciwgJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnZmF0YWwnPlxuICAvKiogRXZlbnRzIGZvciB0aGUgcmVzdCBtYW5hZ2VyICovXG4gIGV2ZW50czogUmVzdE1hbmFnZXJFdmVudHNcbiAgLyoqIEFsbG93cyB0aGUgdXNlciB0byBpbmplY3QgY3VzdG9tIGhlYWRlcnMgdGhhdCB3aWxsIGJlIHNlbnQgd2l0aCBldmVyeSByZXF1ZXN0LiAqL1xuICBjcmVhdGVCYXNlSGVhZGVyczogKCkgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAvKiogV2hldGhlciBvciBub3QgdGhlIHJlc3QgbWFuYWdlciBzaG91bGQga2VlcCBvYmplY3RzIGluIHJhdyBzbmFrZSBjYXNlIGZyb20gZGlzY29yZC4gKi9cbiAgcHJlZmVyU25ha2VDYXNlOiAoZW5hYmxlZDogYm9vbGVhbikgPT4gUmVzdE1hbmFnZXJcbiAgLyoqIENoZWNrIHRoZSByYXRlIGxpbWl0cyBmb3IgYSB1cmwgb3IgYSBidWNrZXQuICovXG4gIGNoZWNrUmF0ZUxpbWl0czogKHVybDogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcpID0+IG51bWJlciB8IGZhbHNlXG4gIC8qIFVwZGF0ZSB0aGUgcXVldWVzIGFuZCByYXRlbGltaXQgaW5mb3JtYXRpb24gdG8gYWRhcHQgdG8gdGhlIG5ldyB0b2tlbiAqL1xuICB1cGRhdGVUb2tlblF1ZXVlczogKG9sZFRva2VuOiBzdHJpbmcsIG5ld1Rva2VuOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFJlc2hhcGVzIGFuZCBtb2RpZmllcyB0aGUgb2JqIGFzIG5lZWRlZCB0byBtYWtlIGl0IHJlYWR5IGZvciBkaXNjb3JkcyBhcGkuICovXG4gIGNoYW5nZVRvRGlzY29yZEZvcm1hdDogKG9iajogYW55KSA9PiBhbnlcbiAgLyoqIENyZWF0ZXMgdGhlIHJlcXVlc3QgYm9keSBhbmQgaGVhZGVycyB0aGF0IGFyZSBuZWNlc3NhcnkgdG8gc2VuZCBhIHJlcXVlc3QuIFdpbGwgaGFuZGxlIGRpZmZlcmVudCB0eXBlcyBvZiBtZXRob2RzIGFuZCBldmVyeXRoaW5nIG5lY2Vzc2FyeSBmb3IgZGlzY29yZC4gKi9cbiAgY3JlYXRlUmVxdWVzdEJvZHk6IChtZXRob2Q6IFJlcXVlc3RNZXRob2RzLCBvcHRpb25zPzogQ3JlYXRlUmVxdWVzdEJvZHlPcHRpb25zKSA9PiBSZXF1ZXN0Qm9keVxuICAvKiogVGhpcyB3aWxsIGNyZWF0ZSBhIGluZmluaXRlIGxvb3AgcnVubmluZyBpbiAxIHNlY29uZHMgdXNpbmcgdGFpbCByZWN1cnNpb24gdG8ga2VlcCByYXRlIGxpbWl0cyBjbGVhbi4gV2hlbiBhIHJhdGUgbGltaXQgcmVzZXRzLCB0aGlzIHdpbGwgcmVtb3ZlIGl0IHNvIHRoZSBxdWV1ZSBjYW4gcHJvY2VlZC4gKi9cbiAgcHJvY2Vzc1JhdGVMaW1pdGVkUGF0aHM6ICgpID0+IHZvaWRcbiAgLyoqIFByb2Nlc3NlcyB0aGUgcmF0ZSBsaW1pdCBoZWFkZXJzIGFuZCBkZXRlcm1pbmVzIGlmIGl0IG5lZWRzIHRvIGJlIHJhdGUgbGltaXRlZCBhbmQgcmV0dXJucyB0aGUgYnVja2V0IGlkIGlmIGF2YWlsYWJsZSAqL1xuICBwcm9jZXNzSGVhZGVyczogKHVybDogc3RyaW5nLCBoZWFkZXJzOiBIZWFkZXJzLCBpZGVudGlmaWVyOiBzdHJpbmcpID0+IHN0cmluZyB8IHVuZGVmaW5lZFxuICAvKiogU2VuZHMgYSByZXF1ZXN0IHRvIHRoZSBhcGkuICovXG4gIHNlbmRSZXF1ZXN0OiAob3B0aW9uczogU2VuZFJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBTcGxpdCBhIHVybCB0byBzZXBhcmF0ZSByYXRlIGxpbWl0IGJ1Y2tldHMgYmFzZWQgb24gbWFqb3IvbWlub3IgcGFyYW1ldGVycy4gKi9cbiAgc2ltcGxpZnlVcmw6ICh1cmw6IHN0cmluZywgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcykgPT4gc3RyaW5nXG4gIC8qKiBNYWtlIGEgcmVxdWVzdCB0byBiZSBzZW50IHRvIHRoZSBhcGkuICovXG4gIG1ha2VSZXF1ZXN0OiA8VCA9IHVua25vd24+KG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsIHVybDogc3RyaW5nLCBvcHRpb25zPzogTWFrZVJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFQ+XG4gIC8qKiBUYWtlcyBhIHJlcXVlc3QgYW5kIHByb2Nlc3NlcyBpdCBpbnRvIGEgcXVldWUuICovXG4gIHByb2Nlc3NSZXF1ZXN0OiAocmVxdWVzdDogU2VuZFJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBNYWtlIGEgZ2V0IHJlcXVlc3QgdG8gdGhlIGFwaSAqL1xuICBnZXQ6IDxUID0gdm9pZD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBPbWl0PE1ha2VSZXF1ZXN0T3B0aW9ucywgJ2JvZHknPikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxUPj5cbiAgLyoqIE1ha2UgYSBwb3N0IHJlcXVlc3QgdG8gdGhlIGFwaS4gKi9cbiAgcG9zdDogPFQgPSB2b2lkPih1cmw6IHN0cmluZywgb3B0aW9ucz86IE1ha2VSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxUPj5cbiAgLyoqIE1ha2UgYSBwdXQgcmVxdWVzdCB0byB0aGUgYXBpLiAqL1xuICBwdXQ6IDxUID0gdm9pZD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBNYWtlUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8VD4+XG4gIC8qKiBNYWtlIGEgZGVsZXRlIHJlcXVlc3QgdG8gdGhlIGFwaS4gKi9cbiAgZGVsZXRlOiAodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBPbWl0PE1ha2VSZXF1ZXN0T3B0aW9ucywgJ2JvZHknPikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogTWFrZSBhIHBhdGNoIHJlcXVlc3QgdG8gdGhlIGFwaS4gKi9cbiAgcGF0Y2g6IDxUID0gdm9pZD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBNYWtlUmVxdWVzdE9wdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8VD4+XG4gIC8qKlxuICAgKiBBZGRzIGEgcmVhY3Rpb24gdG8gYSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIHRvIGFkZCBhIHJlYWN0aW9uIHRvIGlzIGluLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGFkZCBhIHJlYWN0aW9uIHRvLlxuICAgKiBAcGFyYW0gcmVhY3Rpb24gLSBUaGUgcmVhY3Rpb24gdG8gYWRkIHRvIHRoZSBtZXNzYWdlLlxuICAgKiBAcmV0dXJuc1xuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBJZiBub2JvZHkgZWxzZSBoYXMgcmVhY3RlZCB0byB0aGUgbWVzc2FnZTpcbiAgICogLSBSZXF1aXJlcyB0aGUgYEFERF9SRUFDVElPTlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgUmVhY3Rpb24gQWRkXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNjcmVhdGUtcmVhY3Rpb259XG4gICAqL1xuICBhZGRSZWFjdGlvbjogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQWRkcyBtdWx0aXBsZSBhIHJlYWN0aW9uIHRvIGEgbWVzc2FnZS5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBgYWRkUmVhY3Rpb24oKWAgaGVscGVyIGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIHRvIGFkZCByZWFjdGlvbnMgdG8gaXMgaW4uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gYWRkIHRoZSByZWFjdGlvbnMgdG8uXG4gICAqIEBwYXJhbSByZWFjdGlvbnMgLSBUaGUgcmVhY3Rpb25zIHRvIGFkZCB0byB0aGUgbWVzc2FnZS5cbiAgICogQHBhcmFtIG9yZGVyZWQgLSBXaGV0aGVyIHRoZSByZWFjdGlvbnMgbXVzdCBiZSBhZGRlZCBpbiBvcmRlciBvciBub3QuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIG5vYm9keSBlbHNlIGhhcyByZWFjdGVkIHRvIHRoZSBtZXNzYWdlOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgQUREX1JFQUNUSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBSZWFjdGlvbiBBZGRfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IHJlYWN0aW9uIGFkZGVkLlxuICAgKi9cbiAgYWRkUmVhY3Rpb25zOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbnM6IHN0cmluZ1tdLCBvcmRlcmVkPzogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQWRkcyBhIHJvbGUgdG8gYSBtZW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgbWVtYmVyIHRvIGFkZCB0aGUgcm9sZSB0byBpcyBpbi5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSBtZW1iZXIgdG8gYWRkIHRoZSByb2xlIHRvLlxuICAgKiBAcGFyYW0gcm9sZUlkIC0gVGhlIElEIG9mIHRoZSByb2xlIHRvIGFkZCB0byB0aGUgbWVtYmVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXIgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjYWRkLWd1aWxkLW1lbWJlci1yb2xlfVxuICAgKi9cbiAgYWRkUm9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEFkZHMgYSBtZW1iZXIgdG8gYSB0aHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHRocmVhZCB0byBhZGQgdGhlIG1lbWJlciB0by5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSBtZW1iZXIgdG8gYWRkIHRvIHRoZSB0aHJlYWQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBhYmlsaXR5IHRvIHNlbmQgbWVzc2FnZXMgaW4gdGhlIHRocmVhZC5cbiAgICogUmVxdWlyZXMgdGhlIHRocmVhZCBub3QgYmUgYXJjaGl2ZWQuXG4gICAqXG4gICAqIEZpcmVzIGEgX1RocmVhZCBNZW1iZXJzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjYWRkLXRocmVhZC1tZW1iZXJ9XG4gICAqL1xuICBhZGRUaHJlYWRNZW1iZXI6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEFkZHMgYSByZWNpcGllbnQgdG8gYSBncm91cCBETS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgZ3JvdXAgZG0gdG8gYWRkIHRoZSB1c2VyIHRvLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIHVzZXIgdG8gYWRkIHRvIHRoZSBncm91cCBkbS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYWRkaW5nIHRoZSB1c2VyXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIGFuIE9BdXRoMiBhY2Nlc3MgdG9rZW4gd2l0aCB0aGUgYGdkbS5qb2luYCBzY29wZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNncm91cC1kbS1hZGQtcmVjaXBpZW50fVxuICAgKi9cbiAgYWRkRG1SZWNpcGllbnQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEFkZERtUmVjaXBpZW50T3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQWRkcyBhIG1lbWJlciB0byBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgdGhyZWFkIHRvIGFkZCB0aGUgbWVtYmVyIHRvLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIG1lbWJlciB0byBhZGQgdG8gdGhlIHRocmVhZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGFkZCBvZiBhIGd1aWxkIG1lbWJlclxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYm90IHRvIGJlIGluIHRoZSBzcGVjaWZpZWQgc2VydmVyXG4gICAqIFJlcXVpcmVzIGFuIE9BdXRoMiBhY2Nlc3MgdG9rZW4gd2l0aCB0aGUgYGd1aWxkcy5qb2luYCBzY29wZVxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXIgQWRkXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjYWRkLWd1aWxkLW1lbWJlcn1cbiAgICovXG4gIGFkZEd1aWxkTWVtYmVyOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQWRkR3VpbGRNZW1iZXJPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGF1dG9tb2QgcnVsZSBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSBydWxlIGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIHJ1bGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGV9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYW4gX0F1dG8gTW9kZXJhdGlvbiBSdWxlIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2F1dG8tbW9kZXJhdGlvbiNjcmVhdGUtYXV0by1tb2RlcmF0aW9uLXJ1bGV9XG4gICAqL1xuICBjcmVhdGVBdXRvbW9kUnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlQXV0b01vZGVyYXRpb25SdWxlT3B0aW9ucywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGU+PlxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNoYW5uZWwgd2l0aGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBjcmVhdGUgdGhlIGNoYW5uZWwgd2l0aGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGNoYW5uZWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIERpc2NvcmRDaGFubmVsfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfQ0hBTk5FTFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIHNldHRpbmcgcGVybWlzc2lvbiBvdmVyd3JpdGVzLCBvbmx5IHRoZSBwZXJtaXNzaW9ucyB0aGUgYm90IHVzZXIgaGFzIGluIHRoZSBndWlsZCBjYW4gYmUgYWxsb3dlZCBvciBkZW5pZWQuXG4gICAqXG4gICAqIFNldHRpbmcgdGhlIGBNQU5BR0VfUk9MRVNgIHBlcm1pc3Npb24gaXMgb25seSBwb3NzaWJsZSBmb3IgZ3VpbGQgYWRtaW5pc3RyYXRvcnMuXG4gICAqXG4gICAqIEZpcmVzIGEgX0NoYW5uZWwgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjY3JlYXRlLWd1aWxkLWNoYW5uZWx9XG4gICAqL1xuICBjcmVhdGVDaGFubmVsOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZENoYW5uZWwsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQ2hhbm5lbD4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVtb2ppIGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBpbiB3aGljaCB0byBjcmVhdGUgdGhlIGVtb2ppLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGVtb2ppLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBEaXNjb3JkRW1vaml9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRW1vamlzIGhhdmUgYSBtYXhpbXVtIGZpbGUgc2l6ZSBvZiAyNTYga2lsb2JpdHMuIEF0dGVtcHRpbmcgdG8gdXBsb2FkIGEgbGFyZ2VyIGVtb2ppIHdpbGwgY2F1c2UgdGhlIHJvdXRlIHRvIHJldHVybiA0MDAgQmFkIFJlcXVlc3QuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIEVtb2ppcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNjcmVhdGUtZ3VpbGQtZW1vaml9XG4gICAqL1xuICBjcmVhdGVFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRFbW9qaSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRFbW9qaT4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVtb2ppIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgZW1vamkuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBEaXNjb3JkRW1vaml9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjY3JlYXRlLWFwcGxpY2F0aW9uLWVtb2ppfVxuICAgKi9cbiAgY3JlYXRlQXBwbGljYXRpb25FbW9qaTogKG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uRW1vamkpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEVtb2ppPj5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgdGhyZWFkIGluIGEgZm9ydW0gY2hhbm5lbCBvciBtZWRpYSBjaGFubmVsLCBhbmQgc2VuZHMgYSBtZXNzYWdlIHdpdGhpbiB0aGUgY3JlYXRlZCB0aHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGZvcnVtIGNoYW5uZWwgdG8gY3JlYXRlIHRoZSB0aHJlYWQgd2l0aGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIHRocmVhZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZENoYW5uZWx9IHdpdGggYSBuZXN0ZWQge0BsaW5rIERpc2NvcmRDaGFubmVsfSBvYmplY3QuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQ1JFQVRFX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9UaHJlYWQgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjc3RhcnQtdGhyZWFkLWluLWZvcnVtLW9yLW1lZGlhLWNoYW5uZWx9XG4gICAqL1xuICBjcmVhdGVGb3J1bVRocmVhZDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVGb3J1bVBvc3RXaXRoTWVzc2FnZSwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDaGFubmVsPj5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXBwbGljYXRpb24gY29tbWFuZCBhY2Nlc3NpYmxlIGdsb2JhbGx5OyBhY3Jvc3MgZGlmZmVyZW50IGd1aWxkcyBhbmQgY2hhbm5lbHMuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4pqg77iPIENyZWF0aW5nIGEgY29tbWFuZCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYW4gZXhpc3RpbmcgY29tbWFuZCBmb3IgeW91ciBhcHBsaWNhdGlvbiB3aWxsIG92ZXJ3cml0ZSB0aGUgb2xkIGNvbW1hbmQuXG4gICAqIOKaoO+4jyBHbG9iYWwgY29tbWFuZHMgb25jZSBjcmVhdGVkIGFyZSBjYWNoZWQgZm9yIHBlcmlvZHMgb2YgX19hbiBob3VyX18sIHNvIGNoYW5nZXMgbWFkZSB0byBleGlzdGluZyBjb21tYW5kcyB3aWxsIHRha2UgYW4gaG91ciB0byBzdXJmYWNlLlxuICAgKiDimqDvuI8gWW91IGNhbiBvbmx5IGNyZWF0ZSB1cCB0byAyMDAgX25ld18gY29tbWFuZHMgZGFpbHkuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgdGhlIGJlYXJlciB0b2tlbiB0aGUgdG9rZW4gbmVlZHMgdGhlIGBhcHBsaWNhdGlvbnMuY29tbWFuZHMudXBkYXRlYCBzY29wZSBhbmQgbXVzdCBiZSBhIGBDbGllbnQgZ3JhbnRgIHRva2VuLlxuICAgKiAgWW91IHdpbGwgYmUgYWJsZSB0byB1cGRhdGUgb25seSB5b3VyIG93biBhcHBsaWNhdGlvbiBjb21tYW5kc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjY3JlYXRlLWdsb2JhbC1hcHBsaWNhdGlvbi1jb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoXG4gICAgY29tbWFuZDogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICAgIG9wdGlvbnM/OiBDcmVhdGVHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZD4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFwcGxpY2F0aW9uIGNvbW1hbmQgb25seSBhY2Nlc3NpYmxlIGluIGEgc3BlY2lmaWMgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBlbmRwb2ludFxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIOKaoO+4jyBDcmVhdGluZyBhIGNvbW1hbmQgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGFuIGV4aXN0aW5nIGNvbW1hbmQgZm9yIHlvdXIgYXBwbGljYXRpb24gd2lsbCBvdmVyd3JpdGUgdGhlIG9sZCBjb21tYW5kLlxuICAgKiDimqDvuI8gWW91IGNhbiBvbmx5IGNyZWF0ZSB1cCB0byAyMDAgX25ld18gY29tbWFuZHMgZGFpbHkuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgdGhlIGJlYXJlciB0b2tlbiB0aGUgdG9rZW4gbmVlZHMgdGhlIGBhcHBsaWNhdGlvbnMuY29tbWFuZHMudXBkYXRlYCBzY29wZSBhbmQgbXVzdCBiZSBhIGBDbGllbnQgZ3JhbnRgIHRva2VuLlxuICAgKiAgWW91IHdpbGwgYmUgYWJsZSB0byB1cGRhdGUgb25seSB5b3VyIG93biBhcHBsaWNhdGlvbiBjb21tYW5kc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjY3JlYXRlLWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKFxuICAgIGNvbW1hbmQ6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCxcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IENyZWF0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+PlxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHN0aWNrZXIgZm9yIHRoZSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJuIEEge0BsaW5rIERpc2NvcmRTdGlja2VyfVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRmlyZXMgYSBHdWlsZCBTdGlja2VycyBVcGRhdGUgR2F0ZXdheSBldmVudC5cbiAgICogRXZlcnkgZ3VpbGRzIGhhcyBmaXZlIGZyZWUgc3RpY2tlciBzbG90cyBieSBkZWZhdWx0LCBhbmQgZWFjaCBCb29zdCBsZXZlbCB3aWxsIGdyYW50IGFjY2VzcyB0byBtb3JlIHNsb3RzLlxuICAgKiBMb3R0aWUgc3RpY2tlcnMgY2FuIG9ubHkgYmUgdXBsb2FkZWQgb24gZ3VpbGRzIHRoYXQgaGF2ZSBlaXRoZXIgdGhlIGBWRVJJRklFRGAgYW5kL29yIHRoZSBgUEFSVE5FUkVEYCBndWlsZCBmZWF0dXJlLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvc3RpY2tlciNjcmVhdGUtZ3VpbGQtc3RpY2tlcn1cbiAgICovXG4gIGNyZWF0ZUd1aWxkU3RpY2tlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlR3VpbGRTdGlja2VyT3B0aW9ucywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRTdGlja2VyPj5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0ZW1wbGF0ZSBmcm9tIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBjcmVhdGUgdGhlIHRlbXBsYXRlIGZyb20uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgdGVtcGxhdGUuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBEaXNjb3JkVGVtcGxhdGV9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtdGVtcGxhdGUjY3JlYXRlLWd1aWxkLXRlbXBsYXRlfVxuICAgKi9cbiAgY3JlYXRlR3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogQ3JlYXRlVGVtcGxhdGUpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFRlbXBsYXRlPj5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW52aXRlIHRvIGEgY2hhbm5lbCBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGNyZWF0ZSB0aGUgaW52aXRlIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGludml0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZEludml0ZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQ1JFQVRFX0lOU1RBTlRfSU5WSVRFYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhbiBfSW52aXRlIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHByaXZhdGVSZW1hcmtzXG4gICAqIFRoZSByZXF1ZXN0IGJvZHkgaXMgbm90IG9wdGlvbmFsLCBhbmQgYW4gZW1wdHkgSlNPTiBvYmplY3QgbXVzdCBiZSBzZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhbnkgZmllbGRzIGFyZSBiZWluZyB0cmFuc21pdHRlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjY3JlYXRlLWNoYW5uZWwtaW52aXRlfVxuICAgKi9cbiAgY3JlYXRlSW52aXRlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBDcmVhdGVDaGFubmVsSW52aXRlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEludml0ZT4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcm9sZSBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSByb2xlIGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIHJvbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIERpc2NvcmRSb2xlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfUk9MRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIFJvbGUgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjY3JlYXRlLWd1aWxkLXJvbGV9XG4gICAqL1xuICBjcmVhdGVSb2xlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVHdWlsZFJvbGUsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkUm9sZT4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2NoZWR1bGVkIGV2ZW50IGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBjcmVhdGUgdGhlIHNjaGVkdWxlZCBldmVudCBpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBzY2hlZHVsZWQgZXZlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGNyZWF0ZWQge0BsaW5rIERpc2NvcmRTY2hlZHVsZWRFdmVudH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0VWRU5UU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQSBndWlsZCBjYW4gb25seSBoYXZlIGEgbWF4aW11bSBvZiAxMDAgZXZlbnRzIHdpdGggYSBzdGF0dXMgb2Yge0BsaW5rIFNjaGVkdWxlZEV2ZW50U3RhdHVzfS5BY3RpdmUgb3Ige0BsaW5rIFNjaGVkdWxlZEV2ZW50U3RhdHVzfS5TY2hlZHVsZWQgKGluY2x1c2l2ZSkuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIFNjaGVkdWxlZCBFdmVudCBDcmVhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC1zY2hlZHVsZWQtZXZlbnQjY3JlYXRlLWd1aWxkLXNjaGVkdWxlZC1ldmVudH1cbiAgICovXG4gIGNyZWF0ZVNjaGVkdWxlZEV2ZW50OiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVTY2hlZHVsZWRFdmVudCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRTY2hlZHVsZWRFdmVudD4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc3RhZ2UgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGEgc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBzdGFnZSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZFN0YWdlSW5zdGFuY2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgdXNlciB0byBiZSBhIG1vZGVyYXRvciBvZiB0aGUgc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogRmlyZXMgYSBfU3RhZ2UgSW5zdGFuY2UgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvc3RhZ2UtaW5zdGFuY2UjY3JlYXRlLXN0YWdlLWluc3RhbmNlfVxuICAgKi9cbiAgY3JlYXRlU3RhZ2VJbnN0YW5jZTogKG9wdGlvbnM6IENyZWF0ZVN0YWdlSW5zdGFuY2UsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU3RhZ2VJbnN0YW5jZT4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgd2ViaG9vay5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBjcmVhdGUgdGhlIHdlYmhvb2sgaW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgd2ViaG9vay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZFdlYmhvb2t9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9XRUJIT09LU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICog4pqg77iPIFRoZSB3ZWJob29rIG5hbWUgbXVzdCBub3QgY29udGFpbiB0aGUgc3Vic3RyaW5ncyAnY2x5ZGUnLCBvciAnZGlzY29yZCcgKGNhc2UtaW5zZW5zaXRpdmUpLlxuICAgKlxuICAgKiBGaXJlcyBhIF9XZWJob29rcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2NyZWF0ZS13ZWJob29rfVxuICAgKi9cbiAgY3JlYXRlV2ViaG9vazogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBDcmVhdGVXZWJob29rLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFdlYmhvb2s+PlxuICAvKipcbiAgICogRGVsZXRlcyBhbiBhdXRvbW9kIHJ1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBkZWxldGUgdGhlIHJ1bGUgZnJvbS5cbiAgICogQHBhcmFtIHJ1bGVJZCAtIFRoZSBJRCBvZiB0aGUgYXV0b21vZCBydWxlIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYW4gX0F1dG8gTW9kZXJhdGlvbiBSdWxlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2F1dG8tbW9kZXJhdGlvbiNkZWxldGUtYXV0by1tb2RlcmF0aW9uLXJ1bGV9XG4gICAqL1xuICBkZWxldGVBdXRvbW9kUnVsZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcnVsZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIGNoYW5uZWwgZnJvbSB3aXRoaW4gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBkZWxldGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgbm90aGluZ1xuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGb3IgY29tbXVuaXR5IGd1aWxkcywgdGhlIF9SdWxlc18sIF9HdWlkZWxpbmVzXyBhbmQgX0NvbW11bml0eSBVcGRhdGVfIGNoYW5uZWxzIGNhbm5vdCBiZSBkZWxldGVkLlxuICAgKlxuICAgKiBJZiB0aGUgY2hhbm5lbCBpcyBhIHRocmVhZDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYE1BTkFHRV9USFJFQURTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiAtIEZpcmVzIGEgX1RocmVhZCBEZWxldGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIE90aGVyd2lzZTpcbiAgICogLSBSZXF1aXJlcyB0aGUgYE1BTkFHRV9DSEFOTkVMU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogLSDimqDvuI8gRGVsZXRpbmcgYSBjYXRlZ29yeSBjaGFubmVsIGRvZXMgbm90IGRlbGV0ZSBpdHMgY2hpbGQgY2hhbm5lbHMuXG4gICAqICAgSW5zdGVhZCwgdGhleSB3aWxsIGhhdmUgdGhlaXIgYHBhcmVudF9pZGAgcHJvcGVydHkgcmVtb3ZlZCwgYW5kIGEgYENoYW5uZWwgVXBkYXRlYCBnYXRld2F5IGV2ZW50IHdpbGwgZmlyZSBmb3IgZWFjaCBvZiB0aGVtLlxuICAgKlxuICAgKiAtIEZpcmVzIGEgX0NoYW5uZWwgRGVsZXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNkZWxldGVjbG9zZS1jaGFubmVsfVxuICAgKi9cbiAgZGVsZXRlQ2hhbm5lbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBwZXJtaXNzaW9uIG92ZXJyaWRlIGZvciBhIHVzZXIgb3Igcm9sZSBpbiBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZGVsZXRlIHRoZSBwZXJtaXNzaW9uIG92ZXJyaWRlIG9mLlxuICAgKiBAcGFyYW0gb3ZlcndyaXRlSWQgLSBUaGUgSUQgb2YgdGhlIHBlcm1pc3Npb24gb3ZlcnJpZGUgdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZGVsZXRlLWNoYW5uZWwtcGVybWlzc2lvbn1cbiAgICovXG4gIGRlbGV0ZUNoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGU6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3ZlcndyaXRlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGVtb2ppIGZyb20gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIGZyb20gd2hpY2ggdG8gZGVsZXRlIHRoZSBlbW9qaS5cbiAgICogQHBhcmFtIGlkIC0gVGhlIElEIG9mIHRoZSBlbW9qaSB0byBkZWxldGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRm9yIGVtb2ppcyBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IHVzZXIsIHJlcXVpcmVzIGVpdGhlciB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRm9yIG90aGVyIGVtb2ppcywgcmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIEVtb2ppcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNkZWxldGUtZ3VpbGQtZW1vaml9XG4gICAqL1xuICBkZWxldGVFbW9qaTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgaWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGVtb2ppIGZyb20gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhlIGVtb2ppIHRvIGRlbGV0ZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2Vtb2ppI2RlbGV0ZS1hcHBsaWNhdGlvbi1lbW9qaX1cbiAgICovXG4gIGRlbGV0ZUFwcGxpY2F0aW9uRW1vamk6IChpZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgZm9sbG93LXVwIG1lc3NhZ2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVubGlrZSBgZGVsZXRlTWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0IG5lZWRpbmcgdG8gc2VlIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIGlzIGluLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIERlbGV0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9yZWNlaXZpbmctYW5kLXJlc3BvbmRpbmcjZGVsZXRlLWZvbGxvd3VwLW1lc3NhZ2V9XG4gICAqL1xuICBkZWxldGVGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhbiBhcHBsaWNhdGlvbiBjb21tYW5kIHJlZ2lzdGVyZWQgZ2xvYmFsbHkuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kSWQgLSBUaGUgSUQgb2YgdGhlIGNvbW1hbmQgdG8gZGVsZXRlLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjZGVsZXRlLWdsb2JhbC1hcHBsaWNhdGlvbi1jb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlR2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gYXBwbGljYXRpb24gY29tbWFuZCByZWdpc3RlcmVkIGluIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBkZWxldGUgdGhlIGNvbW1hbmQgZnJvbS5cbiAgICogQHBhcmFtIGNvbW1hbmRJZCAtIFRoZSBJRCBvZiB0aGUgY29tbWFuZCB0byBkZWxldGUgZnJvbSB0aGUgZ3VpbGQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNkZWxldGUtZ3VpbGQtYXBwbGljYXRpb24tY29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUd1aWxkQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcsIGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlIGEgbmV3IHN0aWNrZXIgZm9yIHRoZSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJuIEEge0BsaW5rIERpc2NvcmRTdGlja2VyfVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGb3Igc3RpY2tlcnMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLCByZXF1aXJlcyBlaXRoZXIgdGhlIGBDUkVBVEVfR1VJTERfRVhQUkVTU0lPTlNgIG9yIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqIEZvciBvdGhlciBzdGlja2VycywgcmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqIEZpcmVzIGEgR3VpbGQgU3RpY2tlcnMgVXBkYXRlIEdhdGV3YXkgZXZlbnQuXG4gICAqIEV2ZXJ5IGd1aWxkcyBoYXMgZml2ZSBmcmVlIHN0aWNrZXIgc2xvdHMgYnkgZGVmYXVsdCwgYW5kIGVhY2ggQm9vc3QgbGV2ZWwgd2lsbCBncmFudCBhY2Nlc3MgdG8gbW9yZSBzbG90cy5cbiAgICogTG90dGllIHN0aWNrZXJzIGNhbiBvbmx5IGJlIHVwbG9hZGVkIG9uIGd1aWxkcyB0aGF0IGhhdmUgZWl0aGVyIHRoZSBgVkVSSUZJRURgIGFuZC9vciB0aGUgYFBBUlRORVJFRGAgZ3VpbGQgZmVhdHVyZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjZGVsZXRlLWd1aWxkLXN0aWNrZXJ9XG4gICAqL1xuICBkZWxldGVHdWlsZFN0aWNrZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHN0aWNrZXJJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSB0ZW1wbGF0ZSBmcm9tIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBkZWxldGUgdGhlIHRlbXBsYXRlIGZyb20uXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZUNvZGUgLSBUaGUgY29kZSBvZiB0aGUgdGVtcGxhdGUgdG8gZGVsZXRlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtdGVtcGxhdGUjZGVsZXRlLWd1aWxkLXRlbXBsYXRlfVxuICAgKi9cbiAgZGVsZXRlR3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdGVtcGxhdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaW50ZWdyYXRpb24gYXR0YWNoZWQgdG8gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIGZyb20gd2hpY2ggdG8gZGVsZXRlIHRoZSBpbnRlZ3JhdGlvbi5cbiAgICogQHBhcmFtIGludGVncmF0aW9uSWQgLSBUaGUgSUQgb2YgdGhlIGludGVncmF0aW9uIHRvIGRlbGV0ZSBmcm9tIHRoZSBndWlsZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRGVsZXRlcyBhbGwgd2ViaG9va3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnRlZ3JhdGlvbiwgYW5kIGtpY2tzIHRoZSBhc3NvY2lhdGVkIGJvdCBpZiB0aGVyZSBpcyBvbmUuXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIEludGVncmF0aW9ucyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqIEZpcmVzIGEgX0ludGVncmF0aW9uIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2RlbGV0ZS1ndWlsZC1pbnRlZ3JhdGlvbn1cbiAgICovXG4gIGRlbGV0ZUludGVncmF0aW9uOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpbnRlZ3JhdGlvbklkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhbiBpbnZpdGUgdG8gYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gaW52aXRlQ29kZSAtIFRoZSBpbnZpdGUgY29kZSBvZiB0aGUgaW52aXRlIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9DSEFOTkVMU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYW4gX0ludml0ZSBEZWxldGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2RlbGV0ZS1jaGFubmVsLWludml0ZX1cbiAgICovXG4gIGRlbGV0ZUludml0ZTogKGludml0ZUNvZGU6IHN0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgbWVzc2FnZSBmcm9tIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBkZWxldGUgdGhlIG1lc3NhZ2UgZnJvbS5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUgZnJvbSB0aGUgY2hhbm5lbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiBub3QgZGVsZXRpbmcgb3duIG1lc3NhZ2U6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgRGVsZXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNkZWxldGUtbWVzc2FnZX1cbiAgICovXG4gIGRlbGV0ZU1lc3NhZ2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBtdWx0aXBsZSBtZXNzYWdlcyBmcm9tIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBkZWxldGUgdGhlIG1lc3NhZ2VzIGZyb20uXG4gICAqIEBwYXJhbSBtZXNzYWdlSWRzIC0gVGhlIElEcyBvZiB0aGUgbWVzc2FnZXMgdG8gZGVsZXRlIGZyb20gdGhlIGNoYW5uZWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIOKaoO+4jyBNZXNzYWdlcyBvbGRlciB0aGFuIDIgd2Vla3Mgb2xkIGNhbm5vdCBiZSBkZWxldGVkLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIERlbGV0ZSBCdWxrXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNidWxrLWRlbGV0ZS1tZXNzYWdlc31cbiAgICovXG4gIGRlbGV0ZU1lc3NhZ2VzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZHM6IEJpZ1N0cmluZ1tdLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgdGhlIGluaXRpYWwgbWVzc2FnZSByZXNwb25zZSB0byBhbiBpbnRlcmFjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIGludGVyYWN0aW9uIHRva2VuIHRvIHVzZSwgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbmFsIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVbmxpa2UgYGRlbGV0ZU1lc3NhZ2UoKWAsIHRoaXMgZW5kcG9pbnQgYWxsb3dzIHRoZSBib3QgdXNlciB0byBhY3Qgd2l0aG91dCBuZWVkaW5nIHRvIHNlZSB0aGUgY2hhbm5lbCB0aGUgbWVzc2FnZSBpcyBpbi5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBEZWxldGVfIGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvcmVjZWl2aW5nLWFuZC1yZXNwb25kaW5nI2RlbGV0ZS1vcmlnaW5hbC1pbnRlcmFjdGlvbi1yZXNwb25zZX1cbiAgICovXG4gIGRlbGV0ZU9yaWdpbmFsSW50ZXJhY3Rpb25SZXNwb25zZTogKHRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSByZWFjdGlvbiBhZGRlZCBieSB0aGUgYm90IHVzZXIgZnJvbSBhIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlIHRoZSByZWFjdGlvbiBmcm9tIGlzIGluLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZSB0aGUgcmVhY3Rpb24gZnJvbS5cbiAgICogQHBhcmFtIHJlYWN0aW9uIC0gVGhlIHJlYWN0aW9uIHRvIGRlbGV0ZSBmcm9tIHRoZSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFJlYWN0aW9uIFJlbW92ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZGVsZXRlLW93bi1yZWFjdGlvbn1cbiAgICovXG4gIGRlbGV0ZU93blJlYWN0aW9uOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCByZWFjdGlvbnMgZm9yIGFsbCBlbW9qaXMgZnJvbSBhIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlIHRoZSByZWFjdGlvbnMgZnJvbSBpcyBpbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUgdGhlIHJlYWN0aW9ucyBmcm9tLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9NRVNTQUdFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBSZWFjdGlvbiBSZW1vdmUgQWxsXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNkZWxldGUtYWxsLXJlYWN0aW9uc31cbiAgICovXG4gIGRlbGV0ZVJlYWN0aW9uc0FsbDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhbGwgcmVhY3Rpb25zIGZvciBhbiBlbW9qaSBmcm9tIGEgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0aGUgbWVzc2FnZSB0byBkZWxldGUgdGhlIHJlYWN0aW9ucyBmcm9tIGlzIGluLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZSB0aGUgcmVhY3Rpb25zIGZyb20uXG4gICAqIEBwYXJhbSByZWFjdGlvbiAtIFRoZSByZWFjdGlvbiB0byByZW1vdmUgZnJvbSB0aGUgbWVzc2FnZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgUmVhY3Rpb24gUmVtb3ZlIEVtb2ppXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNkZWxldGUtYWxsLXJlYWN0aW9ucy1mb3ItZW1vaml9XG4gICAqL1xuICBkZWxldGVSZWFjdGlvbnNFbW9qaTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhY3Rpb246IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIHJvbGUgZnJvbSBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZGVsZXRlIHRoZSByb2xlIGZyb20uXG4gICAqIEBwYXJhbSByb2xlSWQgLSBUaGUgSUQgb2YgdGhlIHJvbGUgdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBSb2xlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2RlbGV0ZS1ndWlsZC1yb2xlfVxuICAgKi9cbiAgZGVsZXRlUm9sZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgcm9sZUlkOiBCaWdTdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIHNjaGVkdWxlZCBldmVudCBmcm9tIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBkZWxldGUgdGhlIHNjaGVkdWxlZCBldmVudCBmcm9tLlxuICAgKiBAcGFyYW0gZXZlbnRJZCAtIFRoZSBJRCBvZiB0aGUgc2NoZWR1bGVkIGV2ZW50IHRvIGRlbGV0ZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfRVZFTlRTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBTY2hlZHVsZWQgRXZlbnQgRGVsZXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtc2NoZWR1bGVkLWV2ZW50I2RlbGV0ZS1ndWlsZC1zY2hlZHVsZWQtZXZlbnR9XG4gICAqL1xuICBkZWxldGVTY2hlZHVsZWRFdmVudDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgZXZlbnRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIHRoZSBzdGFnZSBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggYSBzdGFnZSBjaGFubmVsLCBpZiBvbmUgZXhpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBzdGFnZSBjaGFubmVsIHRoZSBzdGFnZSBpbnN0YW5jZSBpcyBhc3NvY2lhdGVkIHdpdGguXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIHVzZXIgdG8gYmUgYSBtb2RlcmF0b3Igb2YgdGhlIHN0YWdlIGNoYW5uZWwuXG4gICAqXG4gICAqIEZpcmVzIGEgX1N0YWdlIEluc3RhbmNlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0YWdlLWluc3RhbmNlI2RlbGV0ZS1zdGFnZS1pbnN0YW5jZX1cbiAgICovXG4gIGRlbGV0ZVN0YWdlSW5zdGFuY2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgdXNlcidzIHJlYWN0aW9uIGZyb20gYSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZSB0aGUgcmVhY3Rpb24gZnJvbSBpcyBpbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkZWxldGUgdGhlIHJlYWN0aW9uIGZyb20uXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgd2hvc2UgcmVhY3Rpb24gdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0gcmVhY3Rpb24gLSBUaGUgcmVhY3Rpb24gdG8gZGVsZXRlIGZyb20gdGhlIG1lc3NhZ2UuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFJlYWN0aW9uIFJlbW92ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZGVsZXRlLXVzZXItcmVhY3Rpb259XG4gICAqL1xuICBkZWxldGVVc2VyUmVhY3Rpb246IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByZWFjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgd2ViaG9vay5cbiAgICpcbiAgICogQHBhcmFtIHdlYmhvb2tJZCAtIFRoZSBJRCBvZiB0aGUgd2ViaG9vayB0byBkZWxldGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9XZWJob29rcyBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2RlbGV0ZS13ZWJob29rfVxuICAgKi9cbiAgZGVsZXRlV2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSB3ZWJob29rIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZGVsZXRlIHRoZSBtZXNzYWdlIGJlbG9uZ2luZyB0by5cbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHdlYmhvb2sgdG9rZW4sIHVzZWQgdG8gbWFuYWdlIHRoZSB3ZWJob29rLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGRlbGV0aW9uIG9mIHRoZSBtZXNzYWdlLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9NZXNzYWdlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZGVsZXRlLXdlYmhvb2t9XG4gICAqL1xuICBkZWxldGVXZWJob29rTWVzc2FnZTogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IERlbGV0ZVdlYmhvb2tNZXNzYWdlT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRGVsZXRlcyBhIHdlYmhvb2sgbWVzc2FnZSB1c2luZyB0aGUgd2ViaG9vayB0b2tlbiwgdGhlcmVieSBieXBhc3NpbmcgdGhlIG5lZWQgZm9yIGF1dGhlbnRpY2F0aW9uICsgcGVybWlzc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZGVsZXRlIHRoZSBtZXNzYWdlIGJlbG9uZ2luZyB0by5cbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHdlYmhvb2sgdG9rZW4sIHVzZWQgdG8gZGVsZXRlIHRoZSB3ZWJob29rLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9NZXNzYWdlIERlbGV0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZGVsZXRlLXdlYmhvb2std2l0aC10b2tlbn1cbiAgICovXG4gIGRlbGV0ZVdlYmhvb2tXaXRoVG9rZW46ICh3ZWJob29rSWQ6IEJpZ1N0cmluZywgdG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIHBlcm1pc3Npb25zIGZvciBhIGd1aWxkIGFwcGxpY2F0aW9uIGNvbW1hbmQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgY29tbWFuZCBpcyByZWdpc3RlcmVkIGluLlxuICAgKiBAcGFyYW0gY29tbWFuZElkIC0gVGhlIElEIG9mIHRoZSBjb21tYW5kIHRvIGVkaXQgdGhlIHBlcm1pc3Npb25zIG9mLlxuICAgKiBAcGFyYW0gYmVhcmVyVG9rZW4gLSBUaGUgYmVhcmVyIHRva2VuIHRvIHVzZSB0byBtYWtlIHRoZSByZXF1ZXN0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgY29tbWFuZCBwZXJtaXNzaW9ucy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnN9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGUgYmVhcmVyIHRva2VuIHJlcXVpcmVzIHRoZSBgYXBwbGljYXRpb25zLmNvbW1hbmRzLnBlcm1pc3Npb25zLnVwZGF0ZWAgc2NvcGUgdG8gYmUgZW5hYmxlZCwgYW5kIHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBndWlsZCB3aG9zZSBJRCBoYXMgYmVlbiBwcm92aWRlZCBpbiB0aGUgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2VkaXQtYXBwbGljYXRpb24tY29tbWFuZC1wZXJtaXNzaW9uc31cbiAgICovXG4gIGVkaXRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uczogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBiZWFyZXJUb2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucz5bXSxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zPj5cbiAgLyoqXG4gICAqIEVkaXRzIGFuIGF1dG9tb2QgcnVsZS5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHJ1bGUgaW4uXG4gICAqIEBwYXJhbSBydWxlSWQgLSBUaGUgSUQgb2YgdGhlIHJ1bGUgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVkaXQgb2YgdGhlIHJ1bGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZEF1dG9Nb2RlcmF0aW9uUnVsZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhbiBfQXV0byBNb2RlcmF0aW9uIFJ1bGUgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvYXV0by1tb2RlcmF0aW9uI21vZGlmeS1hdXRvLW1vZGVyYXRpb24tcnVsZX1cbiAgICovXG4gIGVkaXRBdXRvbW9kUnVsZTogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBydWxlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEVkaXRBdXRvTW9kZXJhdGlvblJ1bGVPcHRpb25zPixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXV0b01vZGVyYXRpb25SdWxlPj5cbiAgLyoqXG4gICAqIE1vZGlmaWVzIHRoZSBib3QncyB1c2VybmFtZSwgYXZhdGFyIG9yIGJhbm5lci5cbiAgICogTk9URTogdXNlcm5hbWU6IGlmIGNoYW5nZWQgbWF5IGNhdXNlIHRoZSBib3QncyBkaXNjcmltaW5hdG9yIHRvIGJlIHJhbmRvbWl6ZWQuXG4gICAqL1xuICBlZGl0Qm90UHJvZmlsZTogKG9wdGlvbnM6IHsgdXNlcm5hbWU/OiBzdHJpbmc7IGJvdEF2YXRhclVSTD86IHN0cmluZyB8IG51bGw7IGJvdEJhbm5lclVSTD86IHN0cmluZyB8IG51bGwgfSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkVXNlcj4+XG4gIC8qKlxuICAgKiBFZGl0cyBhIGNoYW5uZWwncyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgY2hhbm5lbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIGVkaXRpbmcgYSBjaGFubmVsIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3JvdXBEbTpcbiAgICogLSBGaXJlcyBhIF9DaGFubmVsIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogSWYgZWRpdGluZyBhIHRocmVhZCBjaGFubmVsOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1RIUkVBRFNgIHBlcm1pc3Npb24gX191bmxlc3NfXyBpZiBzZXR0aW5nIHRoZSBgYXJjaGl2ZWRgIHByb3BlcnR5IHRvIGBmYWxzZWAgd2hlbiB0aGUgYGxvY2tlZGAgcHJvcGVydHkgaXMgYWxzbyBgZmFsc2VgLCBpbiB3aGljaCBjYXNlIG9ubHkgdGhlIGBTRU5EX01FU1NBR0VTYCBwZXJtaXNzaW9uIGlzIHJlcXVpcmVkLlxuICAgKlxuICAgKiAtIEZpcmVzIGEgX1RocmVhZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIElmIGVkaXRpbmcgYSBndWlsZCBjaGFubmVsOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0NIQU5ORUxTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiAtIElmIG1vZGlmeWluZyBwZXJtaXNzaW9uIG92ZXJyaWRlczpcbiAgICogICAtIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiAgIC0gT25seSBwZXJtaXNzaW9ucyB0aGUgYm90IHVzZXIgaGFzIGluIHRoZSBndWlsZCBvciBwYXJlbnQgY2hhbm5lbCBjYW4gYmUgYWxsb3dlZC9kZW5pZWQgX191bmxlc3NfXyB0aGUgYm90IHVzZXIgaGFzIGEgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbiBvdmVycmlkZSBpbiB0aGUgY2hhbm5lbC5cbiAgICpcbiAgICogLSBJZiBtb2RpZnlpbmcgYSBjaGFubmVsIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRDYXRlZ29yeTpcbiAgICogICAgIC0gRmlyZXMgYSBfQ2hhbm5lbCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQgZm9yIGVhY2ggY2hpbGQgY2hhbm5lbCBpbXBhY3RlZCBpbiB0aGlzIGNoYW5nZS5cbiAgICogLSBPdGhlcndpc2U6XG4gICAqICAgICAtIEZpcmVzIGEgX0NoYW5uZWwgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKi9cbiAgZWRpdENoYW5uZWw6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5Q2hhbm5lbCwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDaGFubmVsPj5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBwZXJtaXNzaW9uIG92ZXJyaWRlcyBmb3IgYSB1c2VyIG9yIHJvbGUgaW4gYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGVkaXQgdGhlIHBlcm1pc3Npb24gb3ZlcnJpZGVzIG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwZXJtaXNzaW9uIG92ZXJyaWRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBPbmx5IHBlcm1pc3Npb25zIHRoZSBib3QgdXNlciBoYXMgaW4gdGhlIGd1aWxkIG9yIHBhcmVudCBjaGFubmVsIGNhbiBiZSBhbGxvd2VkL2RlbmllZCBfX3VubGVzc19fIHRoZSBib3QgdXNlciBoYXMgYSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uIG92ZXJyaWRlIGluIHRoZSBjaGFubmVsLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZWRpdC1jaGFubmVsLXBlcm1pc3Npb25zfVxuICAgKi9cbiAgZWRpdENoYW5uZWxQZXJtaXNzaW9uT3ZlcnJpZGVzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEVkaXRDaGFubmVsUGVybWlzc2lvbk92ZXJyaWRlc09wdGlvbnMsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIHBvc2l0aW9ucyBvZiBhIHNldCBvZiBjaGFubmVscyBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgaW4gd2hpY2ggdG8gZWRpdCB0aGUgcG9zaXRpb25zIG9mIHRoZSBjaGFubmVscy5cbiAgICogQHBhcmFtIGNoYW5uZWxQb3NpdGlvbnMgLSBBIHNldCBvZiBvYmplY3RzIGRlZmluaW5nIHRoZSB1cGRhdGVkIHBvc2l0aW9ucyBvZiB0aGUgY2hhbm5lbHMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0NIQU5ORUxTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIFVwZGF0ZV8gZ2F0ZXdheSBldmVudCBmb3IgZXZlcnkgY2hhbm5lbCBpbXBhY3RlZCBpbiB0aGlzIGNoYW5nZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21vZGlmeS1ndWlsZC1jaGFubmVsLXBvc2l0aW9uc31cbiAgICovXG4gIGVkaXRDaGFubmVsUG9zaXRpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBjaGFubmVsUG9zaXRpb25zOiBNb2RpZnlHdWlsZENoYW5uZWxQb3NpdGlvbnNbXSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgYW4gZW1vamkuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBpbiB3aGljaCB0byBlZGl0IHRoZSBlbW9qaS5cbiAgICogQHBhcmFtIGlkIC0gVGhlIElEIG9mIHRoZSBlbW9qaSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgZW1vamkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIHVwZGF0ZWQge0BsaW5rIERpc2NvcmRFbW9qaX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZvciBlbW9qaXMgY3JlYXRlZCBieSB0aGUgY3VycmVudCB1c2VyLCByZXF1aXJlcyBlaXRoZXIgdGhlIGBDUkVBVEVfR1VJTERfRVhQUkVTU0lPTlNgIG9yIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqIEZvciBvdGhlciBlbW9qaXMsIHJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIGBHdWlsZCBFbW9qaXMgVXBkYXRlYCBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjbW9kaWZ5LWd1aWxkLWVtb2ppfVxuICAgKi9cbiAgZWRpdEVtb2ppOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBpZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlHdWlsZEVtb2ppLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEVtb2ppPj5cbiAgLyoqXG4gICAqIEVkaXRzIGFuIGFwcGxpY2F0aW9uIGVtb2ppLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhlIGVtb2ppIHRvIGVkaXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBlbW9qaS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIHVwZGF0ZWQge0BsaW5rIERpc2NvcmRFbW9qaX0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNtb2RpZnktYXBwbGljYXRpb24tZW1vaml9XG4gICAqL1xuICBlZGl0QXBwbGljYXRpb25FbW9qaTogKGlkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUFwcGxpY2F0aW9uRW1vamkpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEVtb2ppPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgZm9sbG93LXVwIG1lc3NhZ2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVbmxpa2UgYGVkaXRNZXNzYWdlKClgLCB0aGlzIGVuZHBvaW50IGFsbG93cyB0aGUgYm90IHVzZXIgdG8gYWN0IHdpdGhvdXQgbmVlZGluZyB0byBzZWUgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgaXMgaW4uXG4gICAqXG4gICAqIERvZXMgbm90IHN1cHBvcnQgZXBoZW1lcmFsIGZvbGxvdy11cCBtZXNzYWdlcyBkdWUgdG8gdGhlc2UgYmVpbmcgc3RhdGVsZXNzLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFVwZGF0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9yZWNlaXZpbmctYW5kLXJlc3BvbmRpbmcjZWRpdC1mb2xsb3d1cC1tZXNzYWdlfVxuICAgKi9cbiAgZWRpdEZvbGxvd3VwTWVzc2FnZTogKHRva2VuOiBzdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBFZGl0cyBhIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0gY29tbWFuZElkIC0gVGhlIElEIG9mIHRoZSBjb21tYW5kIHRvIGVkaXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBjb21tYW5kLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2VkaXQtZ2xvYmFsLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBlZGl0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kOiAoY29tbWFuZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUFwcGxpY2F0aW9uQ29tbWFuZCkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgZ3VpbGQncyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBndWlsZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkR3VpbGR9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgYXR0ZW1wdGluZyB0byBhZGQgb3IgcmVtb3ZlIHRoZSB7QGxpbmsgR3VpbGRGZWF0dXJlc30uQ29tbXVuaXR5IGZlYXR1cmU6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBBRE1JTklTVFJBVE9SYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktZ3VpbGR9XG4gICAqL1xuICBlZGl0R3VpbGQ6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEd1aWxkPj5cbiAgLyoqXG4gICAqIEVkaXRzIGFuIGFwcGxpY2F0aW9uIGNvbW1hbmQgcmVnaXN0ZXJlZCBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIGNvbW1hbmQgaXMgcmVnaXN0ZXJlZCBpbi5cbiAgICogQHBhcmFtIGNvbW1hbmRJZCAtIFRoZSBJRCBvZiB0aGUgY29tbWFuZCB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgY29tbWFuZC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZH0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9hcHBsaWNhdGlvbi1jb21tYW5kcyNlZGl0LWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBlZGl0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmQ6IChcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ3JlYXRlQXBwbGljYXRpb25Db21tYW5kLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZD4+XG4gIC8qKlxuICAgKiBFZGl0IHRoZSBnaXZlbiBzdGlja2VyLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm4gQSB7QGxpbmsgRGlzY29yZFN0aWNrZXJ9XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZvciBzdGlja2VycyBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IHVzZXIsIHJlcXVpcmVzIGVpdGhlciB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRm9yIG90aGVyIHN0aWNrZXJzLCByZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRmlyZXMgYSBHdWlsZCBTdGlja2VycyBVcGRhdGUgR2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjbW9kaWZ5LWd1aWxkLXN0aWNrZXJ9XG4gICAqL1xuICBlZGl0R3VpbGRTdGlja2VyOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHN0aWNrZXJJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IEF0TGVhc3RPbmU8RWRpdEd1aWxkU3RpY2tlck9wdGlvbnM+LFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRTdGlja2VyPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgdGVtcGxhdGUncyBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgYSB0ZW1wbGF0ZSBvZi5cbiAgICogQHBhcmFtIHRlbXBsYXRlQ29kZSAtIFRoZSBjb2RlIG9mIHRoZSB0ZW1wbGF0ZSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgdGVtcGxhdGUuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIERpc2NvcmRUZW1wbGF0ZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC10ZW1wbGF0ZSNtb2RpZnktZ3VpbGQtdGVtcGxhdGV9XG4gICAqL1xuICBlZGl0R3VpbGRUZW1wbGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdGVtcGxhdGVDb2RlOiBzdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkVGVtcGxhdGUpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFRlbXBsYXRlPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBlZGl0IHRoZSBtZXNzYWdlIGluLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEcyBvZiB0aGUgbWVzc2FnZSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiBlZGl0aW5nIGFub3RoZXIgdXNlcidzIG1lc3NhZ2U6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqIC0gT25seSB0aGUge0BsaW5rIEVkaXRNZXNzYWdlLmZsYWdzIHwgZmxhZ3N9IHByb3BlcnR5IG9mIHRoZSBvcHRpb25zIG9iamVjdCBwYXJhbWV0ZXIgY2FuIGJlIGVkaXRlZC5cbiAgICpcbiAgICogRmlyZXMgYSBfTWVzc2FnZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2VkaXQtbWVzc2FnZX1cbiAgICovXG4gIGVkaXRNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0TWVzc2FnZSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgaW5pdGlhbCBtZXNzYWdlIHJlc3BvbnNlIHRvIGFuIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgaW50ZXJhY3Rpb24gdG9rZW4gdG8gdXNlLCBwcm92aWRlZCBpbiB0aGUgb3JpZ2luYWwgaW50ZXJhY3Rpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSByZXNwb25zZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBVbmxpa2UgYGVkaXRNZXNzYWdlKClgLCB0aGlzIGVuZHBvaW50IGFsbG93cyB0aGUgYm90IHVzZXIgdG8gYWN0IHdpdGhvdXQgbmVlZGluZyB0byBzZWUgdGhlIGNoYW5uZWwgdGhlIG1lc3NhZ2UgaXMgaW4uXG4gICAqXG4gICAqIERvZXMgbm90IHN1cHBvcnQgZXBoZW1lcmFsIGZvbGxvdy11cCBtZXNzYWdlcyBkdWUgdG8gdGhlc2UgYmVpbmcgc3RhdGVsZXNzLlxuICAgKlxuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFVwZGF0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9yZWNlaXZpbmctYW5kLXJlc3BvbmRpbmcjZWRpdC1vcmlnaW5hbC1pbnRlcmFjdGlvbi1yZXNwb25zZX1cbiAgICovXG4gIGVkaXRPcmlnaW5hbEludGVyYWN0aW9uUmVzcG9uc2U6ICh0b2tlbjogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgdm9pY2Ugc3RhdGUgb2YgdGhlIGJvdCB1c2VyLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgaW4gd2hpY2ggdG8gZWRpdCB0aGUgdm9pY2Ugc3RhdGUgb2YgdGhlIGJvdCB1c2VyLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgdm9pY2Ugc3RhdGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSB7QGxpbmsgRWRpdE93blZvaWNlU3RhdGUuY2hhbm5lbElkIHwgY2hhbm5lbElkfSBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBvYmplY3QgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gYSBzdGFnZSBjaGFubmVsLCBhbmQgdGhlIGJvdCB1c2VyIG11c3QgYWxyZWFkeSBoYXZlIGpvaW5lZCBpdC5cbiAgICpcbiAgICogSWYgYXR0ZW1wdGluZyB0byB1bm11dGUgb25lc2VsZjpcbiAgICogLSBSZXF1aXJlcyB0aGUgYE1VVEVfTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgYXR0ZW1wdGluZyB0byByZXF1ZXN0IHRvIHNwZWFrOlxuICAgKiAtIFJlcXVpcmVzIHRoZSBgUkVRVUVTVF9UT19TUEVBS2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3ZvaWNlI21vZGlmeS1jdXJyZW50LXVzZXItdm9pY2Utc3RhdGV9XG4gICAqL1xuICBlZGl0T3duVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdE93blZvaWNlU3RhdGUpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEVkaXRzIGEgcm9sZSBpbiBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZWRpdCB0aGUgcm9sZSBpbi5cbiAgICogQHBhcmFtIHJvbGVJZCAtIFRoZSBJRCBvZiB0aGUgcm9sZSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgcm9sZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkUm9sZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1JPTEVTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBSb2xlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI21vZGlmeS1ndWlsZC1yb2xlfVxuICAgKi9cbiAgZWRpdFJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0R3VpbGRSb2xlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFJvbGU+PlxuICAvKipcbiAgICogRWRpdHMgdGhlIHBvc2l0aW9ucyBvZiBhIHNldCBvZiByb2xlcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHJvbGUgcG9zaXRpb25zIGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgcm9sZSBwb3NpdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkUm9sZX0gb2JqZWN0cyBhc3NvcnRlZCBieSByb2xlIElELlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgUm9sZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQgZm9yIGV2ZXJ5IHJvbGUgaW1wYWN0ZWQgaW4gdGhpcyBjaGFuZ2UuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktZ3VpbGQtcm9sZS1wb3NpdGlvbnN9XG4gICAqL1xuICBlZGl0Um9sZVBvc2l0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogTW9kaWZ5Um9sZVBvc2l0aW9uc1tdLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFJvbGU+W10+XG4gIC8qKlxuICAgKiBFZGl0cyBhIHNjaGVkdWxlZCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHNjaGVkdWxlZCBldmVudCBpbi5cbiAgICogQHBhcmFtIGV2ZW50SWQgLSBUaGUgSUQgb2YgdGhlIHNjaGVkdWxlZCBldmVudCB0byBlZGl0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIERpc2NvcmRTY2hlZHVsZWRFdmVudH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0VWRU5UU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogVG8gc3RhcnQgb3IgZW5kIGFuIGV2ZW50LCBtb2RpZnkgdGhlIGV2ZW50J3MgYHN0YXR1c2AgcHJvcGVydHkuXG4gICAqXG4gICAqIFRoZSBgZW50aXR5X21ldGFkYXRhYCBwcm9wZXJ0eSBpcyBkaXNjYXJkZWQgZm9yIGV2ZW50cyB3aG9zZSBgZW50aXR5X3R5cGVgIGlzIG5vdCB7QGxpbmsgU2NoZWR1bGVkRXZlbnRFbnRpdHlUeXBlfS5FeHRlcm5hbC5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgU2NoZWR1bGVkIEV2ZW50IFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXNjaGVkdWxlZC1ldmVudCNtb2RpZnktZ3VpbGQtc2NoZWR1bGVkLWV2ZW50fVxuICAgKi9cbiAgZWRpdFNjaGVkdWxlZEV2ZW50OiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGV2ZW50SWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPEVkaXRTY2hlZHVsZWRFdmVudD4sXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFNjaGVkdWxlZEV2ZW50Pj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgc3RhZ2UgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHN0YWdlIGNoYW5uZWwgdGhlIHN0YWdlIGluc3RhbmNlIGlzIGFzc29jaWF0ZWQgd2l0aC5cbiAgICogQHBhcmFtIHRvcGljIC0gVG9waWMgb2YgdGhlIFN0YWdlIGluc3RhbmNlICgxLTEyMCBjaGFyYWN0ZXJzKS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgdXBkYXRlZCB7QGxpbmsgRGlzY29yZFN0YWdlSW5zdGFuY2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgdXNlciB0byBiZSBhIG1vZGVyYXRvciBvZiB0aGUgc3RhZ2UgY2hhbm5lbC5cbiAgICpcbiAgICogRmlyZXMgYSBfU3RhZ2UgSW5zdGFuY2UgVXBkYXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0YWdlLWluc3RhbmNlI21vZGlmeS1zdGFnZS1pbnN0YW5jZX1cbiAgICovXG4gIGVkaXRTdGFnZUluc3RhbmNlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHRvcGljOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU3RhZ2VJbnN0YW5jZT4+XG4gIC8qKlxuICAgKiBFZGl0cyB0aGUgdm9pY2Ugc3RhdGUgb2YgYW5vdGhlciB1c2VyLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgaW4gd2hpY2ggdG8gZWRpdCB0aGUgdm9pY2Ugc3RhdGUgb2YgdGhlIGJvdCB1c2VyLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgdm9pY2Ugc3RhdGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSB7QGxpbmsgRWRpdE93blZvaWNlU3RhdGUuY2hhbm5lbElkIHwgY2hhbm5lbElkfSBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBvYmplY3QgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gYSBzdGFnZSBjaGFubmVsLCBhbmQgdGhlIHVzZXIgbXVzdCBhbHJlYWR5IGhhdmUgam9pbmVkIGl0LlxuICAgKlxuICAgKiBSZXF1aXJlcyB0aGUgYE1VVEVfTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3ZvaWNlI21vZGlmeS11c2VyLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgZWRpdFVzZXJWb2ljZVN0YXRlOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0VXNlclZvaWNlU3RhdGUpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEVkaXQgdGhlIGN1cnJlbnQgdXNlciBhcHBsaWNhdGlvbiByb2xlIGNvbm5lY3Rpb24gZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gVGhlIGFjY2VzcyB0b2tlbiBvZiB0aGUgdXNlclxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZWRpdCB0aGUgcm9sZSBjb25uZWN0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gZWRpdFxuICAgKiBAcmV0dXJucyB7RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb259XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgcmVxdWlyZXMgdGhlIGByb2xlX2Nvbm5lY3Rpb25zLndyaXRlYCBzY29wZS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3VzZXIjdXBkYXRlLXVzZXItYXBwbGljYXRpb24tcm9sZS1jb25uZWN0aW9ufVxuICAgKi9cbiAgZWRpdFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uOiAoXG4gICAgYmVhcmVyVG9rZW46IHN0cmluZyxcbiAgICBhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+LFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb24+PlxuICAvKipcbiAgICogRWRpdHMgYSB3ZWJob29rLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGVkaXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZFdlYmhvb2t9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9XRUJIT09LU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfV2ViaG9va3MgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNlZGl0LXdlYmhvb2t9XG4gICAqL1xuICBlZGl0V2ViaG9vazogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlXZWJob29rLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFdlYmhvb2s+PlxuICAvKipcbiAgICogRWRpdHMgYSB3ZWJob29rIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZWRpdCB0aGUgbWVzc2FnZSBvZi5cbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHdlYmhvb2sgdG9rZW4sIHVzZWQgdG8gZWRpdCB0aGUgbWVzc2FnZS5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9NZXNzYWdlIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZWRpdC13ZWJob29rLW1lc3NhZ2V9XG4gICAqL1xuICBlZGl0V2ViaG9va01lc3NhZ2U6IChcbiAgICB3ZWJob29rSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG1lc3NhZ2VJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IEVkaXRXZWJob29rTWVzc2FnZU9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBFZGl0cyBhIHdlYmhvb2sgdXNpbmcgdGhlIHdlYmhvb2sgdG9rZW4sIHRoZXJlYnkgYnlwYXNzaW5nIHRoZSBuZWVkIGZvciBhdXRoZW50aWNhdGlvbiArIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGVkaXQuXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSB3ZWJob29rIHRva2VuLCB1c2VkIHRvIGVkaXQgdGhlIHdlYmhvb2suXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIERpc2NvcmRXZWJob29rfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfV0VCSE9PS1NgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX1dlYmhvb2tzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjbW9kaWZ5LXdlYmhvb2std2l0aC10b2tlbn1cbiAgICovXG4gIGVkaXRXZWJob29rV2l0aFRva2VuOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IE9taXQ8TW9kaWZ5V2ViaG9vaywgJ2NoYW5uZWxJZCc+KSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWJob29rPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgZ3VpbGQncyB3ZWxjb21lIHNjcmVlbi5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIHdlbGNvbWUgc2NyZWVuIG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgd2VsY29tZSBzY3JlZW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIGVkaXRlZCB7QGxpbmsgRGlzY29yZFdlbGNvbWVTY3JlZW59LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbW9kaWZ5LWd1aWxkLXdlbGNvbWUtc2NyZWVufVxuICAgKi9cbiAgZWRpdFdlbGNvbWVTY3JlZW46IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkV2VsY29tZVNjcmVlbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWxjb21lU2NyZWVuPj5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBzZXR0aW5ncyBvZiBhIGd1aWxkJ3Mgd2lkZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgdGhlIHdpZGdldCBvZi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5nc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktZ3VpbGQtd2lkZ2V0fVxuICAgKi9cbiAgZWRpdFdpZGdldFNldHRpbmdzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRHdWlsZFdpZGdldFNldHRpbmdzPixcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5ncz4+XG4gIC8qKlxuICAgKiBFeGVjdXRlcyBhIHdlYmhvb2ssIGNhdXNpbmcgYSBtZXNzYWdlIHRvIGJlIHBvc3RlZCBpbiB0aGUgY2hhbm5lbCBjb25maWd1cmVkIGZvciB0aGUgd2ViaG9vay5cbiAgICpcbiAgICogQHBhcmFtIHdlYmhvb2tJZCAtIFRoZSBJRCBvZiB0aGUgd2ViaG9vayB0byBleGVjdXRlLlxuICAgKiBAcGFyYW0gdG9rZW4gLSBUaGUgd2ViaG9vayB0b2tlbiwgdXNlZCB0byBleGVjdXRlIHRoZSB3ZWJob29rLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSB3ZWJob29rLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LCBvciBgdW5kZWZpbmVkYCBpZiB0aGUge0BsaW5rIEV4ZWN1dGVXZWJob29rLndhaXQgfCB3YWl0fSBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBvYmplY3QgcGFyYW1ldGVyIGlzIHNldCB0byBgZmFsc2VgLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiB0aGUgd2ViaG9vayBjaGFubmVsIGlzIGEgZm9ydW0gY2hhbm5lbCwgeW91IG11c3QgcHJvdmlkZSBhIHZhbHVlIGZvciBlaXRoZXIgYHRocmVhZElkYCBvciBgdGhyZWFkTmFtZWAuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy93ZWJob29rI2V4ZWN1dGUtd2ViaG9va31cbiAgICovXG4gIGV4ZWN1dGVXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcsIHRva2VuOiBzdHJpbmcsIG9wdGlvbnM6IEV4ZWN1dGVXZWJob29rKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZXNzYWdlPiB8IHVuZGVmaW5lZD5cbiAgLyoqXG4gICAqIEZvbGxvd3MgYW4gYW5ub3VuY2VtZW50IGNoYW5uZWwsIGFsbG93aW5nIG1lc3NhZ2VzIHBvc3RlZCB3aXRoaW4gaXQgdG8gYmUgY3Jvc3MtcG9zdGVkIGludG8gdGhlIHRhcmdldCBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlQ2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBhbm5vdW5jZW1lbnQgY2hhbm5lbCB0byBmb2xsb3cuXG4gICAqIEBwYXJhbSB0YXJnZXRDaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHRhcmdldCBjaGFubmVsIC0gdGhlIGNoYW5uZWwgdG8gY3Jvc3MtcG9zdCB0by5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEZvbGxvd2VkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uIGluIHRoZSBfX3RhcmdldCBjaGFubmVsX18uXG4gICAqXG4gICAqIEZpcmVzIGEgX1dlYmhvb2tzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZm9sbG93LWFubm91bmNlbWVudC1jaGFubmVsfVxuICAgKi9cbiAgZm9sbG93QW5ub3VuY2VtZW50OiAoc291cmNlQ2hhbm5lbElkOiBCaWdTdHJpbmcsIHRhcmdldENoYW5uZWxJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEZvbGxvd2VkQ2hhbm5lbD4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGFsbCBhY3RpdmUgdGhyZWFkcyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgdGhyZWFkcyBvZi5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRMaXN0QWN0aXZlVGhyZWFkc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJldHVybnMgYm90aCBwdWJsaWMgYW5kIHByaXZhdGUgdGhyZWFkcy5cbiAgICpcbiAgICogVGhyZWFkcyBhcmUgb3JkZXJlZCBieSB0aGUgYGlkYCBwcm9wZXJ0eSBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbGlzdC1hY3RpdmUtZ3VpbGQtdGhyZWFkc31cbiAgICovXG4gIGdldEFjdGl2ZVRocmVhZHM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExpc3RBY3RpdmVUaHJlYWRzPj5cbiAgLyoqIEdldCB0aGUgYXBwbGljYXRpb25zIGluZm8gKi9cbiAgZ2V0QXBwbGljYXRpb25JbmZvOiAoKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbj4+XG4gIC8qKlxuICAgKiBFZGl0IHByb3BlcnRpZXMgb2YgdGhlIGFwcCBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3RpbmcgYm90IHVzZXIuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIE9ubHkgcHJvcGVydGllcyB0aGF0IGFyZSBwYXNzZWQgd2lsbCBiZSB1cGRhdGVkLlxuICAgKi9cbiAgZWRpdEFwcGxpY2F0aW9uSW5mbzogKGJvZHk6IEVkaXRBcHBsaWNhdGlvbikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb24+PlxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IGF1dGhlbnRpY2F0aW9uIGluZm8gZm9yIHRoZSBhdXRoZW50aWNhdGVkIHVzZXJcbiAgICpcbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gQW55IE9BdXRoMiBkZXJpdmVkIGFjY2VzcyB0b2tlblxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEN1cnJlbnRBdXRob3JpemF0aW9ufVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGUgdXNlciBvYmplY3QgaXMgbm90IGRlZmluZWQgaWYgdGhlIHNjb3BlcyBkbyBub3QgaW5jbHVkZSBgaWRlbnRpZnlgLlxuICAgKiBJbiB0aGUgdXNlciBvYmplY3QsIGlmIGRlZmluZWQsIHRoZSBlbWFpbCBpcyBub3QgaW5jbHVkZWQgaWYgdGhlIHNjb3BlcyBkbyBub3QgaW5jbHVkZSBgZW1haWxgXG4gICAqL1xuICBnZXRDdXJyZW50QXV0aGVudGljYXRpb25JbmZvOiAoYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQ3VycmVudEF1dGhvcml6YXRpb24+PlxuICAvKipcbiAgICogRXhjaGFuZ2UgdGhlIGluZm9ybWF0aW9uIHRvIGdldCBhIE9BdXRoMiBhY2Nlc3NUb2tlbiB0b2tlblxuICAgKlxuICAgKiBAcGFyYW0gY2xpZW50SWQgLSBBcHBsaWNhdGlvbidzIGNsaWVudCBpZFxuICAgKiBAcGFyYW0gY2xpZW50U2VjcmV0IC0gYXBwbGljYXRpb24ncyBjbGllbnQgc2VjcmV0XG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gbWFrZSB0aGUgZXhjaGFuZ2Ugd2l0aCBkaXNjb3JkXG4gICAqL1xuICBleGNoYW5nZVRva2VuOiAoY2xpZW50SWQ6IEJpZ1N0cmluZywgY2xpZW50U2VjcmV0OiBzdHJpbmcsIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRUb2tlbkV4Y2hhbmdlPikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQWNjZXNzVG9rZW5SZXNwb25zZT4+XG4gIC8qKlxuICAgKiBSZXZva2UgYW4gYWNjZXNzX3Rva2VuXG4gICAqXG4gICAqIEBwYXJhbSBjbGllbnRJZCAtIEFwcGxpY2F0aW9uJ3MgY2xpZW50IGlkXG4gICAqIEBwYXJhbSBjbGllbnRTZWNyZXQgLSBhcHBsaWNhdGlvbidzIGNsaWVudCBzZWNyZXRcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byByZXZva2UgdGhlIGFjY2Vzc190b2tlblxuICAgKi9cbiAgcmV2b2tlVG9rZW46IChjbGllbnRJZDogQmlnU3RyaW5nLCBjbGllbnRTZWNyZXQ6IHN0cmluZywgb3B0aW9uczogQ2FtZWxpemU8RGlzY29yZFRva2VuUmV2b2NhdGlvbj4pID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHBlcm1pc3Npb25zIG9mIGEgZ3VpbGQgYXBwbGljYXRpb24gY29tbWFuZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRoZSBjb21tYW5kIGlzIHJlZ2lzdGVyZWQgaW4uXG4gICAqIEBwYXJhbSBjb21tYW5kSWQgLSBUaGUgSUQgb2YgdGhlIGNvbW1hbmQgdG8gZ2V0IHRoZSBwZXJtaXNzaW9ucyBvZi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgT0F1dGgyIHJlbGF0ZWQgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9uc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZW4gc3BlY2lmeWluZyB0aGUgb3B0aW9ucyBvYmplY3QgdGhlIGFjY2VzcyB0b2tlbiBwYXNzZWQtaW4gcmVxdWlyZXMgdGhlIE9BdXRoMiBzY29wZSBgYXBwbGljYXRpb25zLmNvbW1hbmRzLnBlcm1pc3Npb25zLnVwZGF0ZWBcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2dldC1hcHBsaWNhdGlvbi1jb21tYW5kLXBlcm1pc3Npb25zfVxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbjogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjb21tYW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbk9wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRQZXJtaXNzaW9ucz4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwZXJtaXNzaW9ucyBvZiBhbGwgYXBwbGljYXRpb24gY29tbWFuZHMgcmVnaXN0ZXJlZCBpbiBhIGd1aWxkIGJ5IHRoZSBJRCBvZiB0aGUgZ3VpbGQgYW5kIG9wdGlvbmFsbHkgYW4gZXh0ZXJuYWwgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHBlcm1pc3Npb25zIG9iamVjdHMgb2YuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIE9BdXRoMiByZWxhdGVkIG9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSBlbmRwb2ludFxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25zfSBvYmplY3RzIGFzc29ydGVkIGJ5IGNvbW1hbmQgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZW4gc3BlY2lmeWluZyB0aGUgb3B0aW9ucyBvYmplY3QgdGhlIGFjY2VzcyB0b2tlbiBwYXNzZWQtaW4gcmVxdWlyZXMgdGhlIE9BdXRoMiBzY29wZSBgYXBwbGljYXRpb25zLmNvbW1hbmRzLnBlcm1pc3Npb25zLnVwZGF0ZWBcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2dldC1ndWlsZC1hcHBsaWNhdGlvbi1jb21tYW5kLXBlcm1pc3Npb25zfVxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgb3B0aW9ucz86IEdldEFwcGxpY2F0aW9uQ29tbWFuZFBlcm1pc3Npb25PcHRpb25zLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEd1aWxkQXBwbGljYXRpb25Db21tYW5kUGVybWlzc2lvbnM+W10+XG4gIC8qKlxuICAgKiBHZXRzIGEgZ3VpbGQncyBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGF1ZGl0IGxvZyBvZi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQXVkaXRMb2d9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFZJRVdfQVVESVRfTE9HYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvYXVkaXQtbG9nI2dldC1ndWlsZC1hdWRpdC1sb2d9XG4gICAqL1xuICBnZXRBdWRpdExvZzogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEd1aWxkQXVkaXRMb2cpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEF1ZGl0TG9nPj5cbiAgLyoqXG4gICAqIEdldHMgYW4gYXV0b21vZCBydWxlIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgcnVsZSBvZi5cbiAgICogQHBhcmFtIHJ1bGVJZCAtIFRoZSBJRCBvZiB0aGUgcnVsZSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQXV0b01vZGVyYXRpb25SdWxlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9hdXRvLW1vZGVyYXRpb24jZ2V0LWF1dG8tbW9kZXJhdGlvbi1ydWxlfVxuICAgKi9cbiAgZ2V0QXV0b21vZFJ1bGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJ1bGVJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGU+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBhdXRvbW9kIHJ1bGVzIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBydWxlcyBmcm9tLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGV9IG9iamVjdHMgYXNzb3J0ZWQgYnkgcnVsZSBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9hdXRvLW1vZGVyYXRpb24jbGlzdC1hdXRvLW1vZGVyYXRpb24tcnVsZXMtZm9yLWd1aWxkfVxuICAgKi9cbiAgZ2V0QXV0b21vZFJ1bGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBdXRvTW9kZXJhdGlvblJ1bGU+W10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB2b2ljZSByZWdpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRWb2ljZVJlZ2lvbn0gb2JqZWN0cyBhc3NvcnRlZCBieSB2b2ljZSByZWdpb24gSUQuXG4gICAqL1xuICBnZXRBdmFpbGFibGVWb2ljZVJlZ2lvbnM6ICgpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFZvaWNlUmVnaW9uPltdPlxuICAvKipcbiAgICogR2V0cyBhIGJhbiBieSB1c2VyIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBiYW4gZnJvbS5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBnZXQgdGhlIGJhbiBmb3IuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQmFufS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBCQU5fTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1iYW59XG4gICAqL1xuICBnZXRCYW46IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRCYW4+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBiYW5zIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaXN0IG9mIGJhbnMgZm9yLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIGxpc3Qgb2YgYmFucy5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkQmFufSBvYmplY3RzIGFzc29ydGVkIGJ5IHVzZXIgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQkFOX01FTUJFUlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFVzZXJzIGFyZSBvcmRlcmVkIGJ5IHRoZWlyIElEcyBpbiBfYXNjZW5kaW5nXyBvcmRlci5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1iYW5zfVxuICAgKi9cbiAgZ2V0QmFuczogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldEJhbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEJhbj5bXT5cbiAgLyoqXG4gICAqIEdldHMgYSBjaGFubmVsIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHRoZSBjaGFubmVsIGlzIGEgdGhyZWFkLCBhIHtAbGluayBEaXNjb3JkVGhyZWFkTWVtYmVyfSBvYmplY3QgaXMgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZ2V0LWNoYW5uZWx9XG4gICAqL1xuICBnZXRDaGFubmVsOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZENoYW5uZWw+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBpbnZpdGVzIGZvciBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0IHRoZSBpbnZpdGVzIG9mLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRJbnZpdGVNZXRhZGF0YX0gb2JqZWN0cyBhc3NvcnRlZCBieSBpbnZpdGUgY29kZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfQ0hBTk5FTFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIE9ubHkgdXNhYmxlIGZvciBndWlsZCBjaGFubmVscy5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjZ2V0LWNoYW5uZWwtaW52aXRlc31cbiAgICovXG4gIGdldENoYW5uZWxJbnZpdGVzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEludml0ZU1ldGFkYXRhPltdPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBjaGFubmVscyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgY2hhbm5lbHMgb2YuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZENoYW5uZWx9IG9iamVjdHMgYXNzb3J0ZWQgYnkgY2hhbm5lbCBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRXhjbHVkZXMgdGhyZWFkcy5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1jaGFubmVsc31cbiAgICovXG4gIGdldENoYW5uZWxzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDaGFubmVsPltdPlxuICAvKipcbiAgICogR2V0cyBhIGxpc3Qgb2Ygd2ViaG9va3MgZm9yIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB3aGljaCB0byBnZXQgdGhlIHdlYmhvb2tzIG9mLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRXZWJob29rfSBvYmplY3RzIGFzc29ydGVkIGJ5IHdlYmhvb2sgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNnZXQtY2hhbm5lbC13ZWJob29rc31cbiAgICovXG4gIGdldENoYW5uZWxXZWJob29rczogKGNoYW5uZWxJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWJob29rPltdPlxuICAvKipcbiAgICogR2V0cyBvciBjcmVhdGVzIGEgRE0gY2hhbm5lbCB3aXRoIGEgdXNlci5cbiAgICpcbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBjcmVhdGUgdGhlIERNIGNoYW5uZWwgd2l0aC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRDaGFubmVsfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3VzZXIjY3JlYXRlLWRtfVxuICAgKi9cbiAgZ2V0RG1DaGFubmVsOiAodXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZENoYW5uZWw+PlxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGdyb3VwIERNIGNoYW5uZWwgd2l0aCBtdWx0aXBsZSB1c2Vycy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgY3JlYXRlIGEgbmV3IGdyb3VwIGRtXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQ2hhbm5lbH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSBhY2Nlc3MgdG9rZW5zIHJlcXVpcmUgdG8gaGF2ZSB0aGUgYGdkbS5qb2luYCBzY29wZVxuICAgKlxuICAgKiBUaGlzIGVuZHBvaW50IGlzIGxpbWl0ZWQgdG8gMTAgYWN0aXZlIGdyb3VwIERNcy5cbiAgICpcbiAgICogRmlyZXMgYSBfQ2hhbm5lbCBjcmVhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy91c2VyI2NyZWF0ZS1ncm91cC1kbX1cbiAgICovXG4gIGdldEdyb3VwRG1DaGFubmVsOiAob3B0aW9uczogQ3JlYXRlR3JvdXBEbU9wdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZENoYW5uZWw+PlxuICAvKipcbiAgICogR2V0cyBhbiBlbW9qaSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCBmcm9tIHdoaWNoIHRvIGdldCB0aGUgZW1vamkuXG4gICAqIEBwYXJhbSBlbW9qaUlkIC0gVGhlIElEIG9mIHRoZSBlbW9qaSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkRW1vaml9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJbmNsdWRlcyB0aGUgYHVzZXJgIGZpZWxkIGlmIHRoZSBib3QgaGFzIHRoZSBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLFxuICAgKiBvciBpZiB0aGUgYm90IGNyZWF0ZWQgdGhlIGVtb2ppIGFuZCBoYXMgdGhlIHRoZSBgQ1JFQVRFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjZ2V0LWd1aWxkLWVtb2ppfVxuICAgKi9cbiAgZ2V0RW1vamk6IChndWlsZElkOiBCaWdTdHJpbmcsIGVtb2ppSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkRW1vamk+PlxuICAvKipcbiAgICogR2V0cyBhbiBhcHBsaWNhdGlvbiBlbW9qaSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBlbW9qaUlkIC0gVGhlIElEIG9mIHRoZSBlbW9qaSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkRW1vaml9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBBbHdheXMgaW5jbHVkZXMgdGhlIGB1c2VyYCBvYmplY3QgZm9yIHRoZSB0ZWFtIG1lbWJlciB0aGF0IHVwbG9hZGVkIHRoZSBlbW9qaSBmcm9tIHRoZSBhcHAncyBzZXR0aW5ncywgb3IgZm9yIHRoZSBib3QgdXNlciBpZiB1cGxvYWRlZCB1c2luZyB0aGUgQVBJLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjZ2V0LWFwcGxpY2F0aW9uLWVtb2ppfVxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb25FbW9qaTogKGVtb2ppSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkRW1vamk+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBlbW9qaXMgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB3aGljaCB0byBnZXQgdGhlIGVtb2ppcyBvZi5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkRW1vaml9IG9iamVjdHMgYXNzb3J0ZWQgYnkgZW1vamkgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEluY2x1ZGVzIGB1c2VyYCBmaWVsZHMgaWYgdGhlIGJvdCBoYXMgdGhlIGBDUkVBVEVfR1VJTERfRVhQUkVTU0lPTlNgIG9yIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9lbW9qaSNsaXN0LWd1aWxkLWVtb2ppc31cbiAgICovXG4gIGdldEVtb2ppczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkRW1vamk+W10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGVtb2ppcyBmb3IgYW4gYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHRoZSBhcnJheSBvZiB7QGxpbmsgRGlzY29yZEVtb2ppfSBvYmplY3RzLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBBbHdheXMgaW5jbHVkZXMgdGhlIGB1c2VyYCBvYmplY3QgZm9yIHRoZSB0ZWFtIG1lbWJlciB0aGF0IHVwbG9hZGVkIHRoZSBlbW9qaSBmcm9tIHRoZSBhcHAncyBzZXR0aW5ncywgb3IgZm9yIHRoZSBib3QgdXNlciBpZiB1cGxvYWRlZCB1c2luZyB0aGUgQVBJLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZW1vamkjbGlzdC1hcHBsaWNhdGlvbi1lbW9qaXN9XG4gICAqL1xuICBnZXRBcHBsaWNhdGlvbkVtb2ppczogKCkgPT4gUHJvbWlzZTx7IGl0ZW1zOiBDYW1lbGl6ZTxEaXNjb3JkRW1vamk+W10gfT5cbiAgLyoqXG4gICAqIEdldHMgYSBmb2xsb3ctdXAgbWVzc2FnZSB0byBhbiBpbnRlcmFjdGlvbiBieSB0aGUgSUQgb2YgdGhlIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVubGlrZSBgZ2V0TWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0OlxuICAgKiAtIE5lZWRpbmcgdG8gYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIHRoYXQgdGhlIG1lc3NhZ2UgaXMgaW4uIChgUkVBRF9NRVNTQUdFU2AgcGVybWlzc2lvbi4pXG4gICAqIC0gUmVxdWlyaW5nIHRoZSBgTUVTU0FHRV9DT05URU5UYCBpbnRlbnQuXG4gICAqXG4gICAqIERvZXMgbm90IHN1cHBvcnQgZXBoZW1lcmFsIGZvbGxvdy11cCBtZXNzYWdlcyBkdWUgdG8gdGhlc2UgYmVpbmcgc3RhdGVsZXNzLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvcmVjZWl2aW5nLWFuZC1yZXNwb25kaW5nI2dldC1mb2xsb3d1cC1tZXNzYWdlfVxuICAgKi9cbiAgZ2V0Rm9sbG93dXBNZXNzYWdlOiAodG9rZW46IHN0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lc3NhZ2U+PlxuICAvKiogR2V0IHRoZSBib3RzIEdhdGV3YXkgbWV0YWRhdGEgdGhhdCBjYW4gaGVscCBkdXJpbmcgdGhlIG9wZXJhdGlvbiBvZiBsYXJnZSBvciBzaGFyZGVkIGJvdHMuICovXG4gIGdldEdhdGV3YXlCb3Q6ICgpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+PlxuICAvKipcbiAgICogR2V0cyBhIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmRJZCAtIFRoZSBJRCBvZiB0aGUgY29tbWFuZCB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkQXBwbGljYXRpb25Db21tYW5kfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2dldC1nbG9iYWwtYXBwbGljYXRpb24tY29tbWFuZH1cbiAgICovXG4gIGdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiB5b3VyIGJvdCdzIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kcy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kc1xuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmR9IG9iamVjdHMgYXNzb3J0ZWQgYnkgY29tbWFuZCBJRC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2dldC1nbG9iYWwtYXBwbGljYXRpb24tY29tbWFuZHN9XG4gICAqL1xuICBnZXRHbG9iYWxBcHBsaWNhdGlvbkNvbW1hbmRzOiAob3B0aW9ucz86IEdldEdsb2JhbEFwcGxpY2F0aW9uQ29tbWFuZHNPcHRpb25zKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+W10+XG4gIC8qKlxuICAgKiBHZXRzIGEgZ3VpbGQgYnkgaXRzIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIGd1aWxkLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEd1aWxkfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZH1cbiAgICovXG4gIGdldEd1aWxkOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogeyBjb3VudHM/OiBib29sZWFuIH0pID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEd1aWxkPj5cbiAgLyoqXG4gICAqIEdldCB0aGUgdXNlciBndWlsZHMuXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXIsIGlmIHVuc3BlY2lmaWVkIHRoZSBib3QgdG9rZW4gaXMgdXNlZCBpbnN0ZWFkXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgZ3VpbGQuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHBhcnRpYWwge0BsaW5rIERpc2NvcmRHdWlsZH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHVzZWQgd2l0aCBhbiBhY2Nlc3MgdG9rZW4sIHRoZSB0b2tlbiBuZWVkcyB0byBoYXZlIHRoZSBgZ3VpbGRzYCBzY29wZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvdXNlciNnZXQtY3VycmVudC11c2VyLWd1aWxkc31cbiAgICovXG4gIGdldEd1aWxkczogKGJlYXJlclRva2VuPzogc3RyaW5nLCBvcHRpb25zPzogR2V0VXNlckd1aWxkcykgPT4gUHJvbWlzZTxQYXJ0aWFsPENhbWVsaXplPERpc2NvcmRHdWlsZD4+W10+XG4gIC8qKlxuICAgKiBHZXRzIGEgZ3VpbGQgYXBwbGljYXRpb24gY29tbWFuZCBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgY29tbWFuZCBpcyByZWdpc3RlcmVkIGluLlxuICAgKiBAcGFyYW0gY29tbWFuZElkIC0gVGhlIElEIG9mIHRoZSBjb21tYW5kIHRvIGdldC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmR9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjZ2V0LWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmR9XG4gICAqL1xuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZDogKGNvbW1hbmRJZDogQmlnU3RyaW5nLCBndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZD4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIGFwcGxpY2F0aW9uIGNvbW1hbmRzIHJlZ2lzdGVyZWQgYnkgeW91ciBib3QgaW4gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRoZSBjb21tYW5kcyBhcmUgcmVnaXN0ZXJlZCBpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIGd1aWxkIGFwcGxpY2F0aW9uIGNvbW1hbmRzXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZH0gb2JqZWN0cyBhc3NvcnRlZCBieSBjb21tYW5kIElELlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjZ2V0LWdsb2JhbC1hcHBsaWNhdGlvbi1jb21tYW5kc3N9XG4gICAqL1xuICBnZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRHdWlsZEFwcGxpY2F0aW9uQ29tbWFuZHNPcHRpb25zKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+W10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwcmV2aWV3IG9mIGEgZ3VpbGQgYnkgYSBndWlsZCdzIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBwcmV2aWV3IG9mLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZEd1aWxkUHJldmlld30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHRoZSBib3QgdXNlciBpcyBub3QgaW4gdGhlIGd1aWxkLCB0aGUgZ3VpbGQgbXVzdCBiZSBkaXNjb3ZlcmFibGUuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtcHJldmlld31cbiAgICovXG4gIGdldEd1aWxkUHJldmlldzogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR3VpbGRQcmV2aWV3Pj5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdGlja2VyIG9iamVjdCBmb3IgdGhlIGdpdmVuIGd1aWxkIGFuZCBzdGlja2VyIElEcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXRcbiAgICogQHBhcmFtIHN0aWNrZXJJZCBUaGUgSUQgb2YgdGhlIHN0aWNrZXIgdG8gZ2V0XG4gICAqIEByZXR1cm4gQSB7QGxpbmsgRGlzY29yZFN0aWNrZXJ9XG4gICAqXG4gICAqIEByZW1hcmtzIEluY2x1ZGVzIHRoZSB1c2VyIGZpZWxkIGlmIHRoZSBib3QgaGFzIHRoZSBgQ1JFQVRFX0dVSUxEX0VYUFJFU1NJT05TYCBvciBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvc3RpY2tlciNnZXQtZ3VpbGQtc3RpY2tlcn1cbiAgICovXG4gIGdldEd1aWxkU3RpY2tlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgc3RpY2tlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFN0aWNrZXI+PlxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBzdGlja2VyIG9iamVjdHMgZm9yIHRoZSBnaXZlbiBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXRcbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkU3RpY2tlcn0gb2JqZWN0cyBhc3NvcnRlZCBieSBzdGlja2VyIElELlxuICAgKlxuICAgKiBAcmVtYXJrcyBJbmNsdWRlcyB1c2VyIGZpZWxkcyBpZiB0aGUgYm90IGhhcyB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjbGlzdC1ndWlsZC1zdGlja2Vyc31cbiAgICovXG4gIGdldEd1aWxkU3RpY2tlcnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFN0aWNrZXI+W10+XG4gIC8qKlxuICAgKiBHZXRzIGEgdGVtcGxhdGUgYnkgaXRzIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZUNvZGUgLSBUaGUgY29kZSBvZiB0aGUgdGVtcGxhdGUgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZFRlbXBsYXRlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC10ZW1wbGF0ZSNnZXQtZ3VpbGQtdGVtcGxhdGV9XG4gICAqL1xuICBnZXRHdWlsZFRlbXBsYXRlOiAodGVtcGxhdGVDb2RlOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFRlbXBsYXRlPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgdGVtcGxhdGVzIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaXN0IG9mIHRlbXBsYXRlcyBmb3IuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZFRlbXBsYXRlfSBvYmplY3RzIGFzc29ydGVkIGJ5IHRlbXBsYXRlIGNvZGUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQtdGVtcGxhdGUjZ2V0LWd1aWxkLXRlbXBsYXRlc31cbiAgICovXG4gIGdldEd1aWxkVGVtcGxhdGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRUZW1wbGF0ZT5bXT5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2Ygd2ViaG9va3MgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIGxpc3Qgb2Ygd2ViaG9va3MgZm9yLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRXZWJob29rfSBvYmplY3RzIGFzc29ydGVkIGJ5IHdlYmhvb2sgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1dFQkhPT0tTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNnZXQtZ3VpbGQtd2ViaG9va3N9XG4gICAqL1xuICBnZXRHdWlsZFdlYmhvb2tzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWJob29rPltdPlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBpbnRlZ3JhdGlvbnMgYXR0YWNoZWQgdG8gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGlzdCBvZiBpbnRlZ3JhdGlvbnMgZnJvbS5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkSW50ZWdyYXRpb259IG9iamVjdHMgYXNzb3J0ZWQgYnkgaW50ZWdyYXRpb24gSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLWludGVncmF0aW9uc31cbiAgICovXG4gIGdldEludGVncmF0aW9uczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkSW50ZWdyYXRpb24+W10+XG4gIC8qKlxuICAgKiBHZXRzIGFuIGludml0ZSB0byBhIGNoYW5uZWwgYnkgaXRzIGludml0ZSBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gaW52aXRlQ29kZSAtIFRoZSBpbnZpdGUgY29kZSBvZiB0aGUgaW52aXRlIHRvIGdldC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBpbnZpdGUuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkSW52aXRlTWV0YWRhdGF9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvaW52aXRlI2dldC1pbnZpdGV9XG4gICAqL1xuICBnZXRJbnZpdGU6IChpbnZpdGVDb2RlOiBzdHJpbmcsIG9wdGlvbnM/OiBHZXRJbnZpdGUpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEludml0ZU1ldGFkYXRhPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgaW52aXRlcyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgaW52aXRlcyBmcm9tLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRJbnZpdGVNZXRhZGF0YX0gb2JqZWN0cyBhc3NvcnRlZCBieSBpbnZpdGUgY29kZS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9pbnZpdGUjZ2V0LWludml0ZXN9XG4gICAqL1xuICBnZXRJbnZpdGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRJbnZpdGVNZXRhZGF0YT5bXT5cbiAgLyoqXG4gICAqIEdldHMgYSBtZXNzYWdlIGZyb20gYSBjaGFubmVsIGJ5IHRoZSBJRCBvZiB0aGUgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCBmcm9tIHdoaWNoIHRvIGdldCB0aGUgbWVzc2FnZS5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBnZXQuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoYXQgdGhlIGJvdCB1c2VyIGJlIGFibGUgdG8gc2VlIHRoZSBjb250ZW50cyBvZiB0aGUgY2hhbm5lbCBpbiB3aGljaCB0aGUgbWVzc2FnZSB3YXMgcG9zdGVkLlxuICAgKlxuICAgKiBJZiBnZXR0aW5nIGEgbWVzc2FnZSBmcm9tIGEgZ3VpbGQgY2hhbm5lbDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNnZXQtY2hhbm5lbC1tZXNzYWdlfVxuICAgKi9cbiAgZ2V0TWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBHZXRzIG11bHRpcGxlIG1lc3NhZ2VzIGZyb20gYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIGZyb20gd2hpY2ggdG8gZ2V0IHRoZSBtZXNzYWdlcy5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBtZXNzYWdlcy5cbiAgICogQHJldHVybnMgUmV0dXJucyBhbiBhcnJheSBvZiB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9IG9iamVjdHMgZnJvbSBuZXdlc3QgdG8gb2xkZXN0IG9uIHN1Y2Nlc3MuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoYXQgdGhlIGJvdCB1c2VyIGJlIGFibGUgdG8gc2VlIHRoZSBjb250ZW50cyBvZiB0aGUgY2hhbm5lbCBpbiB3aGljaCB0aGUgbWVzc2FnZXMgd2VyZSBwb3N0ZWQuXG4gICAqXG4gICAqIElmIGdldHRpbmcgYSBtZXNzYWdlcyBmcm9tIGEgZ3VpbGQgY2hhbm5lbDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNnZXQtY2hhbm5lbC1tZXNzYWdlc31cbiAgICovXG4gIGdldE1lc3NhZ2VzOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRNZXNzYWdlc09wdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lc3NhZ2U+W10+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3RpY2tlciBwYWNrIGZvciB0aGUgZ2l2ZW4gSUQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERpc2NvcmRTdGlja2VyUGFja30gb2JqZWN0LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvc3RpY2tlciNnZXQtc3RpY2tlci1wYWNrfVxuICAgKi9cbiAgZ2V0U3RpY2tlclBhY2s6IChzdGlja2VyUGFja0lkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFN0aWNrZXJQYWNrPj5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxpc3Qgb2Ygc3RpY2tlciBwYWNrcyBhdmFpbGFibGUuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZFN0aWNrZXJQYWNrfSBvYmplY3RzIGFzc29ydGVkIGJ5IHN0aWNrZXIgSUQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9zdGlja2VyI2xpc3Qtc3RpY2tlci1wYWNrc31cbiAgICovXG4gIGdldFN0aWNrZXJQYWNrczogKCkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU3RpY2tlclBhY2s+W10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpbml0aWFsIG1lc3NhZ2UgcmVzcG9uc2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVW5saWtlIGBnZXRNZXNzYWdlKClgLCB0aGlzIGVuZHBvaW50IGFsbG93cyB0aGUgYm90IHVzZXIgdG8gYWN0IHdpdGhvdXQ6XG4gICAqIC0gTmVlZGluZyB0byBiZSBhYmxlIHRvIHNlZSB0aGUgY29udGVudHMgb2YgdGhlIGNoYW5uZWwgdGhhdCB0aGUgbWVzc2FnZSBpcyBpbi4gKGBSRUFEX01FU1NBR0VTYCBwZXJtaXNzaW9uLilcbiAgICogLSBSZXF1aXJpbmcgdGhlIGBNRVNTQUdFX0NPTlRFTlRgIGludGVudC5cbiAgICpcbiAgICogRG9lcyBub3Qgc3VwcG9ydCBlcGhlbWVyYWwgZm9sbG93LXVwIG1lc3NhZ2VzIGR1ZSB0byB0aGVzZSBiZWluZyBzdGF0ZWxlc3MuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL2ludGVyYWN0aW9ucy9yZWNlaXZpbmctYW5kLXJlc3BvbmRpbmcjZ2V0LW9yaWdpbmFsLWludGVyYWN0aW9uLXJlc3BvbnNlfVxuICAgKi9cbiAgZ2V0T3JpZ2luYWxJbnRlcmFjdGlvblJlc3BvbnNlOiAodG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgcGlucyBpbiBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0IHRoZSBwaW5zIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSBwaW5zLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEaXNjb3JkR2V0Q2hhbm5lbFBpbnN9IG9iamVjdHNcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBWSUVXX0NIQU5ORUxgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIElmIHRoZSB1c2VyIGlzIG1pc3NpbmcgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbiBpbiB0aGUgY2hhbm5lbCwgdGhlbiBubyBwaW5zIHdpbGwgYmUgcmV0dXJuZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9tZXNzYWdlI2dldC1jaGFubmVsLXBpbnN9XG4gICAqL1xuICBnZXRDaGFubmVsUGluczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0Q2hhbm5lbFBpbnNPcHRpb25zKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHZXRDaGFubmVsUGlucz4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwaW5uZWQgbWVzc2FnZXMgZm9yIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBnZXQgdGhlIHBpbm5lZCBtZXNzYWdlcyBmb3IuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9IG9iamVjdHMgYXNzb3J0ZWQgYnkgbWVzc2FnZSBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhhdCB0aGUgYm90IHVzZXIgYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIGluIHdoaWNoIHRoZSBtZXNzYWdlcyB3ZXJlIHBvc3RlZC5cbiAgICpcbiAgICogSWYgZ2V0dGluZyBhIG1lc3NhZ2UgZnJvbSBhIGd1aWxkIGNoYW5uZWw6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL21lc3NhZ2UjZ2V0LXBpbm5lZC1tZXNzYWdlcy1kZXByZWNhdGVkfVxuICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIGdldENoYW5uZWxQaW5zfSBpbnN0ZWFkLlxuICAgKi9cbiAgZ2V0UGlubmVkTWVzc2FnZXM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT5bXT5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxpc3Qgb2YgcHJpdmF0ZSBhcmNoaXZlZCB0aHJlYWRzIGZvciBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgdG8gZ2V0IHRoZSBhcmNoaXZlZCB0aHJlYWRzIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRocmVhZHMuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkTGlzdEFyY2hpdmVkVGhyZWFkc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUkVBRF9NRVNTQUdFX0hJU1RPUllgIHBlcm1pc3Npb24uXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX1RIUkVBRFNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFJldHVybnMgdGhyZWFkcyBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkUHJpdmF0ZVRocmVhZC5cbiAgICpcbiAgICogVGhyZWFkcyBhcmUgb3JkZXJlZCBieSB0aGUgYGFyY2hpdmVfdGltZXN0YW1wYCBwcm9wZXJ0eSBpbmNsdWRlZCBpbiB0aGUgbWV0YWRhdGEgb2YgdGhlIG9iamVjdCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNsaXN0LXByaXZhdGUtYXJjaGl2ZWQtdGhyZWFkc31cbiAgICovXG4gIGdldFByaXZhdGVBcmNoaXZlZFRocmVhZHM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RBcmNoaXZlZFRocmVhZHMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHM+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBwcml2YXRlIGFyY2hpdmVkIHRocmVhZHMgdGhlIGJvdCBpcyBhIG1lbWJlciBvZiBmb3IgYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGdldCB0aGUgYXJjaGl2ZWQgdGhyZWFkcyBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aHJlYWRzLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHN9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBSZXR1cm5zIHRocmVhZHMgb2YgdHlwZSB7QGxpbmsgQ2hhbm5lbFR5cGVzfS5HdWlsZFByaXZhdGVUaHJlYWQuXG4gICAqXG4gICAqIFRocmVhZHMgYXJlIG9yZGVyZWQgYnkgdGhlIGBpZGAgcHJvcGVydHkgaW4gZGVzY2VuZGluZyBvcmRlci5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjbGlzdC1qb2luZWQtcHJpdmF0ZS1hcmNoaXZlZC10aHJlYWRzfVxuICAgKi9cbiAgZ2V0UHJpdmF0ZUpvaW5lZEFyY2hpdmVkVGhyZWFkczogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogTGlzdEFyY2hpdmVkVGhyZWFkcykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTGlzdEFyY2hpdmVkVGhyZWFkcz4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IHdvdWxkIGJlIGtpY2tlZCBmcm9tIGEgZ3VpbGQgZHVyaW5nIHBydW5pbmcuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHBydW5lIGNvdW50IG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIHBydW5lIGNvdW50LlxuICAgKiBAcmV0dXJucyBBIG51bWJlciBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IHdvdWxkIGJlIGtpY2tlZC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIGFuZCBgS0lDS19NRU1CRVJTYCBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1wcnVuZS1jb3VudH1cbiAgICovXG4gIGdldFBydW5lQ291bnQ6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBHZXRHdWlsZFBydW5lQ291bnRRdWVyeSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkUHJ1bmVkQ291bnQ+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBwdWJsaWMgYXJjaGl2ZWQgdGhyZWFkcyBmb3IgYSBjaGFubmVsLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIGdldCB0aGUgYXJjaGl2ZWQgdGhyZWFkcyBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aHJlYWRzLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHN9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYFJFQURfTUVTU0FHRV9ISVNUT1JZYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBJZiBjYWxsZWQgb24gYSBjaGFubmVsIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRUZXh0LCByZXR1cm5zIHRocmVhZHMgb2YgdHlwZSB7QGxpbmsgQ2hhbm5lbFR5cGVzfS5HdWlsZFB1YmxpY1RocmVhZC5cbiAgICogSWYgY2FsbGVkIG9uIGEgY2hhbm5lbCBvZiB0eXBlIHtAbGluayBDaGFubmVsVHlwZXN9Lkd1aWxkTmV3cywgcmV0dXJucyB0aHJlYWRzIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGROZXdzVGhyZWFkLlxuICAgKlxuICAgKiBUaHJlYWRzIGFyZSBvcmRlcmVkIGJ5IHRoZSBgYXJjaGl2ZV90aW1lc3RhbXBgIHByb3BlcnR5IGluY2x1ZGVkIGluIHRoZSBtZXRhZGF0YSBvZiB0aGUgb2JqZWN0IGluIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2xpc3QtcHVibGljLWFyY2hpdmVkLXRocmVhZHN9XG4gICAqL1xuICBnZXRQdWJsaWNBcmNoaXZlZFRocmVhZHM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RBcmNoaXZlZFRocmVhZHMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExpc3RBcmNoaXZlZFRocmVhZHM+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiByb2xlcyBmb3IgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGlzdCBvZiByb2xlcyBmb3IuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZFJvbGV9IG9iamVjdHMgYXNzb3J0ZWQgYnkgcm9sZSBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4pqg77iPIFRoaXMgZW5kcG9pbnQgc2hvdWxkIGJlIHVzZWQgc3BhcmluZ2x5IGR1ZSB0byB7QGxpbmsgRGlzY29yZFJvbGV9IG9iamVjdHMgYWxyZWFkeSBiZWluZyBpbmNsdWRlZCBpbiBndWlsZCBwYXlsb2Fkcy5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1yb2xlc31cbiAgICovXG4gIGdldFJvbGVzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRSb2xlPltdPlxuICAvKipcbiAgICogR2V0cyBhIHJvbGUgYnkgaWQgZm9yIGEgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgcm9sZSBmb3IuXG4gICAqIEBwYXJhbSByb2xlSWQgLSBUaGUgSUQgb2YgdGhlIHJvbGUuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERpc2NvcmRSb2xlfSBvYmplY3QuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtcm9sZX1cbiAgICovXG4gIGdldFJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHJvbGVJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRSb2xlPj5cbiAgLyoqXG4gICAqIEdldHMgYSBzY2hlZHVsZWQgZXZlbnQgYnkgaXRzIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzY2hlZHVsZWQgZXZlbnQgZnJvbS5cbiAgICogQHBhcmFtIGV2ZW50SWQgLSBUaGUgSUQgb2YgdGhlIHNjaGVkdWxlZCBldmVudCB0byBnZXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgc2NoZWR1bGVkIGV2ZW50LlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZFNjaGVkdWxlZEV2ZW50fS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkLXNjaGVkdWxlZC1ldmVudCNnZXQtZ3VpbGQtc2NoZWR1bGVkLWV2ZW50fVxuICAgKi9cbiAgZ2V0U2NoZWR1bGVkRXZlbnQ6IChndWlsZElkOiBCaWdTdHJpbmcsIGV2ZW50SWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IHsgd2l0aFVzZXJDb3VudD86IGJvb2xlYW4gfSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU2NoZWR1bGVkRXZlbnQ+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBzY2hlZHVsZWQgZXZlbnRzIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzY2hlZHVsZWQgZXZlbnRzIGZyb20uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgc2NoZWR1bGVkIGV2ZW50cy5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkU2NoZWR1bGVkRXZlbnR9IG9iamVjdHMgYXNzb3J0ZWQgYnkgZXZlbnQgSUQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC1zY2hlZHVsZWQtZXZlbnQjbGlzdC1zY2hlZHVsZWQtZXZlbnRzLWZvci1ndWlsZH1cbiAgICovXG4gIGdldFNjaGVkdWxlZEV2ZW50czogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEdldFNjaGVkdWxlZEV2ZW50cykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU2NoZWR1bGVkRXZlbnQ+W10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIHN1YnNjcmliZXJzIHRvIGEgc2NoZWR1bGVkIGV2ZW50IGZyb20gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgc3Vic2NyaWJlcnMgdG8gdGhlIHNjaGVkdWxlZCBldmVudCBmcm9tLlxuICAgKiBAcGFyYW0gZXZlbnRJZCAtIFRoZSBJRCBvZiB0aGUgc2NoZWR1bGVkIGV2ZW50IHRvIGdldCB0aGUgc3Vic2NyaWJlcnMgb2YuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgc3Vic2NyaWJlcnMuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZFVzZXJ9IG9iamVjdHMgYXNzb3J0ZWQgYnkgdXNlciBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfRVZFTlRTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBVc2VycyBhcmUgb3JkZXJlZCBieSB0aGVpciBJRHMgaW4gX2FzY2VuZGluZ18gb3JkZXIuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC1zY2hlZHVsZWQtZXZlbnQjZ2V0LWd1aWxkLXNjaGVkdWxlZC1ldmVudC11c2Vyc31cbiAgICovXG4gIGdldFNjaGVkdWxlZEV2ZW50VXNlcnM6IChcbiAgICBndWlsZElkOiBCaWdTdHJpbmcsXG4gICAgZXZlbnRJZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM/OiBHZXRTY2hlZHVsZWRFdmVudFVzZXJzLFxuICApID0+IFByb21pc2U8QXJyYXk8eyB1c2VyOiBDYW1lbGl6ZTxEaXNjb3JkVXNlcj47IG1lbWJlcj86IENhbWVsaXplPERpc2NvcmRNZW1iZXI+IH0+PlxuICAvKiogR2V0IHRoZSBib3RzIEdhdGV3YXkgbWV0YWRhdGEgdGhhdCBjYW4gaGVscCBkdXJpbmcgdGhlIG9wZXJhdGlvbiBvZiBsYXJnZSBvciBzaGFyZGVkIGJvdHMuICovXG4gIGdldFNlc3Npb25JbmZvOiAoKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHZXRHYXRld2F5Qm90Pj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHN0YWdlIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCBhIHN0YWdlIGNoYW5uZWwsIGlmIG9uZSBleGlzdHMuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHN0YWdlIGNoYW5uZWwgdGhlIHN0YWdlIGluc3RhbmNlIGlzIGFzc29jaWF0ZWQgd2l0aC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRTdGFnZUluc3RhbmNlfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0YWdlLWluc3RhbmNlI2dldC1zdGFnZS1pbnN0YW5jZX1cbiAgICovXG4gIGdldFN0YWdlSW5zdGFuY2U6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU3RhZ2VJbnN0YW5jZT4+XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHVzZXIncyB2b2ljZSBzdGF0ZSBpbiB0aGUgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHZvaWNlIHN0YXRlIGZyb20uXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkVm9pY2VTdGF0ZX0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy92b2ljZSNnZXQtY3VycmVudC11c2VyLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgZ2V0T3duVm9pY2VTdGF0ZTogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkVm9pY2VTdGF0ZT4+XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzcGVjaWZpZWQgdXNlcidzIHZvaWNlIHN0YXRlIGluIHRoZSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgdm9pY2Ugc3RhdGUgZnJvbS5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBnZXQgdGhlIHZvaWNlIHN0YXRlIGZyb21cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRWb2ljZVN0YXRlfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3ZvaWNlI2dldC11c2VyLXZvaWNlLXN0YXRlfVxuICAgKi9cbiAgZ2V0VXNlclZvaWNlU3RhdGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRWb2ljZVN0YXRlPj5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdGlja2VyIG9iamVjdCBmb3IgdGhlIGdpdmVuIHN0aWNrZXIgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBzdGlja2VySWQgVGhlIElEIG9mIHRoZSBzdGlja2VyIHRvIGdldFxuICAgKiBAcmV0dXJucyBBIHtAbGluayBEaXNjb3JkU3RpY2tlcn1cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3N0aWNrZXIjZ2V0LXN0aWNrZXJ9XG4gICAqL1xuICBnZXRTdGlja2VyOiAoc3RpY2tlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFN0aWNrZXI+PlxuICAvKipcbiAgICogR2V0cyBhIHRocmVhZCBtZW1iZXIgYnkgdGhlaXIgdXNlciBJRC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgdGhyZWFkIHRvIGdldCB0aGUgdGhyZWFkIG1lbWJlciBvZi5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSB0aHJlYWQgbWVtYmVyIHRvIGdldC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZldGNoaW5nIG9mIHRoZSB0aHJlYWQgbWVtYmVyLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZFRocmVhZE1lbWJlcn0uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2dldC10aHJlYWQtbWVtYmVyfVxuICAgKi9cbiAgZ2V0VGhyZWFkTWVtYmVyOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0VGhyZWFkTWVtYmVyKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRUaHJlYWRNZW1iZXI+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiB0aHJlYWQgbWVtYmVycyBmb3IgYSB0aHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHRocmVhZCB0byBnZXQgdGhlIHRocmVhZCBtZW1iZXJzIG9mLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIHRocmVhZCBtZW1iZXJzLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRUaHJlYWRNZW1iZXJ9IGFzc29ydGVkIGJ5IHVzZXIgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBhcHBsaWNhdGlvbiB0byBoYXZlIHRoZSBgR1VJTERfTUVNQkVSU2AgcHJpdmlsZWdlZCBpbnRlbnQgZW5hYmxlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjbGlzdC10aHJlYWQtbWVtYmVyc31cbiAgICovXG4gIGdldFRocmVhZE1lbWJlcnM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RUaHJlYWRNZW1iZXJzKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRUaHJlYWRNZW1iZXI+W10+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIHVzZXJzIHRoYXQgcmVhY3RlZCB3aXRoIGFuIGVtb2ppIHRvIGEgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0aGUgbWVzc2FnZSB0byBnZXQgdGhlIHVzZXJzIGZvciBpcyBpbi5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBnZXQgdGhlIHVzZXJzIGZvci5cbiAgICogQHBhcmFtIHJlYWN0aW9uIC0gVGhlIHJlYWN0aW9uIGZvciB3aGljaCB0byBnZXQgdGhlIHVzZXJzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIHVzZXJzLlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRVc2VyfSBvYmplY3RzIGFzc29ydGVkIGJ5IHVzZXIgSUQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2dldC1yZWFjdGlvbnN9XG4gICAqL1xuICBnZXRSZWFjdGlvbnM6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgbWVzc2FnZUlkOiBCaWdTdHJpbmcsIHJlYWN0aW9uOiBzdHJpbmcsIG9wdGlvbnM/OiBHZXRSZWFjdGlvbnMpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFVzZXI+W10+XG4gIC8qKlxuICAgKiBHZXQgYSB1c2VyJ3MgZGF0YSBmcm9tIHRoZSBhcGlcbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSB1c2VyJ3MgaWRcbiAgICogQHJldHVybnMge0Rpc2NvcmRVc2VyfVxuICAgKi9cbiAgZ2V0VXNlcjogKGlkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFVzZXI+PlxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHVzZXIgZGF0YS5cbiAgICpcbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gVGhlIGFjY2VzcyB0b2tlbiBvZiB0aGUgdXNlclxuICAgKiBAcmV0dXJucyB7RGlzY29yZFVzZXJ9XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgcmVxdWlyZXMgdGhlIGBpZGVudGlmeWAgc2NvcGUuXG4gICAqXG4gICAqIFRvIGdldCB0aGUgbWFpbCB0aGlzIGFsc28gcmVxdWlyZXMgdGhlIGBlbWFpbGAgc2NvcGVcbiAgICovXG4gIGdldEN1cnJlbnRVc2VyOiAoYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkVXNlcj4+XG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdXNlciBjb25uZWN0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gVGhlIGFjY2VzcyB0b2tlbiBvZiB0aGUgdXNlclxuICAgKiBAcmV0dXJucyB7RGlzY29yZENvbm5lY3Rpb25bXX1cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyByZXF1aXJlcyB0aGUgYGNvbm5lY3Rpb25zYCBzY29wZS5cbiAgICovXG4gIGdldFVzZXJDb25uZWN0aW9uczogKGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZENvbm5lY3Rpb24+W10+XG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdXNlciBhcHBsaWNhdGlvbiByb2xlIGNvbm5lY3Rpb24gZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gVGhlIGFjY2VzcyB0b2tlbiBvZiB0aGUgdXNlclxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSByb2xlIGNvbm5lY3Rpb25cbiAgICogQHJldHVybnMge0Rpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9ufVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGUgYWNjZXNzIHRva2VuIHJlcXVpcmVzIHRoZSBgcm9sZV9jb25uZWN0aW9ucy53cml0ZWAgc2NvcGUuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy91c2VyI2dldC11c2VyLWFwcGxpY2F0aW9uLXJvbGUtY29ubmVjdGlvbn1cbiAgICovXG4gIGdldFVzZXJBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uOiAoYmVhcmVyVG9rZW46IHN0cmluZywgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uPj5cbiAgLyoqXG4gICAqIEdldHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHZhbml0eSB1cmwgb2YgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgdmFuaXR5IHVybCBpbmZvcm1hdGlvbiBmb3IuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkVmFuaXR5VXJsfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIFRoZSBgY29kZWAgcHJvcGVydHkgd2lsbCBiZSBgbnVsbGAgaWYgdGhlIGd1aWxkIGRvZXMgbm90IGhhdmUgYSBzZXQgdmFuaXR5IHVybC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC12YW5pdHktdXJsfVxuICAgKi9cbiAgZ2V0VmFuaXR5VXJsOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRWYW5pdHlVcmw+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiB2b2ljZSByZWdpb25zIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSB2b2ljZSByZWdpb25zIGZvci5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkVm9pY2VSZWdpb259IG9iamVjdHMgYXNzb3J0ZWQgYnkgdm9pY2UgcmVnaW9uIElELlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLXZvaWNlLXJlZ2lvbnN9XG4gICAqL1xuICBnZXRWb2ljZVJlZ2lvbnM6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFZvaWNlUmVnaW9uPltdPlxuICAvKipcbiAgICogR2V0cyBhIHdlYmhvb2sgYnkgaXRzIElELlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGdldC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRXZWJob29rfS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBNQU5BR0VfV0VCSE9PS1NgIHBlcm1pc3Npb24gdW5sZXNzIHRoZSBhcHBsaWNhdGlvbiBtYWtpbmcgdGhlIHJlcXVlc3Qgb3ducyB0aGUgd2ViaG9vay5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZ2V0LXdlYmhvb2t9XG4gICAqL1xuICBnZXRXZWJob29rOiAod2ViaG9va0lkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFdlYmhvb2s+PlxuICAvKipcbiAgICogR2V0cyBhIHdlYmhvb2sgbWVzc2FnZSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJob29rSWQgLSBUaGUgSUQgb2YgdGhlIHdlYmhvb2sgdG8gZ2V0IGEgbWVzc2FnZSBvZi5cbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHdlYmhvb2sgdG9rZW4sIHVzZWQgdG8gZ2V0IHdlYmhvb2sgbWVzc2FnZXMuXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSB0aGUgSUQgb2YgdGhlIHdlYmhvb2sgbWVzc2FnZSB0byBnZXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmZXRjaGluZyBvZiB0aGUgbWVzc2FnZS5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIERpc2NvcmRNZXNzYWdlfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL3dlYmhvb2sjZ2V0LXdlYmhvb2stbWVzc2FnZX1cbiAgICovXG4gIGdldFdlYmhvb2tNZXNzYWdlOiAoXG4gICAgd2ViaG9va0lkOiBCaWdTdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogR2V0V2ViaG9va01lc3NhZ2VPcHRpb25zLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lc3NhZ2U+PlxuICAvKipcbiAgICogR2V0cyBhIHdlYmhvb2sgdXNpbmcgdGhlIHdlYmhvb2sgdG9rZW4sIHRoZXJlYnkgYnlwYXNzaW5nIHRoZSBuZWVkIGZvciBhdXRoZW50aWNhdGlvbiArIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBAcGFyYW0gd2ViaG9va0lkIC0gVGhlIElEIG9mIHRoZSB3ZWJob29rIHRvIGdldC5cbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIHdlYmhvb2sgdG9rZW4sIHVzZWQgdG8gZ2V0IHRoZSB3ZWJob29rLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZFdlYmhvb2t9LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvd2ViaG9vayNnZXQtd2ViaG9vay13aXRoLXRva2VufVxuICAgKi9cbiAgZ2V0V2ViaG9va1dpdGhUb2tlbjogKHdlYmhvb2tJZDogQmlnU3RyaW5nLCB0b2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRXZWJob29rPj5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHdlbGNvbWUgc2NyZWVuIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSB3ZWxjb21lIHNjcmVlbiBmb3IuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkV2VsY29tZVNjcmVlbn0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHRoZSB3ZWxjb21lIHNjcmVlbiBpcyBub3QgZW5hYmxlZDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC13ZWxjb21lLXNjcmVlbn1cbiAgICovXG4gIGdldFdlbGNvbWVTY3JlZW46IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFdlbGNvbWVTY3JlZW4+PlxuICAvKipcbiAgICogR2V0cyB0aGUgZ3VpbGQgd2lkZ2V0IGJ5IGd1aWxkIElELlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSB3aWRnZXQgb2YuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkR3VpbGRXaWRnZXR9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhbiBgSU5WSVRFX0NSRUFURURgIEdhdGV3YXkgZXZlbnQgd2hlbiBhbiBpbnZpdGUgY2hhbm5lbCBpcyBkZWZpbmVkIGFuZCBhIG5ldyBgSW52aXRlYCBpcyBnZW5lcmF0ZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNnZXQtZ3VpbGQtd2lkZ2V0fVxuICAgKi9cbiAgZ2V0V2lkZ2V0OiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHdWlsZFdpZGdldD4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzZXR0aW5ncyBvZiBhIGd1aWxkJ3Mgd2lkZ2V0LlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSB3aWRnZXQgb2YuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkR3VpbGRXaWRnZXRTZXR0aW5nc30uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjZ2V0LWd1aWxkLXdpZGdldC1zZXR0aW5nc31cbiAgICovXG4gIGdldFdpZGdldFNldHRpbmdzOiAoZ3VpbGRJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRHdWlsZFdpZGdldFNldHRpbmdzPj5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIGJvdCB1c2VyIHRvIGEgdGhyZWFkLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSB0aHJlYWQgdG8gYWRkIHRoZSBib3QgdXNlciB0by5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIHRocmVhZCBub3QgYmUgYXJjaGl2ZWQuXG4gICAqXG4gICAqIEZpcmVzIGEgX1RocmVhZCBNZW1iZXJzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjam9pbi10aHJlYWR9XG4gICAqL1xuICBqb2luVGhyZWFkOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIExlYXZlcyBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gbGVhdmUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX0d1aWxkIERlbGV0ZV8gZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy91c2VyI2xlYXZlLWd1aWxkfVxuICAgKi9cbiAgbGVhdmVHdWlsZDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgYm90IHVzZXIgZnJvbSBhIHRocmVhZC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgdGhyZWFkIHRvIHJlbW92ZSB0aGUgYm90IHVzZXIgZnJvbS5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIHRocmVhZCBub3QgYmUgYXJjaGl2ZWQuXG4gICAqXG4gICAqIEZpcmVzIGEgX1RocmVhZCBNZW1iZXJzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjbGVhdmUtdGhyZWFkfVxuICAgKi9cbiAgbGVhdmVUaHJlYWQ6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQ3Jvc3MtcG9zdHMgYSBtZXNzYWdlIHBvc3RlZCBpbiBhbiBhbm5vdW5jZW1lbnQgY2hhbm5lbCB0byBzdWJzY3JpYmVkIGNoYW5uZWxzLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBhbm5vdW5jZW1lbnQgY2hhbm5lbC5cbiAgICogQHBhcmFtIG1lc3NhZ2VJZCAtIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBjcm9zcy1wb3N0LlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3Jvc3MtcG9zdGVkIHtAbGluayBEaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgU0VORF9NRVNTQUdFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgbm90IGNyb3NzLXBvc3Rpbmcgb3duIG1lc3NhZ2U6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBNQU5BR0VfTUVTU0FHRVNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgQ3JlYXRlXyBldmVudCBpbiB0aGUgZ3VpbGRzIHRoZSBzdWJzY3JpYmVkIGNoYW5uZWxzIGFyZSBpbi5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjY3Jvc3Nwb3N0LW1lc3NhZ2V9XG4gICAqL1xuICBwdWJsaXNoTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcm9sZSBmcm9tIGEgbWVtYmVyLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIG1lbWJlciB0byByZW1vdmUgdGhlIHJvbGUgZnJvbSBpcyBpbi5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSBtZW1iZXIgdG8gcmVtb3ZlIHRoZSByb2xlIGZyb20uXG4gICAqIEBwYXJhbSByb2xlSWQgLSBUaGUgSUQgb2YgdGhlIHJvbGUgdG8gcmVtb3ZlIGZyb20gdGhlIG1lbWJlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9ST0xFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgTWVtYmVyIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI3JlbW92ZS1ndWlsZC1tZW1iZXItcm9sZX1cbiAgICovXG4gIHJlbW92ZVJvbGU6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByb2xlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgbWVtYmVyIGZyb20gYSB0aHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIHRocmVhZCB0byByZW1vdmUgdGhlIHRocmVhZCBtZW1iZXIgb2YuXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgdXNlciBJRCBvZiB0aGUgdGhyZWFkIG1lbWJlciB0byByZW1vdmUuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHRoZSB0aHJlYWQgaXMgb2YgdHlwZSB7QGxpbmsgQ2hhbm5lbFR5cGVzfS5HdWlsZFByaXZhdGVUaHJlYWQsIHJlcXVpcmVzIHRvIGJlIHRoZSBjcmVhdG9yIG9mIHRoZSB0aHJlYWQuXG4gICAqIE90aGVyd2lzZSwgcmVxdWlyZXMgdGhlIGBNQU5BR0VfVEhSRUFEU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogUmVxdWlyZXMgdGhlIHRocmVhZCBub3QgYmUgYXJjaGl2ZWQuXG4gICAqXG4gICAqIEZpcmVzIGEgX1RocmVhZCBNZW1iZXJzIFVwZGF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjcmVtb3ZlLXRocmVhZC1tZW1iZXJ9XG4gICAqL1xuICByZW1vdmVUaHJlYWRNZW1iZXI6IChjaGFubmVsSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBtZW1iZXIgZnJvbSBhIEdyb3VwIERNLlxuICAgKlxuICAgKiBAcGFyYW0gY2hhbm5lbElkIC0gVGhlIElEIG9mIHRoZSBjaGFubmVsIHRvIHJlbW92ZSB0aGUgcmVjaXBpZW50IHVzZXIgb2YuXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgdXNlciBJRCBvZiB0aGUgdXNlciB0byByZW1vdmUuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI2dyb3VwLWRtLXJlbW92ZS1yZWNpcGllbnR9XG4gICAqL1xuICByZW1vdmVEbVJlY2lwaWVudDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCB1c2VySWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogU2VuZHMgYSBtZXNzYWdlIHRvIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB0byBzZW5kIHRoZSBtZXNzYWdlIGluLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIG1lc3NhZ2UuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBEaXNjb3JkTWVzc2FnZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoYXQgdGhlIGJvdCB1c2VyIGJlIGFibGUgdG8gc2VlIHRoZSBjb250ZW50cyBvZiB0aGUgY2hhbm5lbCB0aGUgbWVzc2FnZSBpcyB0byBiZSBzZW50IGluLlxuICAgKlxuICAgKiBJZiBzZW5kaW5nIGEgbWVzc2FnZSB0byBhIGd1aWxkIGNoYW5uZWw6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBTRU5EX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBJZiBzZW5kaW5nIGEgVFRTIG1lc3NhZ2U6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBTRU5EX1RUU19NRVNTQUdFU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogSWYgc2VuZGluZyBhIG1lc3NhZ2UgYXMgYSByZXBseSB0byBhbm90aGVyIG1lc3NhZ2U6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBSRUFEX01FU1NBR0VfSElTVE9SWWAgcGVybWlzc2lvbi5cbiAgICogLSBUaGUgbWVzc2FnZSBiZWluZyByZXBsaWVkIHRvIGNhbm5vdCBiZSBhIHN5c3RlbSBtZXNzYWdlLlxuICAgKlxuICAgKiDimqDvuI8gVGhlIG1heGltdW0gc2l6ZSBvZiBhIHJlcXVlc3QgKGFjY291bnRpbmcgZm9yIGFueSBhdHRhY2htZW50cyBhbmQgbWVzc2FnZSBjb250ZW50KSBmb3IgYm90IHVzZXJzIGlzIF84IE1pQl8uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNjcmVhdGUtbWVzc2FnZX1cbiAgICovXG4gIHNlbmRNZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZU1lc3NhZ2VPcHRpb25zKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZXNzYWdlPj5cbiAgLyoqXG4gICAqIFNlbmRzIGEgZm9sbG93LXVwIG1lc3NhZ2UgdG8gYW4gaW50ZXJhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0b2tlbiAtIFRoZSBpbnRlcmFjdGlvbiB0b2tlbiB0byB1c2UsIHByb3ZpZGVkIGluIHRoZSBvcmlnaW5hbCBpbnRlcmFjdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBtZXNzYWdlLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZE1lc3NhZ2V9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiDimqDvuI8gSW50ZXJhY3Rpb24gdG9rZW5zIGFyZSBvbmx5IHZhbGlkIGZvciBfMTUgbWludXRlc18uXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIG1lbnRpb25zIGFyZSBzdXBwcmVzc2VkLiBUbyBlbmFibGUgbWVudGlvbnMsIHBhc3MgYSBtZW50aW9uIG9iamVjdCB3aXRoIHRoZSBjYWxsYmFjayBkYXRhLlxuICAgKlxuICAgKiBVbmxpa2UgYHNlbmRNZXNzYWdlKClgLCB0aGlzIGVuZHBvaW50IGFsbG93cyB0aGUgYm90IHVzZXIgdG8gYWN0IHdpdGhvdXQ6XG4gICAqIC0gTmVlZGluZyB0byBiZSBhYmxlIHRvIHNlZSB0aGUgY29udGVudHMgb2YgdGhlIGNoYW5uZWwgdGhhdCB0aGUgbWVzc2FnZSBpcyBpbi4gKGBSRUFEX01FU1NBR0VTYCBwZXJtaXNzaW9uLilcbiAgICogLSBSZXF1aXJpbmcgdGhlIGBNRVNTQUdFX0NPTlRFTlRgIGludGVudC5cbiAgICpcbiAgICogQXBwcyBhcmUgbGltaXRlZCB0byA1IGZvbGxvd3VwIG1lc3NhZ2VzIHBlciBpbnRlcmFjdGlvbiBpZiBpdCB3YXMgaW5pdGlhdGVkIGZyb20gYSB1c2VyLWluc3RhbGxlZCBhcHAgYW5kIGlzbid0IGluc3RhbGxlZCBpbiB0aGUgc2VydmVyXG4gICAqIFlvdSBjYW4gY2hlY2sgaWYgaXQgd2FzIGluaXRpYXRlZCBmcm9tIGEgdXNlci1pbnN0YWxsZWQgYXBwIHRoYXQgaXNuJ3QgaW5zdGFsbGVkIGluIHRoZSBzZXJ2ZXIgYnkgY2hlY2tpbmcgaWYge0BsaW5rIERpc2NvcmRJbnRlcmFjdGlvbi5hdXRob3JpemluZ19pbnRlZ3JhdGlvbl9vd25lcnMgfCBhdXRob3JpemluZ0ludGVncmF0aW9uT3duZXJzfSBvbmx5IGNvbnRhaW5zIHtAbGluayBEaXNjb3JkQXBwbGljYXRpb25JbnRlZ3JhdGlvblR5cGUuVXNlckluc3RhbGwgfCBVc2VySW5zdGFsbH0uXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgQ3JlYXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL3JlY2VpdmluZy1hbmQtcmVzcG9uZGluZyNjcmVhdGUtZm9sbG93dXAtbWVzc2FnZX1cbiAgICovXG4gIHNlbmRGb2xsb3d1cE1lc3NhZ2U6ICh0b2tlbjogc3RyaW5nLCBvcHRpb25zOiBJbnRlcmFjdGlvbkNhbGxiYWNrRGF0YSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVzc2FnZT4+XG4gIC8qKlxuICAgKiBTZW5kcyBhIHJlc3BvbnNlIHRvIGFuIGludGVyYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaW50ZXJhY3Rpb25JZCAtIFRoZSBJRCBvZiB0aGUgaW50ZXJhY3Rpb24gdG8gcmVzcG9uZCB0by5cbiAgICogQHBhcmFtIHRva2VuIC0gVGhlIGludGVyYWN0aW9uIHRva2VuIHRvIHVzZSwgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbmFsIGludGVyYWN0aW9uLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIHJlc3BvbnNlIG9mIHRoZSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyBOb3RoaW5nIG9yIHRoZSB7QGxpbmsgRGlzY29yZEludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZX0gaWYgd2l0aFJlc3BvbnNlIHBhcmFtIGlzIHRydWVcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4pqg77iPIEludGVyYWN0aW9uIHRva2VucyBhcmUgb25seSB2YWxpZCBmb3IgXzE1IG1pbnV0ZXNfLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBtZW50aW9ucyBhcmUgc3VwcHJlc3NlZC4gVG8gZW5hYmxlIG1lbnRpb25zLCBwYXNzIGEgbWVudGlvbiBvYmplY3Qgd2l0aCB0aGUgY2FsbGJhY2sgZGF0YS5cbiAgICpcbiAgICogVW5saWtlIGBzZW5kTWVzc2FnZSgpYCwgdGhpcyBlbmRwb2ludCBhbGxvd3MgdGhlIGJvdCB1c2VyIHRvIGFjdCB3aXRob3V0OlxuICAgKiAtIE5lZWRpbmcgdG8gYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFubmVsIHRoYXQgdGhlIG1lc3NhZ2UgaXMgaW4uIChgUkVBRF9NRVNTQUdFU2AgcGVybWlzc2lvbi4pXG4gICAqIC0gUmVxdWlyaW5nIHRoZSBgTUVTU0FHRV9DT05URU5UYCBpbnRlbnQuXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgQ3JlYXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL3JlY2VpdmluZy1hbmQtcmVzcG9uZGluZyNjcmVhdGUtaW50ZXJhY3Rpb24tcmVzcG9uc2V9XG4gICAqL1xuICBzZW5kSW50ZXJhY3Rpb25SZXNwb25zZTogKFxuICAgIGludGVyYWN0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEludGVyYWN0aW9uUmVzcG9uc2UsXG4gICAgcGFyYW1zPzogSW50ZXJhY3Rpb25DYWxsYmFja09wdGlvbnMsXG4gICkgPT4gUHJvbWlzZTx2b2lkIHwgQ2FtZWxpemU8RGlzY29yZEludGVyYWN0aW9uQ2FsbGJhY2tSZXNwb25zZT4+XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdGhyZWFkLCB1c2luZyBhbiBleGlzdGluZyBtZXNzYWdlIGFzIGl0cyBwb2ludCBvZiBvcmlnaW4uXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZSB0aHJlYWQuXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gdXNlIGFzIHRoZSB0aHJlYWQncyBwb2ludCBvZiBvcmlnaW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgdG8gdXNlIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIHRocmVhZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgY3JlYXRlZCB7QGxpbmsgRGlzY29yZENoYW5uZWx9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJZiBjYWxsZWQgb24gYSBjaGFubmVsIG9mIHR5cGUge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRUZXh0LCBjcmVhdGVzIGEge0BsaW5rIENoYW5uZWxUeXBlc30uR3VpbGRQdWJsaWNUaHJlYWQuXG4gICAqIElmIGNhbGxlZCBvbiBhIGNoYW5uZWwgb2YgdHlwZSB7QGxpbmsgQ2hhbm5lbFR5cGVzfS5HdWlsZE5ld3MsIGNyZWF0ZXMgYSB7QGxpbmsgQ2hhbm5lbFR5cGVzfS5HdWlsZE5ld3NUaHJlYWQuXG4gICAqIERvZXMgbm90IHdvcmsgb24gY2hhbm5lbHMgb2YgdHlwZSB7QGxpbmsgQ2hhbm5lbFR5cGVzfS5HdWlsZEZvcnVtLlxuICAgKlxuICAgKiBUaGUgSUQgb2YgdGhlIGNyZWF0ZWQgdGhyZWFkIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIElEIG9mIHRoZSBzb3VyY2UgbWVzc2FnZS5cbiAgICpcbiAgICogRmlyZXMgYSBfVGhyZWFkIENyZWF0ZV8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2NoYW5uZWwjc3RhcnQtdGhyZWFkLWZyb20tbWVzc2FnZX1cbiAgICovXG4gIHN0YXJ0VGhyZWFkV2l0aE1lc3NhZ2U6IChcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBtZXNzYWdlSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBTdGFydFRocmVhZFdpdGhNZXNzYWdlLFxuICAgIHJlYXNvbj86IHN0cmluZyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRDaGFubmVsPj5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0aHJlYWQgd2l0aG91dCB1c2luZyBhIG1lc3NhZ2UgYXMgdGhlIHRocmVhZCdzIHBvaW50IG9mIG9yaWdpbi5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCBpbiB3aGljaCB0byBjcmVhdGUgdGhlIHRocmVhZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyB0byB1c2UgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUgdGhyZWFkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBjcmVhdGVkIHtAbGluayBEaXNjb3JkQ2hhbm5lbCB8IFRocmVhZH0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIENyZWF0aW5nIGEgcHJpdmF0ZSB0aHJlYWQgcmVxdWlyZXMgdGhlIHNlcnZlciB0byBiZSBib29zdGVkLlxuICAgKlxuICAgKiBGaXJlcyBhIF9UaHJlYWQgQ3JlYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvY2hhbm5lbCNzdGFydC10aHJlYWQtd2l0aG91dC1tZXNzYWdlfVxuICAgKi9cbiAgc3RhcnRUaHJlYWRXaXRob3V0TWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBTdGFydFRocmVhZFdpdGhvdXRNZXNzYWdlLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZENoYW5uZWw+PlxuICAvKipcbiAgICogR2V0IGEgbGlzdCBvZiB1c2VycyB0aGF0IHZvdGVkIGZvciB0aGlzIHNwZWNpZmljIGFuc3dlci5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCBpbiB3aGljaCB0aGUgbWVzc2FnZSB3aXRoIHRoZSBwb2xsIGxpdmVzXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgaW4gd2hpY2ggdGhlIHBvbGwgbGl2ZXNcbiAgICogQHBhcmFtIGFuc3dlcklkIC0gVGhlIElEIG9mIHRoZSBhbnN3ZXIgdG8gZ2V0IHRoZSB1c2VycyB0aGF0IHZvdGVkIHRoYXQgYW5zd2VyXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIHVzZXJzIHRoYXQgdm90ZWQgZm9yIHRoZSBzcGVjaWZpYyBhbnN3ZXIuXG4gICAqL1xuICBnZXRQb2xsQW5zd2VyVm90ZXJzOiAoXG4gICAgY2hhbm5lbElkOiBCaWdTdHJpbmcsXG4gICAgbWVzc2FnZUlkOiBCaWdTdHJpbmcsXG4gICAgYW5zd2VySWQ6IG51bWJlcixcbiAgICBvcHRpb25zPzogR2V0UG9sbEFuc3dlclZvdGVzLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEdldEFuc3dlclZvdGVzUmVzcG9uc2U+PlxuICAvKipcbiAgICogSW1tZWRpYXRlbHkgZW5kcyB0aGUgcG9sbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCBpbiB3aGljaCB0aGUgbWVzc2FnZSB3aXRoIHRoZSBwb2xsIGxpdmVzXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgaW4gd2hpY2ggdGhlIHBvbGwgbGl2ZXNcbiAgICogQHJldHVybnMgVGhlIG1lc3NhZ2Ugd2l0aCB0aGUgZXhwaXJlZCBwb2xsXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFlvdSBjYW5ub3QgZW5kIHBvbGxzIGZyb20gb3RoZXIgdXNlcnMuXG4gICAqXG4gICAqIEZpcmVzIGEgX01lc3NhZ2UgVXBkYXRlXyBnYXRld2F5IGV2ZW50XG4gICAqL1xuICBlbmRQb2xsOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZXNzYWdlPj5cbiAgLyoqXG4gICAqIFN5bmNocm9uaXNlcyBhIHRlbXBsYXRlIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIHN5bmNocm9uaXNlIGEgdGVtcGxhdGUgb2YuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBlZGl0ZWQge0BsaW5rIERpc2NvcmRUZW1wbGF0ZX0uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZC10ZW1wbGF0ZSNnZXQtZ3VpbGQtdGVtcGxhdGVzfVxuICAgKi9cbiAgc3luY0d1aWxkVGVtcGxhdGU6IChndWlsZElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFRlbXBsYXRlPj5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIGEgdHlwaW5nIGluZGljYXRvciBmb3IgdGhlIHNwZWNpZmllZCBjaGFubmVsLCB3aGljaCBleHBpcmVzIGFmdGVyIDEwIHNlY29uZHMuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgaW4gd2hpY2ggdG8gdHJpZ2dlciB0aGUgdHlwaW5nIGluZGljYXRvci5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogR2VuZXJhbGx5IGJvdHMgc2hvdWxkICoqbm90KiogdXNlIHRoaXMgcm91dGUuXG4gICAqIEhvd2V2ZXIsIGlmIGEgYm90IGlzIHJlc3BvbmRpbmcgdG8gYSBjb21tYW5kIGFuZCBleHBlY3RzIHRoZSBjb21wdXRhdGlvbiB0byB0YWtlIGEgZmV3IHNlY29uZHMsXG4gICAqIHRoaXMgZW5kcG9pbnQgbWF5IGJlIGNhbGxlZCB0byBsZXQgdGhlIHVzZXIga25vdyB0aGF0IHRoZSBib3QgaXMgcHJvY2Vzc2luZyB0aGVpciBtZXNzYWdlLlxuICAgKlxuICAgKiBGaXJlcyBhIF9UeXBpbmcgU3RhcnRfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9jaGFubmVsI3RyaWdnZXItdHlwaW5nLWluZGljYXRvcn1cbiAgICovXG4gIHRyaWdnZXJUeXBpbmdJbmRpY2F0b3I6IChjaGFubmVsSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogUmUtcmVnaXN0ZXJzIHRoZSBsaXN0IG9mIGdsb2JhbCBhcHBsaWNhdGlvbiBjb21tYW5kcywgb3ZlcndyaXRpbmcgdGhlIHByZXZpb3VzIGNvbW1hbmRzIGNvbXBsZXRlbHkuXG4gICAqXG4gICAqIEBwYXJhbSBjb21tYW5kcyAtIFRoZSBsaXN0IG9mIGNvbW1hbmRzIHRvIHVzZSB0byBvdmVyd3JpdGUgdGhlIHByZXZpb3VzIGxpc3QuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgZW5kcG9pbnQuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZH0gb2JqZWN0cyBhc3NvcnRlZCBieSBjb21tYW5kIElELlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiDinZcgQ29tbWFuZHMgdGhhdCBhcmUgbm90IHByZXNlbnQgaW4gdGhlIGBjb21tYW5kc2AgYXJyYXkgd2lsbCBiZSBfX2RlbGV0ZWRfXy5cbiAgICpcbiAgICog4pqg77iPIENvbW1hbmRzIHRoYXQgZG8gbm90IGFscmVhZHkgZXhpc3Qgd2lsbCBjb3VudCB0b3dhcmRzIHRoZSBkYWlseSBsaW1pdCBvZiBfMjAwXyBuZXcgY29tbWFuZHMuXG4gICAqXG4gICAqIFdoZW4gdXNpbmcgdGhlIGJlYXJlciB0b2tlbiB0aGUgdG9rZW4gbmVlZHMgdGhlIGBhcHBsaWNhdGlvbnMuY29tbWFuZHMudXBkYXRlYCBzY29wZSBhbmQgbXVzdCBiZSBhIGBDbGllbnQgZ3JhbnRgIHRva2VuLlxuICAgKiAgWW91IHdpbGwgYmUgYWJsZSB0byB1cGRhdGUgb25seSB5b3VyIG93biBhcHBsaWNhdGlvbiBjb21tYW5kc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9pbnRlcmFjdGlvbnMvYXBwbGljYXRpb24tY29tbWFuZHMjYnVsay1vdmVyd3JpdGUtZ2xvYmFsLWFwcGxpY2F0aW9uLWNvbW1hbmRzfVxuICAgKi9cbiAgdXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kczogKFxuICAgIGNvbW1hbmRzOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRbXSxcbiAgICBvcHRpb25zPzogVXBzZXJ0R2xvYmFsQXBwbGljYXRpb25Db21tYW5kT3B0aW9ucyxcbiAgKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmQ+W10+XG4gIC8qKlxuICAgKiBSZS1yZWdpc3RlcnMgdGhlIGxpc3Qgb2YgYXBwbGljYXRpb24gY29tbWFuZHMgcmVnaXN0ZXJlZCBpbiBhIGd1aWxkLCBvdmVyd3JpdGluZyB0aGUgcHJldmlvdXMgY29tbWFuZHMgY29tcGxldGVseS5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdob3NlIGxpc3Qgb2YgY29tbWFuZHMgdG8gb3ZlcndyaXRlLlxuICAgKiBAcGFyYW0gY29tbWFuZHMgLSBUaGUgbGlzdCBvZiBjb21tYW5kcyB0byB1c2UgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBsaXN0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgdGhlIGVuZHBvaW50LlxuICAgKiBAcmV0dXJucyBBIGNvbGxlY3Rpb24gb2Yge0BsaW5rIERpc2NvcmRBcHBsaWNhdGlvbkNvbW1hbmR9IG9iamVjdHMgYXNzb3J0ZWQgYnkgY29tbWFuZCBJRC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICog4p2XIENvbW1hbmRzIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIHRoZSBgY29tbWFuZHNgIGFycmF5IHdpbGwgYmUgX19kZWxldGVkX18uXG4gICAqXG4gICAqIOKaoO+4jyBDb21tYW5kcyB0aGF0IGRvIG5vdCBhbHJlYWR5IGV4aXN0IHdpbGwgY291bnQgdG93YXJkcyB0aGUgZGFpbHkgbGltaXQgb2YgXzIwMF8gbmV3IGNvbW1hbmRzLlxuICAgKlxuICAgKiBXaGVuIHVzaW5nIHRoZSBiZWFyZXIgdG9rZW4gdGhlIHRva2VuIG5lZWRzIHRoZSBgYXBwbGljYXRpb25zLmNvbW1hbmRzLnVwZGF0ZWAgc2NvcGUgYW5kIG11c3QgYmUgYSBgQ2xpZW50IGdyYW50YCB0b2tlbi5cbiAgICogIFlvdSB3aWxsIGJlIGFibGUgdG8gdXBkYXRlIG9ubHkgeW91ciBvd24gYXBwbGljYXRpb24gY29tbWFuZHNcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvaW50ZXJhY3Rpb25zL2FwcGxpY2F0aW9uLWNvbW1hbmRzI2J1bGstb3ZlcndyaXRlLWd1aWxkLWFwcGxpY2F0aW9uLWNvbW1hbmRzfVxuICAgKi9cbiAgdXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRzOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIGNvbW1hbmRzOiBDcmVhdGVBcHBsaWNhdGlvbkNvbW1hbmRbXSxcbiAgICBvcHRpb25zPzogVXBzZXJ0R3VpbGRBcHBsaWNhdGlvbkNvbW1hbmRPcHRpb25zLFxuICApID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFwcGxpY2F0aW9uQ29tbWFuZD5bXT5cbiAgLyoqXG4gICAqIEJhbnMgYSB1c2VyIGZyb20gYSBndWlsZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGJhbiB0aGUgdXNlciBmcm9tLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGJhbiBmcm9tIHRoZSBndWlsZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBiYW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBCQU5fTUVNQkVSU2AgcGVybWlzc2lvbi5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgQmFuIEFkZF8gZ2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2NyZWF0ZS1ndWlsZC1iYW59XG4gICAqL1xuICBiYW5NZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogQ3JlYXRlR3VpbGRCYW4sIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogQmFucyB1cCB0byAyMDAgdXNlcnMgZnJvbSBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gYmFuIHRoZSB1c2VycyBmcm9tLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB1c2VycyB0byBiYW4gYW5kIHRoZSBvdGhlciBvcHRpb25zIGZvciB0aGUgYmFuLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQkFOX01FTUJFUlNgIGFuZCBgTUFOQUdFX0dVSUxEYCBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogSWYgYWxsIHByb3ZpZGVkIHVzZXJzIGZhaWwgdG8gYmUgYmFubmVkLCBkaXNjb3JkIHdpbGwgcmVzcG9uZCB3aXRoIGFuIGVycm9yIChjb2RlOiBgNTAwMDAwOiBGYWlsZWQgdG8gYmFuIHVzZXJzYClcbiAgICpcbiAgICogRmlyZXMgYXMgbWFueSBfR3VpbGQgQmFuIEFkZF8gZ2F0ZXdheSBldmVudHMgYXMgbWFueSB1c2VyIHdoZXJlIGJhbm5lZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2J1bGstZ3VpbGQtYmFufVxuICAgKi9cbiAgYnVsa0Jhbk1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkQnVsa0JhbiwgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRCdWxrQmFuPj5cbiAgLyoqXG4gICAqIEVkaXRzIHRoZSBuaWNrbmFtZSBvZiB0aGUgYm90IHVzZXIuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBlZGl0IHRoZSBuaWNrbmFtZSBvZiB0aGUgYm90IHVzZXIgaW4uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlZGl0IG9mIHRoZSBuaWNrbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUgZWRpdGVkIHtAbGluayBEaXNjb3JkTWVtYmVyfVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXIgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjbW9kaWZ5LWN1cnJlbnQtbWVtYmVyfVxuICAgKi9cbiAgZWRpdEJvdE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgb3B0aW9uczogRWRpdEJvdE1lbWJlck9wdGlvbnMsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyPj5cbiAgLyoqXG4gICAqIEVkaXRzIGEgbWVtYmVyJ3MgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGVkaXQgdGhlIG1lbWJlciBvZi5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSB1c2VyIElEIG9mIHRoZSBtZW1iZXIgdG8gZWRpdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWRpdCBvZiB0aGUgdXNlci5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyBlbmRwb2ludCByZXF1aXJlcyB2YXJpb3VzIHBlcm1pc3Npb25zIGRlcGVuZGluZyBvbiB3aGF0IGlzIGVkaXRlZCBhYm91dCB0aGUgbWVtYmVyLlxuICAgKiBUbyBmaW5kIG91dCB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbiB0byBlbmFjdCBhIGNoYW5nZSwgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIGVuZHBvaW50J3Mge0BsaW5rIE1vZGlmeUd1aWxkTWVtYmVyIHwgcGFyYW1ldGVyc30uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIE1lbWJlciBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNtb2RpZnktZ3VpbGQtbWVtYmVyfVxuICAgKi9cbiAgZWRpdE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IE1vZGlmeUd1aWxkTWVtYmVyLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZE1lbWJlcj4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBtZW1iZXIgb2JqZWN0IGJ5IHVzZXIgSUQuXG4gICAqXG4gIFxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBtZW1iZXIgb2JqZWN0IGZvci5cbiAgICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBnZXQgdGhlIG1lbWJlciBvYmplY3QgZm9yLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB7QGxpbmsgRGlzY29yZE1lbWJlcldpdGhVc2VyfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2dldC1ndWlsZC1tZW1iZXJ9XG4gICAqL1xuICBnZXRNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZW1iZXJXaXRoVXNlcj4+XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IG1lbWJlciBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXJcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbWVtYmVyIG9iamVjdCBmb3IuXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBEaXNjb3JkTWVtYmVyV2l0aFVzZXJ9LlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGUgYWNjZXNzIHRva2VucyBuZWVkcyB0aGUgYGd1aWxkcy5tZW1iZXJzLnJlYWRgIHNjb3BlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy91c2VyI2dldC1jdXJyZW50LXVzZXItZ3VpbGQtbWVtYmVyfVxuICAgKi9cbiAgZ2V0Q3VycmVudE1lbWJlcjogKGd1aWxkSWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyV2l0aFVzZXI+PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBtZW1iZXJzIGZvciBhIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaXN0IG9mIG1lbWJlcnMgZm9yLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIG1lbWJlcnMuXG4gICAqIEByZXR1cm5zIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgRGlzY29yZE1lbWJlcldpdGhVc2VyfSBvYmplY3RzIGFzc29ydGVkIGJ5IHVzZXIgSUQuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgR1VJTERfTUVNQkVSU2AgaW50ZW50LlxuICAgKlxuICAgKiDimqDvuI8gSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzIGVuZHBvaW50IHdpdGggdmVyeSBsYXJnZSBib3RzLiBJbnN0ZWFkLCBvcHQgdG8gdXNlIGBmZXRjaE1lbWJlcnMoKWA6XG4gICAqIFJFU1QgY29tbXVuaWNhdGlvbiBvbmx5IHBlcm1pdHMgNTAgcmVxdWVzdHMgdG8gYmUgbWFkZSBwZXIgc2Vjb25kLCB3aGlsZSBnYXRld2F5cyBhbGxvdyBmb3IgdXAgdG8gMTIwIHJlcXVlc3RzXG4gICAqIHBlciBtaW51dGUgcGVyIHNoYXJkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL3JhdGUtbGltaXRzI3JhdGUtbGltaXRzfS5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2xpc3QtZ3VpbGQtbWVtYmVyc31cbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXkjcmVxdWVzdC1ndWlsZC1tZW1iZXJzfVxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvcmF0ZS1saW1pdHMjcmF0ZS1saW1pdHN9XG4gICAqL1xuICBnZXRNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBMaXN0R3VpbGRNZW1iZXJzKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZW1iZXJXaXRoVXNlcj5bXT5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzZXJpYWxpemVkIGFjdGl2aXR5IGluc3RhbmNlLCBpZiBpdCBleGlzdHMuIFVzZWZ1bCBmb3IgcHJldmVudGluZyB1bndhbnRlZCBhY3Rpdml0eSBzZXNzaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgSUQgb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAqIEBwYXJhbSBpbnN0YW5jZUlkIC0gVGhlIElEIG9mIHRoZSBhY3Rpdml0eSBpbnN0YW5jZVxuICAgKi9cbiAgZ2V0QXBwbGljYXRpb25BY3Rpdml0eUluc3RhbmNlOiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBpbnN0YW5jZUlkOiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEFjdGl2aXR5SW5zdGFuY2U+PlxuICAvKipcbiAgICogS2lja3MgYSBtZW1iZXIgZnJvbSBhIGd1aWxkLlxuICAgKlxuICBcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGtpY2sgdGhlIG1lbWJlciBmcm9tLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIHVzZXIgSUQgb2YgdGhlIG1lbWJlciB0byBraWNrIGZyb20gdGhlIGd1aWxkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgS0lDS19NRU1CRVJTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9HdWlsZCBNZW1iZXIgUmVtb3ZlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy9yZXNvdXJjZXMvZ3VpbGQjcmVtb3ZlLWd1aWxkLW1lbWJlcn1cbiAgICovXG4gIGtpY2tNZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFBpbnMgYSBtZXNzYWdlIGluIGEgY2hhbm5lbC5cbiAgICpcbiAgICogQHBhcmFtIGNoYW5uZWxJZCAtIFRoZSBJRCBvZiB0aGUgY2hhbm5lbCB3aGVyZSB0aGUgbWVzc2FnZSBpcyB0byBiZSBwaW5uZWQuXG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgLSBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gcGluLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUElOX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIFBpbnMgVXBkYXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL21lc3NhZ2UjcGluLW1lc3NhZ2V9XG4gICAqL1xuICBwaW5NZXNzYWdlOiAoY2hhbm5lbElkOiBCaWdTdHJpbmcsIG1lc3NhZ2VJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEluaXRpYXRlcyB0aGUgcHJvY2VzcyBvZiBwcnVuaW5nIGluYWN0aXZlIG1lbWJlcnMuXG4gICAqXG4gIFxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gcHJ1bmUgdGhlIG1lbWJlcnMgb2YuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBwcnVuaW5nIG9mIG1lbWJlcnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXSAtIEFuIG9wdGlvbmFsIHJlYXNvbiBmb3IgdGhlIGFjdGlvbiwgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGF1ZGl0IGxvZy5cbiAgICogQHJldHVybnMgQSBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSBtZW1iZXJzIHdlcmUgcHJ1bmVkLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgYW5kIGBLSUNLX01FTUJFUlNgIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiDinZcgUmVxdWVzdHMgdG8gdGhpcyBlbmRwb2ludCB3aWxsIHRpbWUgb3V0IGZvciBsYXJnZSBndWlsZHMuIFRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZywgc2V0IHRoZSB7QGxpbmsgQmVnaW5HdWlsZFBydW5lLmNvbXB1dGVQcnVuZUNvdW50fSBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9ucyBvYmplY3QgcGFyYW1ldGVyIHRvIGBmYWxzZWAuIFRoaXMgd2lsbCBiZWdpbiB0aGUgcHJvY2VzcyBvZiBwcnVuaW5nLCBhbmQgaW1tZWRpYXRlbHkgcmV0dXJuIGB1bmRlZmluZWRgLCByYXRoZXIgdGhhbiB3YWl0IGZvciB0aGUgcHJvY2VzcyB0byBjb21wbGV0ZSBiZWZvcmUgcmV0dXJuaW5nIHRoZSBhY3R1YWwgY291bnQgb2YgbWVtYmVycyB0aGF0IGhhdmUgYmVlbiBraWNrZWQuXG4gICAqXG4gICAqIOKaoO+4jyBCeSBkZWZhdWx0LCB0aGlzIHByb2Nlc3Mgd2lsbCBub3QgcmVtb3ZlIG1lbWJlcnMgd2l0aCBhIHJvbGUuIFRvIGluY2x1ZGUgdGhlIG1lbWJlcnMgd2hvIGhhdmUgYSBfcGFydGljdWxhciBzdWJzZXQgb2Ygcm9sZXNfLCBzcGVjaWZ5IHRoZSByb2xlKHMpIGluIHRoZSB7QGxpbmsgQmVnaW5HdWlsZFBydW5lLmluY2x1ZGVSb2xlcyB8IGluY2x1ZGVSb2xlc30gcHJvcGVydHkgb2YgdGhlIG9wdGlvbnMgb2JqZWN0IHBhcmFtZXRlci5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgTWVtYmVyIFJlbW92ZV8gZ2F0ZXdheSBldmVudCBmb3IgZXZlcnkgbWVtYmVyIGtpY2tlZC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL2d1aWxkI2JlZ2luLWd1aWxkLXBydW5lfVxuICAgKi9cbiAgcHJ1bmVNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBCZWdpbkd1aWxkUHJ1bmUsIHJlYXNvbj86IHN0cmluZykgPT4gUHJvbWlzZTx7IHBydW5lZDogbnVtYmVyIHwgbnVsbCB9PlxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBtZW1iZXJzIHdob3NlIHVzZXJuYW1lcyBvciBuaWNrbmFtZXMgc3RhcnQgd2l0aCBhIHByb3ZpZGVkIHN0cmluZy5cbiAgICpcbiAgXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBzZWFyY2ggaW4uXG4gICAqIEBwYXJhbSBxdWVyeSAtIFRoZSBzdHJpbmcgdG8gbWF0Y2ggdXNlcm5hbWVzIG9yIG5pY2tuYW1lcyBhZ2FpbnN0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBzZWFyY2hpbmcgdGhyb3VnaCB0aGUgbWVtYmVycy5cbiAgICogQHJldHVybnMgQSBjb2xsZWN0aW9uIG9mIHtAbGluayBEaXNjb3JkTWVtYmVyfSBvYmplY3RzIGFzc29ydGVkIGJ5IHVzZXIgSUQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNzZWFyY2gtZ3VpbGQtbWVtYmVyc31cbiAgICovXG4gIHNlYXJjaE1lbWJlcnM6IChndWlsZElkOiBCaWdTdHJpbmcsIHF1ZXJ5OiBzdHJpbmcsIG9wdGlvbnM/OiBPbWl0PFNlYXJjaE1lbWJlcnMsICdxdWVyeSc+KSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZW1iZXJXaXRoVXNlcj5bXT5cbiAgLyoqXG4gICAqIFVuYmFucyBhIHVzZXIgZnJvbSBhIGd1aWxkLlxuICAgKlxuICBcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIHVuYmFuIHRoZSB1c2VyIGluLlxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIHVuYmFuLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgQkFOX01FTUJFUlNgIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEZpcmVzIGEgX0d1aWxkIEJhbiBSZW1vdmVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3Jlc291cmNlcy9ndWlsZCNyZW1vdmUtZ3VpbGQtYmFufVxuICAgKi9cbiAgdW5iYW5NZW1iZXI6IChndWlsZElkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFVucGluIGEgbWVzc2FnZSBpbiBhIGNoYW5uZWwuXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgd2hlcmUgdGhlIG1lc3NhZ2UgaXMgcGlubmVkLlxuICAgKiBAcGFyYW0gbWVzc2FnZUlkIC0gVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIHVucGluLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl0gLSBBbiBvcHRpb25hbCByZWFzb24gZm9yIHRoZSBhY3Rpb24sIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhdWRpdCBsb2cuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFJlcXVpcmVzIHRoZSBgUElOX01FU1NBR0VTYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9DaGFubmVsIFBpbnMgVXBkYXRlXyBldmVudC5cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvcmVzb3VyY2VzL21lc3NhZ2UjdW5waW4tbWVzc2FnZX1cbiAgICovXG4gIHVucGluTWVzc2FnZTogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBtZXNzYWdlSWQ6IEJpZ1N0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBHZXQgdGhlIGd1aWxkIG9uYm9hcmRpbmdcbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgZ3VpbGQgdG8gZ2V0IHRoZSBvbmJvYXJkaW5nIGZyb21cbiAgICovXG4gIGdldEd1aWxkT25ib2FyZGluZzogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkR3VpbGRPbmJvYXJkaW5nPj5cbiAgLyoqXG4gICAqIE1vZGlmaWVzIHRoZSBvbmJvYXJkaW5nIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGd1aWxkLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBndWlsZCB0byBlZGl0IHRoZSBvbmJvYXJkaW5nIGZyb21cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWFzb25dIC0gQW4gb3B0aW9uYWwgcmVhc29uIGZvciB0aGUgYWN0aW9uLCB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYXVkaXQgbG9nLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgYW5kIGBNQU5BR0VfUk9MRVNgIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBPbmJvYXJkaW5nIGVuZm9yY2VzIGNvbnN0cmFpbnRzIHdoZW4gZW5hYmxlZC4gVGhlc2UgY29uc3RyYWludHMgYXJlOlxuICAgKiAgLSBhdCBsZWFzdCA3IGRlZmF1bHQgY2hhbm5lbHNcbiAgICogIC0gYXQgbGVhc3QgNSBvZiB0aGUgNyBjaGFubmVscyBtdXN0IGFsbG93IHNlbmRpbmcgbWVzc2FnZXMgdG8gdGhlIFxcQGV2ZXJ5b25lIHJvbGVcbiAgICpcbiAgICogVGhlIGBtb2RlYCBmaWVsZCBtb2RpZmllcyB3aGF0IGlzIGNvbnNpZGVyZWQgd2hlbiBlbmZvcmNpbmcgdGhlc2UgY29uc3RyYWludHMuXG4gICAqL1xuICBlZGl0R3VpbGRPbmJvYXJkaW5nOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBFZGl0R3VpbGRPbmJvYXJkaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEd1aWxkT25ib2FyZGluZz4+XG4gIC8qKlxuICAgKiBNb2RpZmllcyB0aGUgaW5jaWRlbnQgYWN0aW9ucyBvZiB0aGUgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIGd1aWxkIHRvIGVkaXQgdGhlIGluY2lkZW50IGFjdGlvbnMgZnJvbVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgaW5jaWRlbnQgYWN0aW9uc1xuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBSZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRGAgcGVybWlzc2lvbi5cbiAgICovXG4gIG1vZGlmeUd1aWxkSW5jaWRlbnRBY3Rpb25zOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlHdWlsZEluY2lkZW50QWN0aW9ucykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkSW5jaWRlbnRzRGF0YT4+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBlbnRpdGxlbWVudHMgZm9yIGEgZ2l2ZW4gYXBwLCBhY3RpdmUgYW5kIGV4cGlyZWQuXG4gICAqXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIGlkIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGVudGl0bGVtZW50c1xuICAgKiBAcGFyYW0ge0dldEVudGl0bGVtZW50c30gW29wdGlvbnNdIC0gVGhlIG9wdGlvbmFsIHF1ZXJ5IHBhcmFtcyBmb3IgdGhlIGVuZHBvaW50XG4gICAqL1xuICBsaXN0RW50aXRsZW1lbnRzOiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0RW50aXRsZW1lbnRzKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRFbnRpdGxlbWVudD5bXT5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gZW50aXRsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIGlkIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGVudGl0bGVtZW50XG4gICAqIEBwYXJhbSBlbnRpdGxlbWVudElkIC0gVGhlIGlkIG9mIHRoZSBlbnRpdGxlbWVudCB0byBnZXRcbiAgICovXG4gIGdldEVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBlbnRpdGxlbWVudElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZEVudGl0bGVtZW50Pj5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0ZXN0IGVudGl0bGVtZW50IHRvIGEgZ2l2ZW4gU0tVIGZvciBhIGdpdmVuIGd1aWxkIG9yIHVzZXIuIERpc2NvcmQgd2lsbCBhY3QgYXMgdGhvdWdoIHRoYXQgdXNlciBvciBndWlsZCBoYXMgZW50aXRsZW1lbnQgdG8geW91ciBwcmVtaXVtIG9mZmVyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gdG8gY3JlYXRlIHRoZSBlbnRpdGxlbWVudFxuICAgKiBAcGFyYW0gYm9keSAtIFRoZSBvcHRpb25zIGZvciBuZXcgZW50aXRsZW1lbnRcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhpcyBlbmRwb2ludCByZXR1cm5zIGEgcGFydGlhbCBlbnRpdGxlbWVudCBvYmplY3QuXG4gICAqIEl0IHdpbGwgbm90IGNvbnRhaW4gc3Vic2NyaXB0aW9uX2lkLCBzdGFydHNfYXQsIG9yIGVuZHNfYXQsIGFzIGl0J3MgdmFsaWQgaW4gcGVycGV0dWl0eS5cbiAgICovXG4gIGNyZWF0ZVRlc3RFbnRpdGxlbWVudDogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgYm9keTogQ3JlYXRlVGVzdEVudGl0bGVtZW50KSA9PiBQcm9taXNlPFBhcnRpYWw8Q2FtZWxpemU8RGlzY29yZEVudGl0bGVtZW50Pj4+XG4gIC8qKlxuICAgKiBEZWxldGVzIGEgY3VycmVudGx5LWFjdGl2ZSB0ZXN0IGVudGl0bGVtZW50LiBEaXNjb3JkIHdpbGwgYWN0IGFzIHRob3VnaCB0aGF0IHVzZXIgb3IgZ3VpbGQgbm8gbG9uZ2VyIGhhcyBlbnRpdGxlbWVudCB0byB5b3VyIHByZW1pdW0gb2ZmZXJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIGlkIG9mIHRoZSBhcHBsaWNhdGlvbiBmcm9tIHdoZXJlIGRlbGV0ZSB0aGUgZW50aXRsZW1lbnRcbiAgICogQHBhcmFtIGVudGl0bGVtZW50SWQgLSBUaGUgaWQgb2YgdGhlIGVudGl0bGVtZW50IHRvIGRlbGV0ZVxuICAgKi9cbiAgZGVsZXRlVGVzdEVudGl0bGVtZW50OiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBlbnRpdGxlbWVudElkOiBCaWdTdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEZvciBPbmUtVGltZSBQdXJjaGFzZSBjb25zdW1hYmxlIFNLVXMsIG1hcmtzIGEgZ2l2ZW4gZW50aXRsZW1lbnQgZm9yIHRoZSB1c2VyIGFzIGNvbnN1bWVkLiBUaGUgZW50aXRsZW1lbnQgd2lsbCBoYXZlIGBjb25zdW1lZDogdHJ1ZWAgd2hlbiB1c2luZyB7QGxpbmsgbGlzdEVudGl0bGVtZW50cyB8IExpc3QgRW50aXRsZW1lbnRzfVxuICAgKlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBlbnRpdGxlbWVudFxuICAgKiBAcGFyYW0gZW50aXRsZW1lbnRJZCAtIFRoZSBpZCBvZiB0aGUgZW50aXRsZW1lbnQgdG8gZ2V0XG4gICAqL1xuICBjb25zdW1lRW50aXRsZW1lbnQ6IChhcHBsaWNhdGlvbklkOiBCaWdTdHJpbmcsIGVudGl0bGVtZW50SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogUmV0dXJucyBhbGwgU0tVcyBmb3IgYSBnaXZlbiBhcHBsaWNhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBpZCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBTS1VzXG4gICAqL1xuICBsaXN0U2t1czogKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU2t1PltdPlxuICAvKipcbiAgICogUmV0dXJucyBhbGwgc3Vic2NyaXB0aW9ucyBjb250YWluaW5nIHRoZSBTS1UsIGZpbHRlcmVkIGJ5IHVzZXIuXG4gICAqXG4gICAqIEBwYXJhbSBza3VJZCAtIFRoZSBpZCBvZiB0aGUgc2t1IG9mIGdldCB0aGUgc3Vic2NyaXB0aW9ucyBmb3JcbiAgICovXG4gIGxpc3RTdWJzY3JpcHRpb25zOiAoc2t1SWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IExpc3RTa3VTdWJzY3JpcHRpb25zT3B0aW9ucykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU3Vic2NyaXB0aW9uW10+PlxuICAvKipcbiAgICogR2V0IGEgc3Vic2NyaXB0aW9uIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQHBhcmFtIHNrdUlkIC0gVGhlIGlkIG9mIHRoZSBza3Ugb2YgZ2V0IHRoZSBzdWJzY3JpcHRpb25zIGZvclxuICAgKi9cbiAgZ2V0U3Vic2NyaXB0aW9uOiAoc2t1SWQ6IEJpZ1N0cmluZywgc3Vic2NyaXB0aW9uSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU3Vic2NyaXB0aW9uPj5cbiAgLyoqXG4gICAqIFNlbmQgYSBzb3VuZGJvYXJkIHNvdW5kIHRvIGEgdm9pY2UgY2hhbm5lbCB0aGUgdXNlciBpcyBjb25uZWN0ZWQgdG8uXG4gICAqXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgaWQgb2YgdGhlIHZvaWNlIGNoYW5uZWxcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfVm9pY2UgQ2hhbm5lbCBFZmZlY3QgU2VuZF8gR2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogUmVxdWlyZXMgdGhlIGBTUEVBS2AgYW5kIGBVU0VfU09VTkRCT0FSRGAgcGVybWlzc2lvbnMsIGFuZCBhbHNvIHRoZSBgVVNFX0VYVEVSTkFMX1NPVU5EU2AgcGVybWlzc2lvbiBpZiB0aGUgc291bmQgaXMgZnJvbSBhIGRpZmZlcmVudCBzZXJ2ZXIuXG4gICAqIEFkZGl0aW9uYWxseSwgcmVxdWlyZXMgdGhlIHVzZXIgdG8gYmUgY29ubmVjdGVkIHRvIHRoZSB2b2ljZSBjaGFubmVsLCBoYXZpbmcgYSB2b2ljZSBzdGF0ZSB3aXRob3V0IGBkZWFmYCwgYHNlbGZfZGVhZmAsIGBtdXRlYCwgb3IgYHN1cHByZXNzYCBlbmFibGVkLlxuICAgKi9cbiAgc2VuZFNvdW5kYm9hcmRTb3VuZDogKGNoYW5uZWxJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBTZW5kU291bmRib2FyZFNvdW5kKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBSZXR1cm5zIGFuIGFycmF5IG9mIHNvdW5kYm9hcmQgc291bmQgb2JqZWN0cyB0aGF0IGNhbiBiZSB1c2VkIGJ5IGFsbCB1c2Vycy4gKi9cbiAgbGlzdERlZmF1bHRTb3VuZGJvYXJkU291bmRzOiAoKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRTb3VuZGJvYXJkU291bmQ+W10+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUgZ3VpbGQncyBzb3VuZGJvYXJkIHNvdW5kcy5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgZ3VpbGQgdG8gZ2V0IHRoZSBzb3VuZHMgZnJvbVxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJbmNsdWRlcyBgdXNlcmAgZmllbGRzIGlmIHRoZSBib3QgaGFzIHRoZSBgQ1JFQVRFX0dVSUxEX0VYUFJFU1NJT05TYCBvciBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKi9cbiAgbGlzdEd1aWxkU291bmRib2FyZFNvdW5kczogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx7IGl0ZW1zOiBDYW1lbGl6ZTxEaXNjb3JkU291bmRib2FyZFNvdW5kPltdIH0+XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc291bmRib2FyZCBzb3VuZCBvYmplY3QgZm9yIHRoZSBnaXZlbiBzb3VuZCBpZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgZ3VpbGQgdG8gZ2V0IHRoZSBzb3VuZHMgZnJvbVxuICAgKiBAcGFyYW0gc291bmRJZCAtIFRoZSBzb3VuZCBpZFxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBJbmNsdWRlcyBgdXNlcmAgZmllbGRzIGlmIHRoZSBib3QgaGFzIHRoZSBgQ1JFQVRFX0dVSUxEX0VYUFJFU1NJT05TYCBvciBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKi9cbiAgZ2V0R3VpbGRTb3VuZGJvYXJkU291bmQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHNvdW5kSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU291bmRib2FyZFNvdW5kPj5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBzb3VuZGJvYXJkIHNvdW5kIGZvciB0aGUgZ3VpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIGd1aWxkIHRvIGNyZWF0ZSB0aGUgc291bmRzIGluXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gY3JlYXRlIHRoZSBzb3VuZFxuICAgKiBAcGFyYW0gcmVhc29uIC0gVGhlIGF1ZGl0IGxvZyByZWFzb25cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfR3VpbGQgU291bmRib2FyZCBTb3VuZCBDcmVhdGVfIEdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIFJlcXVpcmVzIHRoZSBgQ1JFQVRFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKi9cbiAgY3JlYXRlR3VpbGRTb3VuZGJvYXJkU291bmQ6IChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IENyZWF0ZUd1aWxkU291bmRib2FyZFNvdW5kLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZFNvdW5kYm9hcmRTb3VuZD4+XG4gIC8qKlxuICAgKiBNb2RpZnkgdGhlIGdpdmVuIHNvdW5kYm9hcmQgc291bmQuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIGd1aWxkIHRvIGNyZWF0ZSB0aGUgc291bmRzIGluXG4gICAqIEBwYXJhbSBzb3VuZElkIC0gVGhlIHNvdW5kIGlkIHRvIHVwZGF0ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIHVwZGF0ZSB0aGUgc291bmRcbiAgICogQHBhcmFtIHJlYXNvbiAtIFRoZSBhdWRpdCBsb2cgcmVhc29uXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIEZpcmVzIGEgX0d1aWxkIFNvdW5kYm9hcmQgU291bmQgVXBkYXRlXyBHYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBGb3Igc291bmRzIGNyZWF0ZWQgYnkgdGhlIGN1cnJlbnQgdXNlciwgcmVxdWlyZXMgZWl0aGVyIHRoZSBgQ1JFQVRFX0dVSUxEX0VYUFJFU1NJT05TYCBvciBgTUFOQUdFX0dVSUxEX0VYUFJFU1NJT05TYCBwZXJtaXNzaW9uLlxuICAgKiBGb3Igb3RoZXIgc291bmRzLCByZXF1aXJlcyB0aGUgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICovXG4gIG1vZGlmeUd1aWxkU291bmRib2FyZFNvdW5kOiAoXG4gICAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICAgIHNvdW5kSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zOiBNb2RpZnlHdWlsZFNvdW5kYm9hcmRTb3VuZCxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkU291bmRib2FyZFNvdW5kPj5cbiAgLyoqXG4gICAqIERlbGV0ZSB0aGUgZ2l2ZW4gc291bmRib2FyZCBzb3VuZC5cbiAgICpcbiAgICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgZ3VpbGQgdG8gY3JlYXRlIHRoZSBzb3VuZHMgaW5cbiAgICogQHBhcmFtIHNvdW5kSWQgLSBUaGUgc291bmQgaWQgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSByZWFzb24gLSBUaGUgYXVkaXQgbG9nIHJlYXNvblxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBGaXJlcyBhIF9HdWlsZCBTb3VuZGJvYXJkIFNvdW5kIERlbGV0ZV8gR2F0ZXdheSBldmVudC5cbiAgICpcbiAgICogRm9yIHNvdW5kcyBjcmVhdGVkIGJ5IHRoZSBjdXJyZW50IHVzZXIsIHJlcXVpcmVzIGVpdGhlciB0aGUgYENSRUFURV9HVUlMRF9FWFBSRVNTSU9OU2Agb3IgYE1BTkFHRV9HVUlMRF9FWFBSRVNTSU9OU2AgcGVybWlzc2lvbi5cbiAgICogRm9yIG90aGVyIHNvdW5kcywgcmVxdWlyZXMgdGhlIGBNQU5BR0VfR1VJTERfRVhQUkVTU0lPTlNgIHBlcm1pc3Npb24uXG4gICAqL1xuICBkZWxldGVHdWlsZFNvdW5kYm9hcmRTb3VuZDogKGd1aWxkSWQ6IEJpZ1N0cmluZywgc291bmRJZDogQmlnU3RyaW5nLCByZWFzb24/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIGFwcGxpY2F0aW9uIHJvbGUgY29ubmVjdGlvbiBtZXRhZGF0YSBvYmplY3RzIGZvciB0aGUgZ2l2ZW4gYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgcm9sZSBjb25uZWN0aW9ucyBmcm9tXG4gICAqIEByZXR1cm5zIEEgbGlzdCBvZiBhcHBsaWNhdGlvbiByb2xlIGNvbm5lY3Rpb24gbWV0YWRhdGEgb2JqZWN0c1xuICAgKi9cbiAgbGlzdEFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25zTWV0YWRhdGFSZWNvcmRzOiAoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uTWV0YWRhdGE+W10+XG4gIC8qKlxuICAgKiBVcGRhdGVzIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBhcHBsaWNhdGlvbiByb2xlIGNvbm5lY3Rpb24gbWV0YWRhdGEgb2JqZWN0cyBmb3IgdGhlIGdpdmVuIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIHJvbGUgY29ubmVjdGlvbnMgZnJvbVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIHVwZGF0ZSB0aGUgcm9sZSBjb25uZWN0aW9uc1xuICAgKiBAcmV0dXJucyBBIGxpc3Qgb2YgYXBwbGljYXRpb24gcm9sZSBjb25uZWN0aW9uIG1ldGFkYXRhIG9iamVjdHNcbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogQW4gYXBwbGljYXRpb24gY2FuIGhhdmUgYSBtYXhpbXVtIG9mIDUgbWV0YWRhdGEgcmVjb3Jkcy5cbiAgICovXG4gIHVwZGF0ZUFwcGxpY2F0aW9uUm9sZUNvbm5lY3Rpb25zTWV0YWRhdGFSZWNvcmRzOiAoXG4gICAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICAgIG9wdGlvbnM6IENhbWVsaXplPERpc2NvcmRBcHBsaWNhdGlvblJvbGVDb25uZWN0aW9uTWV0YWRhdGE+W10sXG4gICkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkQXBwbGljYXRpb25Sb2xlQ29ubmVjdGlvbk1ldGFkYXRhPltdPlxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBsb2JieSwgYWRkaW5nIGFueSBvZiB0aGUgc3BlY2lmaWVkIG1lbWJlcnMgdG8gaXQsIGlmIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIGNyZWF0ZSB0aGUgbG9iYnlcbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgbG9iYnlcbiAgICovXG4gIGNyZWF0ZUxvYmJ5OiAob3B0aW9uczogQ3JlYXRlTG9iYnkpID0+IFByb21pc2U8Q2FtZWxpemU8RGlzY29yZExvYmJ5Pj5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsb2JieSBvYmplY3QgZm9yIHRoZSBzcGVjaWZpZWQgbG9iYnkgaWQsIGlmIGl0IGV4aXN0cy5cbiAgICpcbiAgICogQHBhcmFtIGxvYmJ5SWQgLSBUaGUgSUQgb2YgdGhlIGxvYmJ5IHRvIGdldFxuICAgKiBAcmV0dXJucyBUaGUgbG9iYnkgb2JqZWN0XG4gICAqL1xuICBnZXRMb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTG9iYnk+PlxuICAvKipcbiAgICogTW9kaWZpZXMgdGhlIHNwZWNpZmllZCBsb2JieSB3aXRoIG5ldyB2YWx1ZXMsIGlmIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gbG9iYnlJZCAtIFRoZSBJRCBvZiB0aGUgbG9iYnkgdG8gbW9kaWZ5XG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gbW9kaWZ5IHRoZSBsb2JieVxuICAgKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgbG9iYnlcbiAgICovXG4gIG1vZGlmeUxvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBNb2RpZnlMb2JieSkgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTG9iYnk+PlxuICAvKipcbiAgICogRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGxvYmJ5IGlmIGl0IGV4aXN0cy5cbiAgICpcbiAgICogSXQgaXMgc2FmZSB0byBjYWxsIGV2ZW4gaWYgdGhlIGxvYmJ5IGlzIGFscmVhZHkgZGVsZXRlZCBhcyB3ZWxsLlxuICAgKlxuICAgKiBAcGFyYW0gbG9iYnlJZCAtIFRoZSBJRCBvZiB0aGUgbG9iYnkgdG8gZGVsZXRlXG4gICAqIEByZXR1cm5zIE5vdGhpbmdcbiAgICovXG4gIGRlbGV0ZUxvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBBZGRzIHRoZSBwcm92aWRlZCB1c2VyIHRvIHRoZSBzcGVjaWZpZWQgbG9iYnkuIElmIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgdGhlIGxvYmJ5IHdpbGwgdXBkYXRlIGZpZWxkcyBzdWNoIGFzIG1ldGFkYXRhIG9uIHRoYXQgdXNlciBpbnN0ZWFkLlxuICAgKlxuICAgKiBAcGFyYW0gbG9iYnlJZCAtIFRoZSBJRCBvZiB0aGUgbG9iYnkgdG8gYWRkIHRoZSB1c2VyIHRvXG4gICAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gYWRkIHRvIHRoZSBsb2JieVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHRvIGFkZCB0aGUgdXNlciB0byB0aGUgbG9iYnlcbiAgICogQHJldHVybnMgVGhlIGxvYmJ5IG1lbWJlciBvYmplY3RcbiAgICovXG4gIGFkZE1lbWJlclRvTG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nLCBvcHRpb25zOiBBZGRMb2JieU1lbWJlcikgPT4gUHJvbWlzZTxDYW1lbGl6ZTxEaXNjb3JkTG9iYnlNZW1iZXI+PlxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgcHJvdmlkZWQgdXNlciBmcm9tIHRoZSBzcGVjaWZpZWQgbG9iYnkuIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIGV2ZW4gaWYgdGhlIHVzZXIgaXMgbm8gbG9uZ2VyIGEgbWVtYmVyIG9mIHRoZSBsb2JieSwgYnV0IHdpbGwgZmFpbCBpZiB0aGUgbG9iYnkgZG9lcyBub3QgZXhpc3QuXG4gICAqXG4gICAqIEBwYXJhbSBsb2JieUlkIC0gVGhlIElEIG9mIHRoZSBsb2JieSB0byByZW1vdmUgdGhlIHVzZXIgZnJvbVxuICAgKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIHJlbW92ZSBmcm9tIHRoZSBsb2JieVxuICAgKiBAcmV0dXJucyBOb3RoaW5nXG4gICAqL1xuICByZW1vdmVNZW1iZXJGcm9tTG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcsIHVzZXJJZDogQmlnU3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBjdXJyZW50IHVzZXIgZnJvbSB0aGUgc3BlY2lmaWVkIGxvYmJ5LiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBldmVuIGlmIHRoZSB1c2VyIGlzIG5vIGxvbmdlciBhIG1lbWJlciBvZiB0aGUgbG9iYnksIGJ1dCB3aWxsIGZhaWwgaWYgdGhlIGxvYmJ5IGRvZXMgbm90IGV4aXN0LlxuICAgKlxuICAgKiBAcGFyYW0gbG9iYnlJZCAtIFRoZSBJRCBvZiB0aGUgbG9iYnkgdG8gcmVtb3ZlIHRoZSB1c2VyIGZyb21cbiAgICogQHBhcmFtIGJlYXJlclRva2VuIC0gVGhlIGFjY2VzcyB0b2tlbiBvZiB0aGUgdXNlclxuICAgKiBAcmV0dXJucyBOb3RoaW5nXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoaXMgcmVxdWlyZXMgYSBiZWFyZXIgdG9rZW4gZm9yIGF1dGhvcml6YXRpb25cbiAgICovXG4gIGxlYXZlTG9iYnk6IChsb2JieUlkOiBCaWdTdHJpbmcsIGJlYXJlclRva2VuOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIExpbmtzIGFuIGV4aXN0aW5nIHRleHQgY2hhbm5lbCB0byBhIGxvYmJ5LlxuICAgKlxuICAgKiBAcGFyYW0gbG9iYnlJZCAtIFRoZSBJRCBvZiB0aGUgbG9iYnkgdG8gbGluayB0aGUgY2hhbm5lbCB0b1xuICAgKiBAcGFyYW0gYmVhcmVyVG9rZW4gLSBUaGUgYWNjZXNzIHRva2VuIG9mIHRoZSB1c2VyXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gbGluayB0aGUgY2hhbm5lbCB0byB0aGUgbG9iYnlcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgbG9iYnkgb2JqZWN0XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVzZXMgYmVhcmVyIHRva2VuIGZvciBhdXRob3JpemF0aW9uIGFuZCB0aGUgdXNlciBtdXN0IGJlIGEgbG9iYnkgbWVtYmVyIHdpdGggdGhlIENhbkxpbmtMb2JieSBsb2JieSBtZW1iZXIgZmxhZy5cbiAgICovXG4gIGxpbmtDaGFubmVsVG9Mb2JieTogKGxvYmJ5SWQ6IEJpZ1N0cmluZywgYmVhcmVyVG9rZW46IHN0cmluZywgb3B0aW9uczogTGlua0NoYW5uZWxUb0xvYmJ5KSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRMb2JieT4+XG4gIC8qKlxuICAgKiBVbmxpbmtzIGFueSBjdXJyZW50bHkgbGlua2VkIGNoYW5uZWxzIGZyb20gdGhlIHNwZWNpZmllZCBsb2JieS5cbiAgICpcbiAgICogQHBhcmFtIGxvYmJ5SWQgLSBUaGUgSUQgb2YgdGhlIGxvYmJ5IHRvIHVubGluayB0aGUgY2hhbm5lbCBmcm9tXG4gICAqIEBwYXJhbSBiZWFyZXJUb2tlbiAtIFRoZSBhY2Nlc3MgdG9rZW4gb2YgdGhlIHVzZXJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgbG9iYnkgb2JqZWN0XG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFVzZXMgYmVhcmVyIHRva2VuIGZvciBhdXRob3JpemF0aW9uIGFuZCB0aGUgdXNlciBtdXN0IGJlIGEgbG9iYnkgbWVtYmVyIHdpdGggdGhlIENhbkxpbmtMb2JieSBsb2JieSBtZW1iZXIgZmxhZy5cbiAgICovXG4gIHVubGlua0NoYW5uZWxUb0xvYmJ5OiAobG9iYnlJZDogQmlnU3RyaW5nLCBiZWFyZXJUb2tlbjogc3RyaW5nKSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRMb2JieT4+XG59XG5cbmV4cG9ydCB0eXBlIFJlcXVlc3RNZXRob2RzID0gJ0dFVCcgfCAnUE9TVCcgfCAnREVMRVRFJyB8ICdQQVRDSCcgfCAnUFVUJ1xuZXhwb3J0IHR5cGUgQXBpVmVyc2lvbnMgPSA5IHwgMTBcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVSZXF1ZXN0Qm9keU9wdGlvbnMge1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBib2R5PzogYW55XG4gIHVuYXV0aG9yaXplZD86IGJvb2xlYW5cbiAgcmVhc29uPzogc3RyaW5nXG4gIGZpbGVzPzogRmlsZUNvbnRlbnRbXVxufVxuXG5leHBvcnQgdHlwZSBNYWtlUmVxdWVzdE9wdGlvbnMgPSBPbWl0PENyZWF0ZVJlcXVlc3RCb2R5T3B0aW9ucywgJ21ldGhvZCc+ICYgUGljazxTZW5kUmVxdWVzdE9wdGlvbnMsICdydW5UaHJvdWdoUXVldWUnPlxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RCb2R5IHtcbiAgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBib2R5Pzogc3RyaW5nIHwgRm9ybURhdGFcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbmRSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKiBUaGUgcm91dGUgdG8gc2VuZCB0aGUgcmVxdWVzdCB0by4gKi9cbiAgcm91dGU6IHN0cmluZ1xuICAvKiogVGhlIG1ldGhvZCB0byB1c2UgZm9yIHNlbmRpbmcgdGhlIHJlcXVlc3QuICovXG4gIG1ldGhvZDogUmVxdWVzdE1ldGhvZHNcbiAgLyoqIFRoZSBhbW91bnQgb2YgdGltZXMgdGhpcyByZXF1ZXN0IGhhcyBiZWVuIHJldHJpZWQuICovXG4gIHJldHJ5Q291bnQ6IG51bWJlclxuICAvKiogSGFuZGxlciB0byByZXRyeSBhIHJlcXVlc3Qgc2hvdWxkIGl0IGJlIHJhdGUgbGltaXRlZC4gKi9cbiAgcmV0cnlSZXF1ZXN0PzogKG9wdGlvbnM6IFNlbmRSZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPlxuICAvKiogUmVzb2x2ZSBoYW5kbGVyIHdoZW4gYSByZXF1ZXN0IHN1Y2NlZWRzLiAqL1xuICByZXNvbHZlOiAodmFsdWU6IFJlc3RSZXF1ZXN0UmVzcG9uc2UpID0+IHZvaWRcbiAgLyoqIFJlamVjdCBoYW5kbGVyIHdoZW4gYSByZXF1ZXN0IGZhaWxzLiAqL1xuICByZWplY3Q6ICh2YWx1ZTogUmVzdFJlcXVlc3RSZWplY3Rpb24pID0+IHZvaWRcbiAgLyoqIElmIHRoaXMgcmVxdWVzdCBoYXMgYSBidWNrZXQgaWQgd2hpY2ggaXQgZmFsbHMgdW5kZXIgZm9yIHJhdGUgbGltaXQgKi9cbiAgYnVja2V0SWQ/OiBzdHJpbmdcbiAgLyoqIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zLCB1c2VkIGZvciB0aGluZ3MgbGlrZSBvdmVycmlkaW5nIGF1dGhvcml6YXRpb24gaGVhZGVyLiAqL1xuICByZXF1ZXN0Qm9keU9wdGlvbnM/OiBDcmVhdGVSZXF1ZXN0Qm9keU9wdGlvbnNcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlcXVlc3Qgc2hvdWxkIGJlIHJ1biB0aHJvdWdoIHRoZSBxdWV1ZS5cbiAgICogVXNlZnVsIGZvciByb3V0ZXMgd2hpY2ggZG8gbm90IGhhdmUgYW55IHJhdGUgbGltaXRzLlxuICAgKi9cbiAgcnVuVGhyb3VnaFF1ZXVlPzogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RSYXRlTGltaXRlZFBhdGgge1xuICB1cmw6IHN0cmluZ1xuICByZXNldFRpbWVzdGFtcDogbnVtYmVyXG4gIGJ1Y2tldElkPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdFJlcXVlc3RSZXNwb25zZSB7XG4gIG9rOiBib29sZWFuXG4gIHN0YXR1czogbnVtYmVyXG4gIC8qKiBUaGUgcmV0dXJuZWQgYm9keSBwYXJzZWQgaWYgaXQgd2FzIEpTT04sIG90aGVyd2lzZSBpdCB3aWxsIGJlIHRoZSByYXcgYm9keSBhcyBhIHN0cmluZyAqL1xuICBib2R5Pzogc3RyaW5nIHwgb2JqZWN0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdFJlcXVlc3RSZWplY3Rpb24ge1xuICBvazogYm9vbGVhblxuICBzdGF0dXM6IG51bWJlclxuICAvKiogVGhlIEhUVFAgMS4xIHN0YXR1cyBjb2RlIHRleHQgKi9cbiAgc3RhdHVzVGV4dD86IHN0cmluZ1xuICAvKiogVGhlIHJldHVybmVkIGJvZHkgcGFyc2VkIGlmIGl0IHdhcyBKU09OLCBvdGhlcndpc2UgaXQgd2lsbCBiZSB0aGUgcmF3IGJvZHkgYXMgYSBzdHJpbmcgKi9cbiAgYm9keT86IHN0cmluZyB8IG9iamVjdFxuICBlcnJvcj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RNYW5hZ2VyRXZlbnRzIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhIHJlcXVlc3QgaXMgbWFkZSB0byB0aGUgQVBJLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGUgYm9keSB0aGF0IHdpbGwgYmUgc2VudCB0byB0aGUgQVBJIGlzIGF2YWlsYWJsZSBpbiB0aGUgYGV4dHJhYCBwYXJhbWV0ZXIuIERvIG5vdCBjb25zdW1lIHRoZSBib2R5IGluIHRoZSBgUmVxdWVzdGAgb2JqZWN0IGFuZCB1c2UgdGhlIG9uZSBpbiB0aGUgYGV4dHJhYCBwYXJhbWV0ZXIgaW5zdGVhZC5cbiAgICovXG4gIHJlcXVlc3Q6IChyZXF1ZXN0OiBSZXF1ZXN0LCBleHRyYTogeyBib2R5OiBhbnkgfSkgPT4gdm9pZFxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgcmVzcG9uc2UgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgQVBJLlxuICAgKlxuICAgKiBAcmVtYXJrc1xuICAgKiBUaGlzIGlzIGZpcmVkIGZvciBib3RoIHN1Y2Nlc3NmdWwgYW5kIGZhaWxlZCByZXF1ZXN0cywgeW91IHNob3VsZCBjaGVjayB0aGUgUmVzcG9uc2Ugb2JqZWN0IHRvIGRldGVybWluZSBpZiB0aGUgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bCBvciBub3QuXG4gICAqXG4gICAqIEJvdGggdGhlIHJlcXVlc3QgYW5kIHRoZSByZXNwb25zZSBib2R5IGFyZSBhdmFpbGFibGUgaW4gdGhlIGBleHRyYWAgcGFyYW1ldGVyLiBEbyBub3QgY29uc3VtZSB0aGUgYm9keSBpbiB0aGUgYFJlcXVlc3RgIG9yIGBSZXNwb25zZWAgb2JqZWN0IGFuZCB1c2UgdGhlIG9uZSBpbiB0aGUgYGV4dHJhYCBwYXJhbWV0ZXIgaW5zdGVhZC5cbiAgICovXG4gIHJlc3BvbnNlOiAocmVxdWVzdDogUmVxdWVzdCwgcmVzcG9uc2U6IFJlc3BvbnNlLCBleHRyYTogeyByZXF1ZXN0Qm9keTogYW55OyByZXNwb25zZUJvZHk6IHN0cmluZyB8IG9iamVjdCB9KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYSByZXF1ZXN0IGVycm9ycyBkdWUgdG8gZmV0Y2ggZXJyb3IuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSBib2R5IHRoYXQgd2FzIHNlbnQgdG8gdGhlIEFQSSBpcyBhdmFpbGFibGUgaW4gdGhlIGBleHRyYWAgcGFyYW1ldGVyLlxuICAgKi9cbiAgcmVxdWVzdEVycm9yOiAocmVxdWVzdDogUmVxdWVzdCwgZXJyb3I6IGFueSwgZXh0cmE6IHsgYm9keTogYW55IH0pID0+IHZvaWRcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2c0dBLFdBd0JDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@discordeno/rest",
|
|
3
|
-
"version": "22.0.1-next.
|
|
3
|
+
"version": "22.0.1-next.322331e",
|
|
4
4
|
"exports": "./dist/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"test:test-type": "tsc --project tests/tsconfig.json"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@discordeno/types": "22.0.1-next.
|
|
31
|
-
"@discordeno/utils": "22.0.1-next.
|
|
30
|
+
"@discordeno/types": "22.0.1-next.322331e",
|
|
31
|
+
"@discordeno/utils": "22.0.1-next.322331e"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@biomejs/biome": "2.
|
|
34
|
+
"@biomejs/biome": "2.2.2",
|
|
35
35
|
"@swc/cli": "^0.7.8",
|
|
36
36
|
"@swc/core": "^1.13.3",
|
|
37
37
|
"@types/chai": "^5.2.2",
|