@horietakehiro/aws-cdk-utul 0.41.82 → 0.41.84
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/lib/types/cfn-resource-types/aws-batch-quotashare.d.ts +69 -0
- package/lib/types/cfn-resource-types/aws-batch-quotashare.js +3 -0
- package/lib/types/cfn-resource-types/aws-batch-schedulingpolicy.d.ts +22 -13
- package/lib/types/cfn-resource-types/aws-batch-schedulingpolicy.js +1 -1
- package/lib/types/cfn-resource-types/aws-bedrockagentcore-gateway.d.ts +15 -0
- package/lib/types/cfn-resource-types/aws-bedrockagentcore-gateway.js +1 -1
- package/lib/types/cfn-resource-types/aws-deadline-farm.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-deadline-farm.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-instanceconnectendpoint.d.ts +80 -6
- package/lib/types/cfn-resource-types/aws-ec2-instanceconnectendpoint.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-ipamprefixlistresolvertarget.d.ts +50 -0
- package/lib/types/cfn-resource-types/aws-ec2-ipamprefixlistresolvertarget.js +3 -0
- package/lib/types/cfn-resource-types/aws-ec2-sqlhastandbydetectedinstance.d.ts +30 -0
- package/lib/types/cfn-resource-types/aws-ec2-sqlhastandbydetectedinstance.js +3 -0
- package/lib/types/cfn-resource-types/aws-glue-catalog.d.ts +166 -0
- package/lib/types/cfn-resource-types/aws-glue-catalog.js +3 -0
- package/lib/types/cfn-resource-types/aws-logs-loggroup.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-logs-loggroup.js +1 -1
- package/lib/types/cfn-resource-types/aws-logs-scheduledquery.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-logs-scheduledquery.js +1 -1
- package/lib/types/cfn-resource-types/aws-medialive-channel.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-medialive-channel.js +1 -1
- package/lib/types/cfn-resource-types/aws-opensearchserverless-collection.d.ts +11 -0
- package/lib/types/cfn-resource-types/aws-opensearchserverless-collection.js +1 -1
- package/lib/types/cfn-resource-types/aws-pcs-cluster.d.ts +63 -63
- package/lib/types/cfn-resource-types/aws-pcs-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-redshift-cluster.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-redshift-cluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-s3-bucket.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-s3-bucket.js +1 -1
- package/lib/types/cfn-resource-types/aws-uxc-accountcustomization.d.ts +25 -0
- package/lib/types/cfn-resource-types/aws-uxc-accountcustomization.js +3 -0
- package/lib/types/cfn-resource-types/aws-workspacesinstances-workspaceinstance.d.ts +0 -11
- package/lib/types/cfn-resource-types/aws-workspacesinstances-workspaceinstance.js +1 -1
- package/lib/types/cfn-resource-types.d.ts +10 -0
- package/lib/types/cfn-resource-types.js +40 -30
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXBjcy1jbHVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLXBjcy1jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgVlBDIHNlY3VyaXR5IGdyb3VwIElELlxuICovXG5leHBvcnQgdHlwZSBTZWN1cml0eUdyb3VwSWQgPSBzdHJpbmdcbi8qKlxuICogQSBWUEMgc3VibmV0IElELlxuICovXG5leHBvcnQgdHlwZSBTdWJuZXRJZCA9IHN0cmluZ1xuXG4vKipcbiAqIEFXUzo6UENTOjpDbHVzdGVyIHJlc291cmNlIGNyZWF0ZXMgYW4gQVdTIFBDUyBjbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9BV1NfUENTX0NMVVNURVIge1xuLyoqXG4gKiBUaGUgbGlzdCBvZiBlbmRwb2ludHMgYXZhaWxhYmxlIGZvciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzY2hlZHVsZXIuXG4gKi9cbkVuZHBvaW50cz86IEVuZHBvaW50W11cbi8qKlxuICogVGhlIHByb3Zpc2lvbmluZyBzdGF0dXMgb2YgdGhlIGNsdXN0ZXIuIFRoZSBwcm92aXNpb25pbmcgc3RhdHVzIGRvZXNuJ3QgaW5kaWNhdGUgdGhlIG92ZXJhbGwgaGVhbHRoIG9mIHRoZSBjbHVzdGVyLlxuICovXG5TdGF0dXM/OiAoXCJDUkVBVElOR1wiIHwgXCJBQ1RJVkVcIiB8IFwiVVBEQVRJTkdcIiB8IFwiREVMRVRJTkdcIiB8IFwiQ1JFQVRFX0ZBSUxFRFwiIHwgXCJERUxFVEVfRkFJTEVEXCIgfCBcIlVQREFURV9GQUlMRURcIilcbi8qKlxuICogVGhlIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNsdXN0ZXIncyBjb250cm9sIHBsYW5lLlxuICovXG5OZXR3b3JraW5nOiB7XG4vKipcbiAqIFRoZSBJUCBvZiB0aGUgY2x1c3RlciAoSVBWNCBvciBJUFY2KVxuICovXG5OZXR3b3JrVHlwZT86IChcIklQVjRcIiB8IFwiSVBWNlwiKVxuLyoqXG4gKiBUaGUgbGlzdCBvZiBzZWN1cml0eSBncm91cCBJRHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBFbGFzdGljIE5ldHdvcmsgSW50ZXJmYWNlIChFTkkpIGNyZWF0ZWQgaW4gc3VibmV0cy5cbiAqL1xuU2VjdXJpdHlHcm91cElkcz86IFNlY3VyaXR5R3JvdXBJZFtdXG4vKipcbiAqIFRoZSBsaXN0IG9mIHN1Ym5ldCBJRHMgd2hlcmUgQVdTIFBDUyBjcmVhdGVzIGFuIEVsYXN0aWMgTmV0d29yayBJbnRlcmZhY2UgKEVOSSkgdG8gZW5hYmxlIGNvbW11bmljYXRpb24gYmV0d2VlbiBtYW5hZ2VkIGNvbnRyb2xsZXJzIGFuZCBBV1MgUENTIHJlc291cmNlcy4gVGhlIHN1Ym5ldCBtdXN0IGhhdmUgYW4gYXZhaWxhYmxlIElQIGFkZHJlc3MsIGNhbm5vdCByZXNpZGUgaW4gQVdTIE91dHBvc3RzLCBBV1MgV2F2ZWxlbmd0aCwgb3IgYW4gQVdTIExvY2FsIFpvbmUuIEFXUyBQQ1MgY3VycmVudGx5IHN1cHBvcnRzIG9ubHkgMSBzdWJuZXQgaW4gdGhpcyBsaXN0LlxuICovXG5TdWJuZXRJZHM/OiBTdWJuZXRJZFtdXG59XG4vKipcbiAqIFRoZSBjbHVzdGVyIG1hbmFnZW1lbnQgYW5kIGpvYiBzY2hlZHVsaW5nIHNvZnR3YXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2x1c3Rlci5cbiAqL1xuU2NoZWR1bGVyOiB7XG4vKipcbiAqIFRoZSBzb2Z0d2FyZSBBV1MgUENTIHVzZXMgdG8gbWFuYWdlIGNsdXN0ZXIgc2NhbGluZyBhbmQgam9iIHNjaGVkdWxpbmcuXG4gKi9cblR5cGU6IFwiU0xVUk1cIlxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc3BlY2lmaWVkIHNjaGVkdWxpbmcgc29mdHdhcmUgdGhhdCBBV1MgUENTIHVzZXMgdG8gbWFuYWdlIGNsdXN0ZXIgc2NhbGluZyBhbmQgam9iIHNjaGVkdWxpbmcuXG4gKi9cblZlcnNpb246IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgc2l6ZSBvZiB0aGUgY2x1c3Rlci5cbiAqL1xuU2l6ZTogKFwiU01BTExcIiB8IFwiTUVESVVNXCIgfCBcIkxBUkdFXCIpXG4vKipcbiAqIFRoZSBsaXN0IG9mIGVycm9ycyB0aGF0IG9jY3VycmVkIGR1cmluZyBjbHVzdGVyIHByb3Zpc2lvbmluZy5cbiAqL1xuRXJyb3JJbmZvPzogRXJyb3JJbmZvW11cbi8qKlxuICogQWRkaXRpb25hbCBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFNsdXJtIHNjaGVkdWxlci5cbiAqL1xuU2x1cm1Db25maWd1cmF0aW9uPzoge1xuSnd0QXV0aD86IEp3dEF1dGhcbkFjY291bnRpbmc/OiBBY2NvdW50aW5nXG5BdXRoS2V5PzogQXV0aEtleVxuLyoqXG4gKiBUaGUgdGltZSBiZWZvcmUgYW4gaWRsZSBub2RlIGlzIHNjYWxlZCBkb3duLlxuICovXG5TY2FsZURvd25JZGxlVGltZUluU2Vjb25kcz86IG51bWJlclxuLyoqXG4gKiBBZGRpdGlvbmFsIFNsdXJtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdGhhdCBkaXJlY3RseSBtYXBzIHRvIFNsdXJtIHNldHRpbmdzLlxuICovXG5TbHVybUN1c3RvbVNldHRpbmdzPzogU2x1cm1DdXN0b21TZXR0aW5nW11cblNsdXJtUmVzdD86IFNsdXJtUmVzdFxufVxuLyoqXG4gKiBUaGUgZ2VuZXJhdGVkIHVuaXF1ZSBJRCBvZiB0aGUgY2x1c3Rlci5cbiAqL1xuSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIHVuaXF1ZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgY2x1c3Rlci5cbiAqL1xuQXJuPzogc3RyaW5nXG4vKipcbiAqIDEgb3IgbW9yZSB0YWdzIGFkZGVkIHRvIHRoZSByZXNvdXJjZS4gRWFjaCB0YWcgY29uc2lzdHMgb2YgYSB0YWcga2V5IGFuZCB0YWcgdmFsdWUuIFRoZSB0YWcgdmFsdWUgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSBhbiBlbXB0eSBzdHJpbmcuXG4gKi9cblRhZ3M/OiB7XG4vKipcbiAqIFRoaXMgaW50ZXJmYWNlIHdhcyByZWZlcmVuY2VkIGJ5IGB1bmRlZmluZWRgJ3MgSlNPTi1TY2hlbWEgZGVmaW5pdGlvblxuICogdmlhIHRoZSBgcGF0dGVyblByb3BlcnR5YCBcIl4uKyRcIi5cbiAqL1xuW2s6IHN0cmluZ106IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIGNsdXN0ZXIuXG4gKi9cbk5hbWU/OiBzdHJpbmdcbn1cbi8qKlxuICogQW4gZW5kcG9pbnQgYXZhaWxhYmxlIGZvciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzY2hlZHVsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5kcG9pbnQge1xuLyoqXG4gKiBUaGUgZW5kcG9pbnQncyBwdWJsaWMgSVAgYWRkcmVzcy5cbiAqL1xuUHVibGljSXBBZGRyZXNzPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB0aGUgdHlwZSBvZiBlbmRwb2ludCBydW5uaW5nIGF0IHRoZSBzcGVjaWZpYyBJUCBhZGRyZXNzLlxuICovXG5UeXBlOiAoXCJTTFVSTUNUTERcIiB8IFwiU0xVUk1EQkRcIiB8IFwiU0xVUk1SRVNURFwiKVxuLyoqXG4gKiBUaGUgZW5kcG9pbnQncyBwcml2YXRlIElQIGFkZHJlc3MuXG4gKi9cblByaXZhdGVJcEFkZHJlc3M6IHN0cmluZ1xuLyoqXG4gKiBUaGUgZW5kcG9pbnQncyBjb25uZWN0aW9uIHBvcnQgbnVtYmVyLlxuICovXG5Qb3J0OiBzdHJpbmdcbi8qKlxuICogVGhlIGVuZHBvaW50J3MgSVB2NiBhZGRyZXNzLlxuICovXG5JcHY2QWRkcmVzcz86IHN0cmluZ1xufVxuLyoqXG4gKiBBbiBlcnJvciB0aGF0IG9jY3VycmVkIGR1cmluZyByZXNvdXJjZSBwcm92aXNpb25pbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JJbmZvIHtcbi8qKlxuICogVGhlIGRldGFpbGVkIGVycm9yIGluZm9ybWF0aW9uLlxuICovXG5NZXNzYWdlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBzaG9ydC1mb3JtIGVycm9yIGNvZGUuXG4gKi9cbkNvZGU/OiBzdHJpbmdcbn1cbi8qKlxuICogSldUIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIFNsdXJtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEp3dEF1dGgge1xuSnd0S2V5PzogSnd0S2V5XG59XG4vKipcbiAqIEpXVCBrZXkgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKd3RLZXkge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEpXVCBrZXkgc2VjcmV0LlxuICovXG5TZWNyZXRBcm46IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgSldUIGtleSBzZWNyZXQuXG4gKi9cblNlY3JldFZlcnNpb246IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGluY2x1ZGVzIGNvbmZpZ3VyYWJsZSBzZXR0aW5ncyBmb3IgU2x1cm0gYWNjb3VudGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50aW5nIHtcbi8qKlxuICogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGFsbCBwdXJnZSBzZXR0aW5ncyBmb3IgYHNsdXJtZGJkLmNvbmZgLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbc2x1cm1kYmQuY29uZiBkb2N1bWVudGF0aW9uIGF0IFNjaGVkTURdKGh0dHBzOi8vc2x1cm0uc2NoZWRtZC5jb20vc2x1cm1kYmQuY29uZi5odG1sKS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYC0xYC4gQSB2YWx1ZSBvZiBgLTFgIG1lYW5zIHRoZXJlIGlzIG5vIHB1cmdlIHRpbWUgYW5kIHJlY29yZHMgcGVyc2lzdCBhcyBsb25nIGFzIHRoZSBjbHVzdGVyIGV4aXN0cy5cbiAqL1xuRGVmYXVsdFB1cmdlVGltZUluRGF5cz86IG51bWJlclxuLyoqXG4gKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgTk9ORWAuIEEgdmFsdWUgb2YgYFNUQU5EQVJEYCBtZWFucyB0aGF0IFNsdXJtIGFjY291bnRpbmcgaXMgZW5hYmxlZC5cbiAqL1xuTW9kZTogKFwiU1RBTkRBUkRcIiB8IFwiTk9ORVwiKVxuW2s6IHN0cmluZ106IHVua25vd25cbn1cbi8qKlxuICogVGhlIHNoYXJlZCBTbHVybSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uLCBhbHNvIGtub3duIGFzIHRoZSBjbHVzdGVyIHNlY3JldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoS2V5IHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSB0aGUgc2hhcmVkIFNsdXJtIGtleS5cbiAqL1xuU2VjcmV0QXJuOiBzdHJpbmdcbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNoYXJlZCBTbHVybSBrZXkuXG4gKi9cblNlY3JldFZlcnNpb246IHN0cmluZ1xufVxuLyoqXG4gKiBBZGRpdGlvbmFsIHNldHRpbmdzIHRoYXQgZGlyZWN0bHkgbWFwIHRvIFNsdXJtIHNldHRpbmdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNsdXJtQ3VzdG9tU2V0dGluZyB7XG4vKipcbiAqIFRoZSB2YWx1ZSBmb3IgdGhlIGNvbmZpZ3VyZWQgU2x1cm0gc2V0dGluZy5cbiAqL1xuUGFyYW1ldGVyVmFsdWU6IHN0cmluZ1xuLyoqXG4gKiBBV1MgUENTIHN1cHBvcnRzIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGZvbGxvd2luZyBTbHVybSBwYXJhbWV0ZXJzIGZvciBjbHVzdGVyczogUHJvbG9nLCBFcGlsb2csIGFuZCBTZWxlY3RUeXBlUGFyYW1ldGVycy5cbiAqL1xuUGFyYW1ldGVyTmFtZTogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBTbHVybVJlc3QgY29uZmlndXJhdGlvbiBpbmNsdWRlcyBjb25maWd1cmFibGUgc2V0dGluZ3MgZm9yIFNsdXJtIFJlc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2x1cm1SZXN0IHtcbi8qKlxuICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgYE5PTkVgLiBBIHZhbHVlIG9mIGBTVEFOREFSRGAgbWVhbnMgdGhhdCBTbHVybSBSZXN0IGlzIGVuYWJsZWQuXG4gKi9cbk1vZGU6IChcIlNUQU5EQVJEXCIgfCBcIk5PTkVcIilcbn1cbiJdfQ==
|
|
@@ -225,7 +225,7 @@ export interface _AWS_REDSHIFT_CLUSTER {
|
|
|
225
225
|
[k: string]: unknown;
|
|
226
226
|
} & string);
|
|
227
227
|
/**
|
|
228
|
-
* An integer indicating the duration of the maintenance window in days. If you specify a duration, you can't specify an end time. The duration must be
|
|
228
|
+
* An integer indicating the duration of the maintenance window in days. If you specify a duration, you can't specify an end time. The duration must be 60 days or less.
|
|
229
229
|
*/
|
|
230
230
|
DeferMaintenanceDuration?: number;
|
|
231
231
|
/**
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXJlZHNoaWZ0LWNsdXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtcmVkc2hpZnQtY2x1c3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBbiBleGFtcGxlIHJlc291cmNlIHNjaGVtYSBkZW1vbnN0cmF0aW5nIHNvbWUgYmFzaWMgY29uc3RydWN0cyBhbmQgdmFsaWRhdGlvbiBydWxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX1JFRFNISUZUX0NMVVNURVIge1xuLyoqXG4gKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGF0YWJhc2UgcmV2aXNpb24uIFlvdSBjYW4gcmV0cmlldmUgdGhpcyB2YWx1ZSBmcm9tIHRoZSByZXNwb25zZSB0byB0aGUgRGVzY3JpYmVDbHVzdGVyRGJSZXZpc2lvbnMgcmVxdWVzdC5cbiAqL1xuUmV2aXNpb25UYXJnZXQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIG51bWJlciBvZiBkYXlzIHRoYXQgYXV0b21hdGVkIHNuYXBzaG90cyBhcmUgcmV0YWluZWQuIElmIHRoZSB2YWx1ZSBpcyAwLCBhdXRvbWF0ZWQgc25hcHNob3RzIGFyZSBkaXNhYmxlZC4gRGVmYXVsdCB2YWx1ZSBpcyAxXG4gKi9cbkF1dG9tYXRlZFNuYXBzaG90UmV0ZW50aW9uUGVyaW9kPzogbnVtYmVyXG4vKipcbiAqIElmIHRydWUsIHRoZSBkYXRhIGluIHRoZSBjbHVzdGVyIGlzIGVuY3J5cHRlZCBhdCByZXN0LlxuICovXG5FbmNyeXB0ZWQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0aGUgY2x1c3RlciBhY2NlcHRzIGluY29taW5nIGNvbm5lY3Rpb25zLiBUaGUgY2x1c3RlciBpcyBhY2Nlc3NpYmxlIG9ubHkgdmlhIHRoZSBKREJDIGFuZCBPREJDIGNvbm5lY3Rpb24gc3RyaW5nc1xuICovXG5Qb3J0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgY29tcHV0ZSBub2RlcyBpbiB0aGUgY2x1c3Rlci4gVGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgd2hlbiB0aGUgQ2x1c3RlclR5cGUgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyBtdWx0aS1ub2RlLlxuICovXG5OdW1iZXJPZk5vZGVzPzogbnVtYmVyXG4vKipcbiAqIFRoZSBkZXN0aW5hdGlvbiBBV1MgUmVnaW9uIHRoYXQgeW91IHdhbnQgdG8gY29weSBzbmFwc2hvdHMgdG8uIENvbnN0cmFpbnRzOiBNdXN0IGJlIHRoZSBuYW1lIG9mIGEgdmFsaWQgQVdTIFJlZ2lvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBSZWdpb25zIGFuZCBFbmRwb2ludHMgaW4gdGhlIEFtYXpvbiBXZWIgU2VydmljZXMgW2h0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nZW5lcmFsL2xhdGVzdC9nci9yYW5kZS5odG1sI3JlZHNoaWZ0X3JlZ2lvbl0gR2VuZXJhbCBSZWZlcmVuY2VcbiAqL1xuRGVzdGluYXRpb25SZWdpb24/OiBzdHJpbmdcbi8qKlxuICogTWFqb3IgdmVyc2lvbiB1cGdyYWRlcyBjYW4gYmUgYXBwbGllZCBkdXJpbmcgdGhlIG1haW50ZW5hbmNlIHdpbmRvdyB0byB0aGUgQW1hem9uIFJlZHNoaWZ0IGVuZ2luZSB0aGF0IGlzIHJ1bm5pbmcgb24gdGhlIGNsdXN0ZXIuIERlZmF1bHQgdmFsdWUgaXMgVHJ1ZVxuICovXG5BbGxvd1ZlcnNpb25VcGdyYWRlPzogYm9vbGVhblxuRW5kcG9pbnQ/OiBFbmRwb2ludFxuLyoqXG4gKiBUaGUgbmFtZXNwYWNlIHJlc291cmNlIHBvbGljeSBkb2N1bWVudCB0aGF0IHdpbGwgYmUgYXR0YWNoZWQgdG8gYSBSZWRzaGlmdCBjbHVzdGVyLlxuICovXG5OYW1lc3BhY2VSZXNvdXJjZVBvbGljeT86IHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59XG4vKipcbiAqIFRoZSBuYW1lIGZvciB0aGUgbWFpbnRlbmFuY2UgdHJhY2sgdGhhdCB5b3Ugd2FudCB0byBhc3NpZ24gZm9yIHRoZSBjbHVzdGVyLiBUaGlzIG5hbWUgY2hhbmdlIGlzIGFzeW5jaHJvbm91cy4gVGhlIG5ldyB0cmFjayBuYW1lIHN0YXlzIGluIHRoZSBQZW5kaW5nTW9kaWZpZWRWYWx1ZXMgZm9yIHRoZSBjbHVzdGVyIHVudGlsIHRoZSBuZXh0IG1haW50ZW5hbmNlIHdpbmRvdy4gV2hlbiB0aGUgbWFpbnRlbmFuY2UgdHJhY2sgY2hhbmdlcywgdGhlIGNsdXN0ZXIgaXMgc3dpdGNoZWQgdG8gdGhlIGxhdGVzdCBjbHVzdGVyIHJlbGVhc2UgYXZhaWxhYmxlIGZvciB0aGUgbWFpbnRlbmFuY2UgdHJhY2suIEF0IHRoaXMgcG9pbnQsIHRoZSBtYWludGVuYW5jZSB0cmFjayBuYW1lIGlzIGFwcGxpZWQuXG4gKi9cbk1haW50ZW5hbmNlVHJhY2tOYW1lPzogc3RyaW5nXG5Pd25lckFjY291bnQ/OiBzdHJpbmdcbi8qKlxuICogQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHJlZHNoaWZ0IGNsdXN0ZXIgaXMgbXVsdGktYXogb3Igbm90LiBJZiB5b3UgZG9uJ3QgcHJvdmlkZSB0aGlzIHBhcmFtZXRlciBvciBzZXQgdGhlIHZhbHVlIHRvIGZhbHNlLCB0aGUgcmVkc2hpZnQgY2x1c3RlciB3aWxsIGJlIHNpbmdsZS1hei5cbiAqL1xuTXVsdGlBWj86IGJvb2xlYW5cbi8qKlxuICogVGhlIGxpc3Qgb2YgdGFncyBmb3IgdGhlIGNsdXN0ZXIgcGFyYW1ldGVyIGdyb3VwLlxuICogXG4gKiBAbWF4SXRlbXMgNTBcbiAqL1xuVGFncz86IFRhZ1tdXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBjbHVzdGVyIHRoZSBzb3VyY2Ugc25hcHNob3Qgd2FzIGNyZWF0ZWQgZnJvbS4gVGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgaWYgeW91ciBJQU0gdXNlciBoYXMgYSBwb2xpY3kgY29udGFpbmluZyBhIHNuYXBzaG90IHJlc291cmNlIGVsZW1lbnQgdGhhdCBzcGVjaWZpZXMgYW55dGhpbmcgb3RoZXIgdGhhbiAqIGZvciB0aGUgY2x1c3RlciBuYW1lLlxuICovXG5TbmFwc2hvdENsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIEEgbGlzdCBvZiBBV1MgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pIHJvbGVzIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIGNsdXN0ZXIgdG8gYWNjZXNzIG90aGVyIEFXUyBzZXJ2aWNlcy4gWW91IG11c3Qgc3VwcGx5IHRoZSBJQU0gcm9sZXMgaW4gdGhlaXIgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9ybWF0LiBZb3UgY2FuIHN1cHBseSB1cCB0byA1MCBJQU0gcm9sZXMgaW4gYSBzaW5nbGUgcmVxdWVzdFxuICogXG4gKiBAbWF4SXRlbXMgNTBcbiAqL1xuSWFtUm9sZXM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykga2V5IElEIG9mIHRoZSBlbmNyeXB0aW9uIGtleSB0aGF0IHlvdSB3YW50IHRvIHVzZSB0byBlbmNyeXB0IGRhdGEgaW4gdGhlIGNsdXN0ZXIuXG4gKi9cbkttc0tleUlkPzogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYgc3RyaW5nKVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byBhcHBseSB0aGUgc25hcHNob3QgcmV0ZW50aW9uIHBlcmlvZCB0byBuZXdseSBjb3BpZWQgbWFudWFsIHNuYXBzaG90cyBpbnN0ZWFkIG9mIGF1dG9tYXRlZCBzbmFwc2hvdHMuXG4gKi9cblNuYXBzaG90Q29weU1hbnVhbD86IGJvb2xlYW5cbi8qKlxuICogQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHJlZHNoaWZ0IGNsdXN0ZXIncyBhZG1pbiB1c2VyIGNyZWRlbnRpYWxzIGlzIG1hbmFnZWQgYnkgUmVkc2hpZnQgb3Igbm90LiBZb3UgY2FuJ3QgdXNlIE1hc3RlclVzZXJQYXNzd29yZCBpZiBNYW5hZ2VNYXN0ZXJQYXNzd29yZCBpcyB0cnVlLiBJZiBNYW5hZ2VNYXN0ZXJQYXNzd29yZCBpcyBmYWxzZSBvciBub3Qgc2V0LCBBbWF6b24gUmVkc2hpZnQgdXNlcyBNYXN0ZXJVc2VyUGFzc3dvcmQgZm9yIHRoZSBhZG1pbiB1c2VyIGFjY291bnQncyBwYXNzd29yZC5cbiAqL1xuTWFuYWdlTWFzdGVyUGFzc3dvcmQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBFQzIgQXZhaWxhYmlsaXR5IFpvbmUgKEFaKSBpbiB3aGljaCB5b3Ugd2FudCBBbWF6b24gUmVkc2hpZnQgdG8gcHJvdmlzaW9uIHRoZSBjbHVzdGVyLiBEZWZhdWx0OiBBIHJhbmRvbSwgc3lzdGVtLWNob3NlbiBBdmFpbGFiaWxpdHkgWm9uZSBpbiB0aGUgcmVnaW9uIHRoYXQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBlbmRwb2ludFxuICovXG5BdmFpbGFiaWxpdHlab25lPzogc3RyaW5nXG4vKipcbiAqIEEgbGlzdCBvZiBzZWN1cml0eSBncm91cHMgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2x1c3Rlci5cbiAqL1xuQ2x1c3RlclNlY3VyaXR5R3JvdXBzPzogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYgc3RyaW5nKVtdXG4vKipcbiAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjbHVzdGVyLiBZb3UgdXNlIHRoaXMgaWRlbnRpZmllciB0byByZWZlciB0byB0aGUgY2x1c3RlciBmb3IgYW55IHN1YnNlcXVlbnQgY2x1c3RlciBvcGVyYXRpb25zIHN1Y2ggYXMgZGVsZXRpbmcgb3IgbW9kaWZ5aW5nLiBBbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgbXVzdCBiZSBsb3dlciBjYXNlLCBubyBoeXBlbnMgYXQgdGhlIGVuZCwgbm8gdHdvIGNvbnNlY3V0aXZlIGh5cGhlbnMuIENsdXN0ZXIgbmFtZSBzaG91bGQgYmUgdW5pcXVlIGZvciBhbGwgY2x1c3RlcnMgd2l0aGluIGFuIEFXUyBhY2NvdW50XG4gKi9cbkNsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIFRoZSBwYXNzd29yZCBhc3NvY2lhdGVkIHdpdGggdGhlIG1hc3RlciB1c2VyIGFjY291bnQgZm9yIHRoZSBjbHVzdGVyIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4gWW91IGNhbid0IHVzZSBNYXN0ZXJVc2VyUGFzc3dvcmQgaWYgTWFuYWdlTWFzdGVyUGFzc3dvcmQgaXMgdHJ1ZS4gUGFzc3dvcmQgbXVzdCBiZSBiZXR3ZWVuIDggYW5kIDY0IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLCBzaG91bGQgaGF2ZSBhdCBsZWFzdCBvbmUgdXBwZXJjYXNlIGxldHRlci5NdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGxvd2VyY2FzZSBsZXR0ZXIuTXVzdCBjb250YWluIG9uZSBudW1iZXIuQ2FuIGJlIGFueSBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVyLlxuICovXG5NYXN0ZXJVc2VyUGFzc3dvcmQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgYSBjbHVzdGVyIHN1Ym5ldCBncm91cCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjbHVzdGVyLlxuICovXG5DbHVzdGVyU3VibmV0R3JvdXBOYW1lPzogc3RyaW5nXG5Mb2dnaW5nUHJvcGVydGllcz86IExvZ2dpbmdQcm9wZXJ0aWVzXG4vKipcbiAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW5hYmxlIHRoZSBkZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cuXG4gKi9cbkRlZmVyTWFpbnRlbmFuY2U/OiBib29sZWFuXG4vKipcbiAqIFRoZSBub2RlIHR5cGUgdG8gYmUgcHJvdmlzaW9uZWQgZm9yIHRoZSBjbHVzdGVyLlZhbGlkIFZhbHVlczogZHMyLnhsYXJnZSB8IGRzMi44eGxhcmdlIHwgZGMxLmxhcmdlIHwgZGMxLjh4bGFyZ2UgfCBkYzIubGFyZ2UgfCBkYzIuOHhsYXJnZSB8IHJhMy5sYXJnZSB8IHJhMy40eGxhcmdlIHwgcmEzLjE2eGxhcmdlXG4gKi9cbk5vZGVUeXBlOiBzdHJpbmdcbi8qKlxuICogVGhlIHVzZXIgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1hc3RlciB1c2VyIGFjY291bnQgZm9yIHRoZSBjbHVzdGVyIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4gVGhlIHVzZXIgbmFtZSBjYW4ndCBiZSBQVUJMSUMgYW5kIGZpcnN0IGNoYXJhY3RlciBtdXN0IGJlIGEgbGV0dGVyLlxuICovXG5NYXN0ZXJVc2VybmFtZTogc3RyaW5nXG4vKipcbiAqIElmIHRydWUsIHRoZSBjbHVzdGVyIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIGEgcHVibGljIG5ldHdvcmsuXG4gKi9cblB1YmxpY2x5QWNjZXNzaWJsZT86IGJvb2xlYW5cbi8qKlxuICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGRlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvdy5cbiAqL1xuRGVmZXJNYWludGVuYW5jZUlkZW50aWZpZXI/OiBzdHJpbmdcbi8qKlxuICogVGhlIG51bWJlciBvZiBkYXlzIHRvIHJldGFpbiBuZXdseSBjb3BpZWQgc25hcHNob3RzIGluIHRoZSBkZXN0aW5hdGlvbiBBV1MgUmVnaW9uIGFmdGVyIHRoZXkgYXJlIGNvcGllZCBmcm9tIHRoZSBzb3VyY2UgQVdTIFJlZ2lvbi4gSWYgdGhlIHZhbHVlIGlzIC0xLCB0aGUgbWFudWFsIHNuYXBzaG90IGlzIHJldGFpbmVkIGluZGVmaW5pdGVseS5cbiAqIFxuICogVGhlIHZhbHVlIG11c3QgYmUgZWl0aGVyIC0xIG9yIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzLDY1My5cbiAqL1xuTWFudWFsU25hcHNob3RSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXJcbi8qKlxuICogVGhlIFJlZHNoaWZ0IG9wZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQuIFJlc291cmNlIEFjdGlvbiBzdXBwb3J0cyBwYXVzZS1jbHVzdGVyLCByZXN1bWUtY2x1c3RlciwgZmFpbG92ZXItcHJpbWFyeS1jb21wdXRlIEFQSXNcbiAqL1xuUmVzb3VyY2VBY3Rpb24/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBIU00gY2xpZW50IGNlcnRpZmljYXRlIHRoZSBBbWF6b24gUmVkc2hpZnQgY2x1c3RlciB1c2VzIHRvIHJldHJpZXZlIHRoZSBkYXRhIGVuY3J5cHRpb24ga2V5cyBzdG9yZWQgaW4gYW4gSFNNXG4gKi9cbkhzbUNsaWVudENlcnRpZmljYXRlSWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgRWxhc3RpYyBJUCAoRUlQKSBhZGRyZXNzIGZvciB0aGUgY2x1c3Rlci5cbiAqL1xuRWxhc3RpY0lwPzogc3RyaW5nXG4vKipcbiAqIFRoZSBhdmFpbGFiaWxpdHkgem9uZSByZWxvY2F0aW9uIHN0YXR1cyBvZiB0aGUgY2x1c3RlclxuICovXG5BdmFpbGFiaWxpdHlab25lUmVsb2NhdGlvblN0YXR1cz86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgcmVwcmVzZW50cyBob3cgdGhlIGNsdXN0ZXIgaXMgY29uZmlndXJlZCB0byB1c2UgQVFVQSAoQWR2YW5jZWQgUXVlcnkgQWNjZWxlcmF0b3IpIGFmdGVyIHRoZSBjbHVzdGVyIGlzIHJlc3RvcmVkLiBQb3NzaWJsZSB2YWx1ZXMgaW5jbHVkZSB0aGUgZm9sbG93aW5nLlxuICogXG4gKiBlbmFibGVkIC0gVXNlIEFRVUEgaWYgaXQgaXMgYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudCBSZWdpb24gYW5kIEFtYXpvbiBSZWRzaGlmdCBub2RlIHR5cGUuXG4gKiBkaXNhYmxlZCAtIERvbid0IHVzZSBBUVVBLlxuICogYXV0byAtIEFtYXpvbiBSZWRzaGlmdCBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIEFRVUEuXG4gKiBcbiAqL1xuQXF1YUNvbmZpZ3VyYXRpb25TdGF0dXM/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHNuYXBzaG90IGZyb20gd2hpY2ggdG8gY3JlYXRlIHRoZSBuZXcgY2x1c3Rlci4gVGhpcyBwYXJhbWV0ZXIgaXNuJ3QgY2FzZSBzZW5zaXRpdmUuXG4gKi9cblNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgb3B0aW9uIHRvIGVuYWJsZSByZWxvY2F0aW9uIGZvciBhbiBBbWF6b24gUmVkc2hpZnQgY2x1c3RlciBiZXR3ZWVuIEF2YWlsYWJpbGl0eSBab25lcyBhZnRlciB0aGUgY2x1c3RlciBtb2RpZmljYXRpb24gaXMgY29tcGxldGUuXG4gKi9cbkF2YWlsYWJpbGl0eVpvbmVSZWxvY2F0aW9uPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgc25hcHNob3QgY29weSBncmFudCB0byB1c2Ugd2hlbiBzbmFwc2hvdHMgb2YgYW4gQVdTIEtNUy1lbmNyeXB0ZWQgY2x1c3RlciBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpb24uXG4gKi9cblNuYXBzaG90Q29weUdyYW50TmFtZT86IHN0cmluZ1xuLyoqXG4gKiBBbiBvcHRpb24gdGhhdCBzcGVjaWZpZXMgd2hldGhlciB0byBjcmVhdGUgdGhlIGNsdXN0ZXIgd2l0aCBlbmhhbmNlZCBWUEMgcm91dGluZyBlbmFibGVkLiBUbyBjcmVhdGUgYSBjbHVzdGVyIHRoYXQgdXNlcyBlbmhhbmNlZCBWUEMgcm91dGluZywgdGhlIGNsdXN0ZXIgbXVzdCBiZSBpbiBhIFZQQy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBFbmhhbmNlZCBWUEMgUm91dGluZyBpbiB0aGUgQW1hem9uIFJlZHNoaWZ0IENsdXN0ZXIgTWFuYWdlbWVudCBHdWlkZS5cbiAqIFxuICogSWYgdGhpcyBvcHRpb24gaXMgdHJ1ZSAsIGVuaGFuY2VkIFZQQyByb3V0aW5nIGlzIGVuYWJsZWQuXG4gKiBcbiAqIERlZmF1bHQ6IGZhbHNlXG4gKi9cbkVuaGFuY2VkVnBjUm91dGluZz86IGJvb2xlYW5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBncm91cCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjbHVzdGVyLlxuICovXG5DbHVzdGVyUGFyYW1ldGVyR3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgdGltZXN0YW1wIGluZGljYXRpbmcgZW5kIHRpbWUgZm9yIHRoZSBkZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cuIElmIHlvdSBzcGVjaWZ5IGFuIGVuZCB0aW1lLCB5b3UgY2FuJ3Qgc3BlY2lmeSBhIGR1cmF0aW9uLlxuICovXG5EZWZlck1haW50ZW5hbmNlRW5kVGltZT86IHN0cmluZ1xuLyoqXG4gKiBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB3ZSB3YW50IHRvIHJvdGF0ZSBFbmNyeXB0aW9uIEtleXMuXG4gKi9cblJvdGF0ZUVuY3J5cHRpb25LZXk/OiBib29sZWFuXG4vKipcbiAqIEEgbGlzdCBvZiBWaXJ0dWFsIFByaXZhdGUgQ2xvdWQgKFZQQykgc2VjdXJpdHkgZ3JvdXBzIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2x1c3Rlci5cbiAqL1xuVnBjU2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgY2x1c3RlciBuYW1lc3BhY2UuXG4gKi9cbkNsdXN0ZXJOYW1lc3BhY2VBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciB0aGUgY2x1c3RlcidzIGFkbWluIHVzZXIgY3JlZGVudGlhbHMgc2VjcmV0LlxuICovXG5NYXN0ZXJQYXNzd29yZFNlY3JldEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgQW1hem9uIFJlZHNoaWZ0IGVuZ2luZSBzb2Z0d2FyZSB0aGF0IHlvdSB3YW50IHRvIGRlcGxveSBvbiB0aGUgY2x1c3Rlci5UaGUgdmVyc2lvbiBzZWxlY3RlZCBydW5zIG9uIGFsbCB0aGUgbm9kZXMgaW4gdGhlIGNsdXN0ZXIuXG4gKi9cbkNsdXN0ZXJWZXJzaW9uPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgSFNNIGNvbmZpZ3VyYXRpb24gdGhhdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gdGhlIEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIGNhbiB1c2UgdG8gcmV0cmlldmUgYW5kIHN0b3JlIGtleXMgaW4gYW4gSFNNLlxuICovXG5Ic21Db25maWd1cmF0aW9uSWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgd2Vla2x5IHRpbWUgcmFuZ2UgKGluIFVUQykgZHVyaW5nIHdoaWNoIGF1dG9tYXRlZCBjbHVzdGVyIG1haW50ZW5hbmNlIGNhbiBvY2N1ci5cbiAqL1xuUHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmdcbi8qKlxuICogQSB0aW1lc3RhbXAgaW5kaWNhdGluZyB0aGUgc3RhcnQgdGltZSBmb3IgdGhlIGRlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvdy5cbiAqL1xuRGVmZXJNYWludGVuYW5jZVN0YXJ0VGltZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUgY2x1c3Rlci4gV2hlbiBjbHVzdGVyIHR5cGUgaXMgc3BlY2lmaWVkIGFzIHNpbmdsZS1ub2RlLCB0aGUgTnVtYmVyT2ZOb2RlcyBwYXJhbWV0ZXIgaXMgbm90IHJlcXVpcmVkIGFuZCBpZiBtdWx0aS1ub2RlLCB0aGUgTnVtYmVyT2ZOb2RlcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWRcbiAqL1xuQ2x1c3RlclR5cGU6IHN0cmluZ1xuLyoqXG4gKiBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByZXNpemUgb3BlcmF0aW9uIGlzIHVzaW5nIHRoZSBjbGFzc2ljIHJlc2l6ZSBwcm9jZXNzLiBJZiB5b3UgZG9uJ3QgcHJvdmlkZSB0aGlzIHBhcmFtZXRlciBvciBzZXQgdGhlIHZhbHVlIHRvIGZhbHNlICwgdGhlIHJlc2l6ZSB0eXBlIGlzIGVsYXN0aWMuXG4gKi9cbkNsYXNzaWM/OiBib29sZWFuXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSBrZXkgdXNlZCB0byBlbmNyeXB0IGFuZCBzdG9yZSB0aGUgY2x1c3RlcidzIGFkbWluIHVzZXIgY3JlZGVudGlhbHMgc2VjcmV0LlxuICovXG5NYXN0ZXJQYXNzd29yZFNlY3JldEttc0tleUlkPzogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYgc3RyaW5nKVxuLyoqXG4gKiBBbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGR1cmF0aW9uIG9mIHRoZSBtYWludGVuYW5jZSB3aW5kb3cgaW4gZGF5cy4gSWYgeW91IHNwZWNpZnkgYSBkdXJhdGlvbiwgeW91IGNhbid0IHNwZWNpZnkgYW4gZW5kIHRpbWUuIFRoZSBkdXJhdGlvbiBtdXN0IGJlIDQ1IGRheXMgb3IgbGVzcy5cbiAqL1xuRGVmZXJNYWludGVuYW5jZUR1cmF0aW9uPzogbnVtYmVyXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBmaXJzdCBkYXRhYmFzZSB0byBiZSBjcmVhdGVkIHdoZW4gdGhlIGNsdXN0ZXIgaXMgY3JlYXRlZC4gVG8gY3JlYXRlIGFkZGl0aW9uYWwgZGF0YWJhc2VzIGFmdGVyIHRoZSBjbHVzdGVyIGlzIGNyZWF0ZWQsIGNvbm5lY3QgdG8gdGhlIGNsdXN0ZXIgd2l0aCBhIFNRTCBjbGllbnQgYW5kIHVzZSBTUUwgY29tbWFuZHMgdG8gY3JlYXRlIGEgZGF0YWJhc2UuXG4gKi9cbkRCTmFtZTogc3RyaW5nXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgZGF5cyB0byByZXRhaW4gYXV0b21hdGVkIHNuYXBzaG90cyBpbiB0aGUgZGVzdGluYXRpb24gcmVnaW9uIGFmdGVyIHRoZXkgYXJlIGNvcGllZCBmcm9tIHRoZSBzb3VyY2UgcmVnaW9uLiBcbiAqIFxuICogIERlZmF1bHQgaXMgNy4gXG4gKiBcbiAqICBDb25zdHJhaW50czogTXVzdCBiZSBhdCBsZWFzdCAxIGFuZCBubyBtb3JlIHRoYW4gMzUuXG4gKi9cblNuYXBzaG90Q29weVJldGVudGlvblBlcmlvZD86IG51bWJlclxufVxuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludCB7XG5BZGRyZXNzPzogc3RyaW5nXG5Qb3J0Pzogc3RyaW5nXG59XG4vKipcbiAqIEEga2V5LXZhbHVlIHBhaXIgdG8gYXNzb2NpYXRlIHdpdGggYSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBUaGUgdmFsdWUgZm9yIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMSB0byAyNTUgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIGtleSBuYW1lIG9mIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMSB0byAxMjcgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uXG4gKi9cbktleTogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdQcm9wZXJ0aWVzIHtcbkJ1Y2tldE5hbWU/OiBzdHJpbmdcblMzS2V5UHJlZml4Pzogc3RyaW5nXG5Mb2dEZXN0aW5hdGlvblR5cGU/OiBzdHJpbmdcbi8qKlxuICogQG1heEl0ZW1zIDNcbiAqL1xuTG9nRXhwb3J0cz86IHN0cmluZ1tdXG59XG4iXX0=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXJlZHNoaWZ0LWNsdXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtcmVkc2hpZnQtY2x1c3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBbiBleGFtcGxlIHJlc291cmNlIHNjaGVtYSBkZW1vbnN0cmF0aW5nIHNvbWUgYmFzaWMgY29uc3RydWN0cyBhbmQgdmFsaWRhdGlvbiBydWxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX1JFRFNISUZUX0NMVVNURVIge1xuLyoqXG4gKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGF0YWJhc2UgcmV2aXNpb24uIFlvdSBjYW4gcmV0cmlldmUgdGhpcyB2YWx1ZSBmcm9tIHRoZSByZXNwb25zZSB0byB0aGUgRGVzY3JpYmVDbHVzdGVyRGJSZXZpc2lvbnMgcmVxdWVzdC5cbiAqL1xuUmV2aXNpb25UYXJnZXQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIG51bWJlciBvZiBkYXlzIHRoYXQgYXV0b21hdGVkIHNuYXBzaG90cyBhcmUgcmV0YWluZWQuIElmIHRoZSB2YWx1ZSBpcyAwLCBhdXRvbWF0ZWQgc25hcHNob3RzIGFyZSBkaXNhYmxlZC4gRGVmYXVsdCB2YWx1ZSBpcyAxXG4gKi9cbkF1dG9tYXRlZFNuYXBzaG90UmV0ZW50aW9uUGVyaW9kPzogbnVtYmVyXG4vKipcbiAqIElmIHRydWUsIHRoZSBkYXRhIGluIHRoZSBjbHVzdGVyIGlzIGVuY3J5cHRlZCBhdCByZXN0LlxuICovXG5FbmNyeXB0ZWQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBwb3J0IG51bWJlciBvbiB3aGljaCB0aGUgY2x1c3RlciBhY2NlcHRzIGluY29taW5nIGNvbm5lY3Rpb25zLiBUaGUgY2x1c3RlciBpcyBhY2Nlc3NpYmxlIG9ubHkgdmlhIHRoZSBKREJDIGFuZCBPREJDIGNvbm5lY3Rpb24gc3RyaW5nc1xuICovXG5Qb3J0PzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgY29tcHV0ZSBub2RlcyBpbiB0aGUgY2x1c3Rlci4gVGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgd2hlbiB0aGUgQ2x1c3RlclR5cGUgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyBtdWx0aS1ub2RlLlxuICovXG5OdW1iZXJPZk5vZGVzPzogbnVtYmVyXG4vKipcbiAqIFRoZSBkZXN0aW5hdGlvbiBBV1MgUmVnaW9uIHRoYXQgeW91IHdhbnQgdG8gY29weSBzbmFwc2hvdHMgdG8uIENvbnN0cmFpbnRzOiBNdXN0IGJlIHRoZSBuYW1lIG9mIGEgdmFsaWQgQVdTIFJlZ2lvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBSZWdpb25zIGFuZCBFbmRwb2ludHMgaW4gdGhlIEFtYXpvbiBXZWIgU2VydmljZXMgW2h0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nZW5lcmFsL2xhdGVzdC9nci9yYW5kZS5odG1sI3JlZHNoaWZ0X3JlZ2lvbl0gR2VuZXJhbCBSZWZlcmVuY2VcbiAqL1xuRGVzdGluYXRpb25SZWdpb24/OiBzdHJpbmdcbi8qKlxuICogTWFqb3IgdmVyc2lvbiB1cGdyYWRlcyBjYW4gYmUgYXBwbGllZCBkdXJpbmcgdGhlIG1haW50ZW5hbmNlIHdpbmRvdyB0byB0aGUgQW1hem9uIFJlZHNoaWZ0IGVuZ2luZSB0aGF0IGlzIHJ1bm5pbmcgb24gdGhlIGNsdXN0ZXIuIERlZmF1bHQgdmFsdWUgaXMgVHJ1ZVxuICovXG5BbGxvd1ZlcnNpb25VcGdyYWRlPzogYm9vbGVhblxuRW5kcG9pbnQ/OiBFbmRwb2ludFxuLyoqXG4gKiBUaGUgbmFtZXNwYWNlIHJlc291cmNlIHBvbGljeSBkb2N1bWVudCB0aGF0IHdpbGwgYmUgYXR0YWNoZWQgdG8gYSBSZWRzaGlmdCBjbHVzdGVyLlxuICovXG5OYW1lc3BhY2VSZXNvdXJjZVBvbGljeT86IHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59XG4vKipcbiAqIFRoZSBuYW1lIGZvciB0aGUgbWFpbnRlbmFuY2UgdHJhY2sgdGhhdCB5b3Ugd2FudCB0byBhc3NpZ24gZm9yIHRoZSBjbHVzdGVyLiBUaGlzIG5hbWUgY2hhbmdlIGlzIGFzeW5jaHJvbm91cy4gVGhlIG5ldyB0cmFjayBuYW1lIHN0YXlzIGluIHRoZSBQZW5kaW5nTW9kaWZpZWRWYWx1ZXMgZm9yIHRoZSBjbHVzdGVyIHVudGlsIHRoZSBuZXh0IG1haW50ZW5hbmNlIHdpbmRvdy4gV2hlbiB0aGUgbWFpbnRlbmFuY2UgdHJhY2sgY2hhbmdlcywgdGhlIGNsdXN0ZXIgaXMgc3dpdGNoZWQgdG8gdGhlIGxhdGVzdCBjbHVzdGVyIHJlbGVhc2UgYXZhaWxhYmxlIGZvciB0aGUgbWFpbnRlbmFuY2UgdHJhY2suIEF0IHRoaXMgcG9pbnQsIHRoZSBtYWludGVuYW5jZSB0cmFjayBuYW1lIGlzIGFwcGxpZWQuXG4gKi9cbk1haW50ZW5hbmNlVHJhY2tOYW1lPzogc3RyaW5nXG5Pd25lckFjY291bnQ/OiBzdHJpbmdcbi8qKlxuICogQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHJlZHNoaWZ0IGNsdXN0ZXIgaXMgbXVsdGktYXogb3Igbm90LiBJZiB5b3UgZG9uJ3QgcHJvdmlkZSB0aGlzIHBhcmFtZXRlciBvciBzZXQgdGhlIHZhbHVlIHRvIGZhbHNlLCB0aGUgcmVkc2hpZnQgY2x1c3RlciB3aWxsIGJlIHNpbmdsZS1hei5cbiAqL1xuTXVsdGlBWj86IGJvb2xlYW5cbi8qKlxuICogVGhlIGxpc3Qgb2YgdGFncyBmb3IgdGhlIGNsdXN0ZXIgcGFyYW1ldGVyIGdyb3VwLlxuICogXG4gKiBAbWF4SXRlbXMgNTBcbiAqL1xuVGFncz86IFRhZ1tdXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBjbHVzdGVyIHRoZSBzb3VyY2Ugc25hcHNob3Qgd2FzIGNyZWF0ZWQgZnJvbS4gVGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgaWYgeW91ciBJQU0gdXNlciBoYXMgYSBwb2xpY3kgY29udGFpbmluZyBhIHNuYXBzaG90IHJlc291cmNlIGVsZW1lbnQgdGhhdCBzcGVjaWZpZXMgYW55dGhpbmcgb3RoZXIgdGhhbiAqIGZvciB0aGUgY2x1c3RlciBuYW1lLlxuICovXG5TbmFwc2hvdENsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIEEgbGlzdCBvZiBBV1MgSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pIHJvbGVzIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIGNsdXN0ZXIgdG8gYWNjZXNzIG90aGVyIEFXUyBzZXJ2aWNlcy4gWW91IG11c3Qgc3VwcGx5IHRoZSBJQU0gcm9sZXMgaW4gdGhlaXIgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9ybWF0LiBZb3UgY2FuIHN1cHBseSB1cCB0byA1MCBJQU0gcm9sZXMgaW4gYSBzaW5nbGUgcmVxdWVzdFxuICogXG4gKiBAbWF4SXRlbXMgNTBcbiAqL1xuSWFtUm9sZXM/OiBzdHJpbmdbXVxuLyoqXG4gKiBUaGUgQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykga2V5IElEIG9mIHRoZSBlbmNyeXB0aW9uIGtleSB0aGF0IHlvdSB3YW50IHRvIHVzZSB0byBlbmNyeXB0IGRhdGEgaW4gdGhlIGNsdXN0ZXIuXG4gKi9cbkttc0tleUlkPzogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYgc3RyaW5nKVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byBhcHBseSB0aGUgc25hcHNob3QgcmV0ZW50aW9uIHBlcmlvZCB0byBuZXdseSBjb3BpZWQgbWFudWFsIHNuYXBzaG90cyBpbnN0ZWFkIG9mIGF1dG9tYXRlZCBzbmFwc2hvdHMuXG4gKi9cblNuYXBzaG90Q29weU1hbnVhbD86IGJvb2xlYW5cbi8qKlxuICogQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHJlZHNoaWZ0IGNsdXN0ZXIncyBhZG1pbiB1c2VyIGNyZWRlbnRpYWxzIGlzIG1hbmFnZWQgYnkgUmVkc2hpZnQgb3Igbm90LiBZb3UgY2FuJ3QgdXNlIE1hc3RlclVzZXJQYXNzd29yZCBpZiBNYW5hZ2VNYXN0ZXJQYXNzd29yZCBpcyB0cnVlLiBJZiBNYW5hZ2VNYXN0ZXJQYXNzd29yZCBpcyBmYWxzZSBvciBub3Qgc2V0LCBBbWF6b24gUmVkc2hpZnQgdXNlcyBNYXN0ZXJVc2VyUGFzc3dvcmQgZm9yIHRoZSBhZG1pbiB1c2VyIGFjY291bnQncyBwYXNzd29yZC5cbiAqL1xuTWFuYWdlTWFzdGVyUGFzc3dvcmQ/OiBib29sZWFuXG4vKipcbiAqIFRoZSBFQzIgQXZhaWxhYmlsaXR5IFpvbmUgKEFaKSBpbiB3aGljaCB5b3Ugd2FudCBBbWF6b24gUmVkc2hpZnQgdG8gcHJvdmlzaW9uIHRoZSBjbHVzdGVyLiBEZWZhdWx0OiBBIHJhbmRvbSwgc3lzdGVtLWNob3NlbiBBdmFpbGFiaWxpdHkgWm9uZSBpbiB0aGUgcmVnaW9uIHRoYXQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBlbmRwb2ludFxuICovXG5BdmFpbGFiaWxpdHlab25lPzogc3RyaW5nXG4vKipcbiAqIEEgbGlzdCBvZiBzZWN1cml0eSBncm91cHMgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2x1c3Rlci5cbiAqL1xuQ2x1c3RlclNlY3VyaXR5R3JvdXBzPzogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYgc3RyaW5nKVtdXG4vKipcbiAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjbHVzdGVyLiBZb3UgdXNlIHRoaXMgaWRlbnRpZmllciB0byByZWZlciB0byB0aGUgY2x1c3RlciBmb3IgYW55IHN1YnNlcXVlbnQgY2x1c3RlciBvcGVyYXRpb25zIHN1Y2ggYXMgZGVsZXRpbmcgb3IgbW9kaWZ5aW5nLiBBbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgbXVzdCBiZSBsb3dlciBjYXNlLCBubyBoeXBlbnMgYXQgdGhlIGVuZCwgbm8gdHdvIGNvbnNlY3V0aXZlIGh5cGhlbnMuIENsdXN0ZXIgbmFtZSBzaG91bGQgYmUgdW5pcXVlIGZvciBhbGwgY2x1c3RlcnMgd2l0aGluIGFuIEFXUyBhY2NvdW50XG4gKi9cbkNsdXN0ZXJJZGVudGlmaWVyPzogc3RyaW5nXG4vKipcbiAqIFRoZSBwYXNzd29yZCBhc3NvY2lhdGVkIHdpdGggdGhlIG1hc3RlciB1c2VyIGFjY291bnQgZm9yIHRoZSBjbHVzdGVyIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4gWW91IGNhbid0IHVzZSBNYXN0ZXJVc2VyUGFzc3dvcmQgaWYgTWFuYWdlTWFzdGVyUGFzc3dvcmQgaXMgdHJ1ZS4gUGFzc3dvcmQgbXVzdCBiZSBiZXR3ZWVuIDggYW5kIDY0IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLCBzaG91bGQgaGF2ZSBhdCBsZWFzdCBvbmUgdXBwZXJjYXNlIGxldHRlci5NdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGxvd2VyY2FzZSBsZXR0ZXIuTXVzdCBjb250YWluIG9uZSBudW1iZXIuQ2FuIGJlIGFueSBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVyLlxuICovXG5NYXN0ZXJVc2VyUGFzc3dvcmQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgYSBjbHVzdGVyIHN1Ym5ldCBncm91cCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjbHVzdGVyLlxuICovXG5DbHVzdGVyU3VibmV0R3JvdXBOYW1lPzogc3RyaW5nXG5Mb2dnaW5nUHJvcGVydGllcz86IExvZ2dpbmdQcm9wZXJ0aWVzXG4vKipcbiAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW5hYmxlIHRoZSBkZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cuXG4gKi9cbkRlZmVyTWFpbnRlbmFuY2U/OiBib29sZWFuXG4vKipcbiAqIFRoZSBub2RlIHR5cGUgdG8gYmUgcHJvdmlzaW9uZWQgZm9yIHRoZSBjbHVzdGVyLlZhbGlkIFZhbHVlczogZHMyLnhsYXJnZSB8IGRzMi44eGxhcmdlIHwgZGMxLmxhcmdlIHwgZGMxLjh4bGFyZ2UgfCBkYzIubGFyZ2UgfCBkYzIuOHhsYXJnZSB8IHJhMy5sYXJnZSB8IHJhMy40eGxhcmdlIHwgcmEzLjE2eGxhcmdlXG4gKi9cbk5vZGVUeXBlOiBzdHJpbmdcbi8qKlxuICogVGhlIHVzZXIgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1hc3RlciB1c2VyIGFjY291bnQgZm9yIHRoZSBjbHVzdGVyIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4gVGhlIHVzZXIgbmFtZSBjYW4ndCBiZSBQVUJMSUMgYW5kIGZpcnN0IGNoYXJhY3RlciBtdXN0IGJlIGEgbGV0dGVyLlxuICovXG5NYXN0ZXJVc2VybmFtZTogc3RyaW5nXG4vKipcbiAqIElmIHRydWUsIHRoZSBjbHVzdGVyIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIGEgcHVibGljIG5ldHdvcmsuXG4gKi9cblB1YmxpY2x5QWNjZXNzaWJsZT86IGJvb2xlYW5cbi8qKlxuICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGRlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvdy5cbiAqL1xuRGVmZXJNYWludGVuYW5jZUlkZW50aWZpZXI/OiBzdHJpbmdcbi8qKlxuICogVGhlIG51bWJlciBvZiBkYXlzIHRvIHJldGFpbiBuZXdseSBjb3BpZWQgc25hcHNob3RzIGluIHRoZSBkZXN0aW5hdGlvbiBBV1MgUmVnaW9uIGFmdGVyIHRoZXkgYXJlIGNvcGllZCBmcm9tIHRoZSBzb3VyY2UgQVdTIFJlZ2lvbi4gSWYgdGhlIHZhbHVlIGlzIC0xLCB0aGUgbWFudWFsIHNuYXBzaG90IGlzIHJldGFpbmVkIGluZGVmaW5pdGVseS5cbiAqIFxuICogVGhlIHZhbHVlIG11c3QgYmUgZWl0aGVyIC0xIG9yIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAzLDY1My5cbiAqL1xuTWFudWFsU25hcHNob3RSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXJcbi8qKlxuICogVGhlIFJlZHNoaWZ0IG9wZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQuIFJlc291cmNlIEFjdGlvbiBzdXBwb3J0cyBwYXVzZS1jbHVzdGVyLCByZXN1bWUtY2x1c3RlciwgZmFpbG92ZXItcHJpbWFyeS1jb21wdXRlIEFQSXNcbiAqL1xuUmVzb3VyY2VBY3Rpb24/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBIU00gY2xpZW50IGNlcnRpZmljYXRlIHRoZSBBbWF6b24gUmVkc2hpZnQgY2x1c3RlciB1c2VzIHRvIHJldHJpZXZlIHRoZSBkYXRhIGVuY3J5cHRpb24ga2V5cyBzdG9yZWQgaW4gYW4gSFNNXG4gKi9cbkhzbUNsaWVudENlcnRpZmljYXRlSWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgRWxhc3RpYyBJUCAoRUlQKSBhZGRyZXNzIGZvciB0aGUgY2x1c3Rlci5cbiAqL1xuRWxhc3RpY0lwPzogc3RyaW5nXG4vKipcbiAqIFRoZSBhdmFpbGFiaWxpdHkgem9uZSByZWxvY2F0aW9uIHN0YXR1cyBvZiB0aGUgY2x1c3RlclxuICovXG5BdmFpbGFiaWxpdHlab25lUmVsb2NhdGlvblN0YXR1cz86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgcmVwcmVzZW50cyBob3cgdGhlIGNsdXN0ZXIgaXMgY29uZmlndXJlZCB0byB1c2UgQVFVQSAoQWR2YW5jZWQgUXVlcnkgQWNjZWxlcmF0b3IpIGFmdGVyIHRoZSBjbHVzdGVyIGlzIHJlc3RvcmVkLiBQb3NzaWJsZSB2YWx1ZXMgaW5jbHVkZSB0aGUgZm9sbG93aW5nLlxuICogXG4gKiBlbmFibGVkIC0gVXNlIEFRVUEgaWYgaXQgaXMgYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudCBSZWdpb24gYW5kIEFtYXpvbiBSZWRzaGlmdCBub2RlIHR5cGUuXG4gKiBkaXNhYmxlZCAtIERvbid0IHVzZSBBUVVBLlxuICogYXV0byAtIEFtYXpvbiBSZWRzaGlmdCBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIEFRVUEuXG4gKiBcbiAqL1xuQXF1YUNvbmZpZ3VyYXRpb25TdGF0dXM/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHNuYXBzaG90IGZyb20gd2hpY2ggdG8gY3JlYXRlIHRoZSBuZXcgY2x1c3Rlci4gVGhpcyBwYXJhbWV0ZXIgaXNuJ3QgY2FzZSBzZW5zaXRpdmUuXG4gKi9cblNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgb3B0aW9uIHRvIGVuYWJsZSByZWxvY2F0aW9uIGZvciBhbiBBbWF6b24gUmVkc2hpZnQgY2x1c3RlciBiZXR3ZWVuIEF2YWlsYWJpbGl0eSBab25lcyBhZnRlciB0aGUgY2x1c3RlciBtb2RpZmljYXRpb24gaXMgY29tcGxldGUuXG4gKi9cbkF2YWlsYWJpbGl0eVpvbmVSZWxvY2F0aW9uPzogYm9vbGVhblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgc25hcHNob3QgY29weSBncmFudCB0byB1c2Ugd2hlbiBzbmFwc2hvdHMgb2YgYW4gQVdTIEtNUy1lbmNyeXB0ZWQgY2x1c3RlciBhcmUgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiByZWdpb24uXG4gKi9cblNuYXBzaG90Q29weUdyYW50TmFtZT86IHN0cmluZ1xuLyoqXG4gKiBBbiBvcHRpb24gdGhhdCBzcGVjaWZpZXMgd2hldGhlciB0byBjcmVhdGUgdGhlIGNsdXN0ZXIgd2l0aCBlbmhhbmNlZCBWUEMgcm91dGluZyBlbmFibGVkLiBUbyBjcmVhdGUgYSBjbHVzdGVyIHRoYXQgdXNlcyBlbmhhbmNlZCBWUEMgcm91dGluZywgdGhlIGNsdXN0ZXIgbXVzdCBiZSBpbiBhIFZQQy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBFbmhhbmNlZCBWUEMgUm91dGluZyBpbiB0aGUgQW1hem9uIFJlZHNoaWZ0IENsdXN0ZXIgTWFuYWdlbWVudCBHdWlkZS5cbiAqIFxuICogSWYgdGhpcyBvcHRpb24gaXMgdHJ1ZSAsIGVuaGFuY2VkIFZQQyByb3V0aW5nIGlzIGVuYWJsZWQuXG4gKiBcbiAqIERlZmF1bHQ6IGZhbHNlXG4gKi9cbkVuaGFuY2VkVnBjUm91dGluZz86IGJvb2xlYW5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBncm91cCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjbHVzdGVyLlxuICovXG5DbHVzdGVyUGFyYW1ldGVyR3JvdXBOYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgdGltZXN0YW1wIGluZGljYXRpbmcgZW5kIHRpbWUgZm9yIHRoZSBkZWZlcnJlZCBtYWludGVuYW5jZSB3aW5kb3cuIElmIHlvdSBzcGVjaWZ5IGFuIGVuZCB0aW1lLCB5b3UgY2FuJ3Qgc3BlY2lmeSBhIGR1cmF0aW9uLlxuICovXG5EZWZlck1haW50ZW5hbmNlRW5kVGltZT86IHN0cmluZ1xuLyoqXG4gKiBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB3ZSB3YW50IHRvIHJvdGF0ZSBFbmNyeXB0aW9uIEtleXMuXG4gKi9cblJvdGF0ZUVuY3J5cHRpb25LZXk/OiBib29sZWFuXG4vKipcbiAqIEEgbGlzdCBvZiBWaXJ0dWFsIFByaXZhdGUgQ2xvdWQgKFZQQykgc2VjdXJpdHkgZ3JvdXBzIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2x1c3Rlci5cbiAqL1xuVnBjU2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgY2x1c3RlciBuYW1lc3BhY2UuXG4gKi9cbkNsdXN0ZXJOYW1lc3BhY2VBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciB0aGUgY2x1c3RlcidzIGFkbWluIHVzZXIgY3JlZGVudGlhbHMgc2VjcmV0LlxuICovXG5NYXN0ZXJQYXNzd29yZFNlY3JldEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgQW1hem9uIFJlZHNoaWZ0IGVuZ2luZSBzb2Z0d2FyZSB0aGF0IHlvdSB3YW50IHRvIGRlcGxveSBvbiB0aGUgY2x1c3Rlci5UaGUgdmVyc2lvbiBzZWxlY3RlZCBydW5zIG9uIGFsbCB0aGUgbm9kZXMgaW4gdGhlIGNsdXN0ZXIuXG4gKi9cbkNsdXN0ZXJWZXJzaW9uPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgSFNNIGNvbmZpZ3VyYXRpb24gdGhhdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gdGhlIEFtYXpvbiBSZWRzaGlmdCBjbHVzdGVyIGNhbiB1c2UgdG8gcmV0cmlldmUgYW5kIHN0b3JlIGtleXMgaW4gYW4gSFNNLlxuICovXG5Ic21Db25maWd1cmF0aW9uSWRlbnRpZmllcj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgd2Vla2x5IHRpbWUgcmFuZ2UgKGluIFVUQykgZHVyaW5nIHdoaWNoIGF1dG9tYXRlZCBjbHVzdGVyIG1haW50ZW5hbmNlIGNhbiBvY2N1ci5cbiAqL1xuUHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c/OiBzdHJpbmdcbi8qKlxuICogQSB0aW1lc3RhbXAgaW5kaWNhdGluZyB0aGUgc3RhcnQgdGltZSBmb3IgdGhlIGRlZmVycmVkIG1haW50ZW5hbmNlIHdpbmRvdy5cbiAqL1xuRGVmZXJNYWludGVuYW5jZVN0YXJ0VGltZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUgY2x1c3Rlci4gV2hlbiBjbHVzdGVyIHR5cGUgaXMgc3BlY2lmaWVkIGFzIHNpbmdsZS1ub2RlLCB0aGUgTnVtYmVyT2ZOb2RlcyBwYXJhbWV0ZXIgaXMgbm90IHJlcXVpcmVkIGFuZCBpZiBtdWx0aS1ub2RlLCB0aGUgTnVtYmVyT2ZOb2RlcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWRcbiAqL1xuQ2x1c3RlclR5cGU6IHN0cmluZ1xuLyoqXG4gKiBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByZXNpemUgb3BlcmF0aW9uIGlzIHVzaW5nIHRoZSBjbGFzc2ljIHJlc2l6ZSBwcm9jZXNzLiBJZiB5b3UgZG9uJ3QgcHJvdmlkZSB0aGlzIHBhcmFtZXRlciBvciBzZXQgdGhlIHZhbHVlIHRvIGZhbHNlICwgdGhlIHJlc2l6ZSB0eXBlIGlzIGVsYXN0aWMuXG4gKi9cbkNsYXNzaWM/OiBib29sZWFuXG4vKipcbiAqIFRoZSBJRCBvZiB0aGUgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSBrZXkgdXNlZCB0byBlbmNyeXB0IGFuZCBzdG9yZSB0aGUgY2x1c3RlcidzIGFkbWluIHVzZXIgY3JlZGVudGlhbHMgc2VjcmV0LlxuICovXG5NYXN0ZXJQYXNzd29yZFNlY3JldEttc0tleUlkPzogKHtcbltrOiBzdHJpbmddOiB1bmtub3duXG59ICYgc3RyaW5nKVxuLyoqXG4gKiBBbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGR1cmF0aW9uIG9mIHRoZSBtYWludGVuYW5jZSB3aW5kb3cgaW4gZGF5cy4gSWYgeW91IHNwZWNpZnkgYSBkdXJhdGlvbiwgeW91IGNhbid0IHNwZWNpZnkgYW4gZW5kIHRpbWUuIFRoZSBkdXJhdGlvbiBtdXN0IGJlIDYwIGRheXMgb3IgbGVzcy5cbiAqL1xuRGVmZXJNYWludGVuYW5jZUR1cmF0aW9uPzogbnVtYmVyXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBmaXJzdCBkYXRhYmFzZSB0byBiZSBjcmVhdGVkIHdoZW4gdGhlIGNsdXN0ZXIgaXMgY3JlYXRlZC4gVG8gY3JlYXRlIGFkZGl0aW9uYWwgZGF0YWJhc2VzIGFmdGVyIHRoZSBjbHVzdGVyIGlzIGNyZWF0ZWQsIGNvbm5lY3QgdG8gdGhlIGNsdXN0ZXIgd2l0aCBhIFNRTCBjbGllbnQgYW5kIHVzZSBTUUwgY29tbWFuZHMgdG8gY3JlYXRlIGEgZGF0YWJhc2UuXG4gKi9cbkRCTmFtZTogc3RyaW5nXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgZGF5cyB0byByZXRhaW4gYXV0b21hdGVkIHNuYXBzaG90cyBpbiB0aGUgZGVzdGluYXRpb24gcmVnaW9uIGFmdGVyIHRoZXkgYXJlIGNvcGllZCBmcm9tIHRoZSBzb3VyY2UgcmVnaW9uLiBcbiAqIFxuICogIERlZmF1bHQgaXMgNy4gXG4gKiBcbiAqICBDb25zdHJhaW50czogTXVzdCBiZSBhdCBsZWFzdCAxIGFuZCBubyBtb3JlIHRoYW4gMzUuXG4gKi9cblNuYXBzaG90Q29weVJldGVudGlvblBlcmlvZD86IG51bWJlclxufVxuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludCB7XG5BZGRyZXNzPzogc3RyaW5nXG5Qb3J0Pzogc3RyaW5nXG59XG4vKipcbiAqIEEga2V5LXZhbHVlIHBhaXIgdG8gYXNzb2NpYXRlIHdpdGggYSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuLyoqXG4gKiBUaGUgdmFsdWUgZm9yIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMSB0byAyNTUgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIGtleSBuYW1lIG9mIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMSB0byAxMjcgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uXG4gKi9cbktleTogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdQcm9wZXJ0aWVzIHtcbkJ1Y2tldE5hbWU/OiBzdHJpbmdcblMzS2V5UHJlZml4Pzogc3RyaW5nXG5Mb2dEZXN0aW5hdGlvblR5cGU/OiBzdHJpbmdcbi8qKlxuICogQG1heEl0ZW1zIDNcbiAqL1xuTG9nRXhwb3J0cz86IHN0cmluZ1tdXG59XG4iXX0=
|
|
@@ -38,6 +38,8 @@ export interface _AWS_S3_BUCKET {
|
|
|
38
38
|
* If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you need to replace the resource, specify a new name.
|
|
39
39
|
*/
|
|
40
40
|
BucketName?: string;
|
|
41
|
+
BucketNamePrefix?: string;
|
|
42
|
+
BucketNamespace?: ("global" | "account-regional");
|
|
41
43
|
CorsConfiguration?: CorsConfiguration;
|
|
42
44
|
/**
|
|
43
45
|
* Defines how Amazon S3 handles Intelligent-Tiering storage.
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXMzLWJ1Y2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1zMy1idWNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIG9iamVjdCBlbmNyeXB0aW9uIHR5cGUgdGhhdCB5b3Ugd2FudCB0byBibG9jayBvciB1bmJsb2NrIGZvciBhbiBBbWF6b24gUzMgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC5cbiAqICAgQ3VycmVudGx5LCB0aGlzIHBhcmFtZXRlciBvbmx5IHN1cHBvcnRzIGJsb2NraW5nIG9yIHVuYmxvY2tpbmcgc2VydmVyIHNpZGUgZW5jcnlwdGlvbiB3aXRoIGN1c3RvbWVyLXByb3ZpZGVkIGtleXMgKFNTRS1DKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgU1NFLUMsIHNlZSBbVXNpbmcgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIGN1c3RvbWVyLXByb3ZpZGVkIGtleXMgKFNTRS1DKV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvU2VydmVyU2lkZUVuY3J5cHRpb25DdXN0b21lcktleXMuaHRtbCkuXG4gKi9cbmV4cG9ydCB0eXBlIEJsb2NrZWRFbmNyeXB0aW9uVHlwZUxpc3QgPSAoXCJOT05FXCIgfCBcIlNTRS1DXCIpW11cbi8qKlxuICogQW1hem9uIFMzIGtleSBmb3JtYXQgZm9yIGxvZyBvYmplY3RzLiBPbmx5IG9uZSBmb3JtYXQsIGVpdGhlciBQYXJ0aXRpb25lZFByZWZpeCBvciBTaW1wbGVQcmVmaXgsIGlzIGFsbG93ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFRhcmdldE9iamVjdEtleUZvcm1hdCA9ICh7XG4vKipcbiAqIFRoaXMgZm9ybWF0IGRlZmF1bHRzIHRoZSBwcmVmaXggdG8gdGhlIGdpdmVuIGxvZyBmaWxlIHByZWZpeCBmb3IgZGVsaXZlcmluZyBzZXJ2ZXIgYWNjZXNzIGxvZyBmaWxlLlxuICovXG5TaW1wbGVQcmVmaXg6IHtcblxufVxufSB8IHtcblBhcnRpdGlvbmVkUHJlZml4OiBQYXJ0aXRpb25lZFByZWZpeFxufSlcblxuLyoqXG4gKiBUaGUgYGBBV1M6OlMzOjpCdWNrZXRgYCByZXNvdXJjZSBjcmVhdGVzIGFuIEFtYXpvbiBTMyBidWNrZXQgaW4gdGhlIHNhbWUgQVdTIFJlZ2lvbiB3aGVyZSB5b3UgY3JlYXRlIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gKiAgVG8gY29udHJvbCBob3cgQVdTIENsb3VkRm9ybWF0aW9uIGhhbmRsZXMgdGhlIGJ1Y2tldCB3aGVuIHRoZSBzdGFjayBpcyBkZWxldGVkLCB5b3UgY2FuIHNldCBhIGRlbGV0aW9uIHBvbGljeSBmb3IgeW91ciBidWNrZXQuIFlvdSBjYW4gY2hvb3NlIHRvICpyZXRhaW4qIHRoZSBidWNrZXQgb3IgdG8gKmRlbGV0ZSogdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRGVsZXRpb25Qb2xpY3kgQXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtYXR0cmlidXRlLWRlbGV0aW9ucG9saWN5Lmh0bWwpLlxuICogICBZb3UgY2FuIG9ubHkgZGVsZXRlIGVtcHR5IGJ1Y2tldHMuIERlbGV0aW9uIGZhaWxzIGZvciBidWNrZXRzIHRoYXQgaGF2ZSBjb250ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX1MzX0JVQ0tFVCB7XG5BY2NlbGVyYXRlQ29uZmlndXJhdGlvbj86IEFjY2VsZXJhdGVDb25maWd1cmF0aW9uXG4vKipcbiAqIFRoaXMgaXMgYSBsZWdhY3kgcHJvcGVydHksIGFuZCBpdCBpcyBub3QgcmVjb21tZW5kZWQgZm9yIG1vc3QgdXNlIGNhc2VzLiBBIG1ham9yaXR5IG9mIG1vZGVybiB1c2UgY2FzZXMgaW4gQW1hem9uIFMzIG5vIGxvbmdlciByZXF1aXJlIHRoZSB1c2Ugb2YgQUNMcywgYW5kIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBrZWVwIEFDTHMgZGlzYWJsZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbnRyb2xsaW5nIG9iamVjdCBvd25lcnNoaXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS8vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9hYm91dC1vYmplY3Qtb3duZXJzaGlwLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICogICBBIGNhbm5lZCBhY2Nlc3MgY29udHJvbCBsaXN0IChBQ0wpIHRoYXQgZ3JhbnRzIHByZWRlZmluZWQgcGVybWlzc2lvbnMgdG8gdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY2FubmVkIEFDTHMsIHNlZSBbQ2FubmVkIEFDTF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYWNsLW92ZXJ2aWV3Lmh0bWwjY2FubmVkLWFjbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKiAgIFMzIGJ1Y2tldHMgYXJlIGNyZWF0ZWQgd2l0aCBBQ0xzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRoZXJlZm9yZSwgdW5sZXNzIHlvdSBleHBsaWNpdGx5IHNldCB0aGUgW0FXUzo6UzM6Ok93bmVyc2hpcENvbnRyb2xzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LW93bmVyc2hpcGNvbnRyb2xzLmh0bWwpIHByb3BlcnR5IHRvIGVuYWJsZSBBQ0xzLCB5b3VyIHJlc291cmNlIHdpbGwgZmFpbCB0byBkZXBsb3kgd2l0aCBhbnkgdmFsdWUgb3RoZXIgdGhhbiBQcml2YXRlLiBVc2UgY2FzZXMgcmVxdWlyaW5nIEFDTHMgYXJlIHVuY29tbW9uLlxuICogICBUaGUgbWFqb3JpdHkgb2YgYWNjZXNzIGNvbnRyb2wgY29uZmlndXJhdGlvbnMgY2FuIGJlIHN1Y2Nlc3NmdWxseSBhbmQgbW9yZSBlYXNpbHkgYWNoaWV2ZWQgd2l0aCBidWNrZXQgcG9saWNpZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FXUzo6UzM6OkJ1Y2tldFBvbGljeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLXBvbGljeS5odG1sKS4gRm9yIGV4YW1wbGVzIG9mIGNvbW1vbiBwb2xpY3kgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBTMyBTZXJ2ZXIgQWNjZXNzIExvZ3MgYnVja2V0cyBhbmQgbW9yZSwgc2VlIFtCdWNrZXQgcG9saWN5IGV4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9leGFtcGxlLWJ1Y2tldC1wb2xpY2llcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuQWNjZXNzQ29udHJvbD86IChcIkF1dGhlbnRpY2F0ZWRSZWFkXCIgfCBcIkF3c0V4ZWNSZWFkXCIgfCBcIkJ1Y2tldE93bmVyRnVsbENvbnRyb2xcIiB8IFwiQnVja2V0T3duZXJSZWFkXCIgfCBcIkxvZ0RlbGl2ZXJ5V3JpdGVcIiB8IFwiUHJpdmF0ZVwiIHwgXCJQdWJsaWNSZWFkXCIgfCBcIlB1YmxpY1JlYWRXcml0ZVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGFueSBhbmFseXNlcyBmb3IgdGhlIGFuYWx5dGljcyBmaWx0ZXIgb2YgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuQW5hbHl0aWNzQ29uZmlndXJhdGlvbnM/OiBBbmFseXRpY3NDb25maWd1cmF0aW9uW11cbkJ1Y2tldEVuY3J5cHRpb24/OiBCdWNrZXRFbmNyeXB0aW9uXG4vKipcbiAqIEEgbmFtZSBmb3IgdGhlIGJ1Y2tldC4gSWYgeW91IGRvbid0IHNwZWNpZnkgYSBuYW1lLCBBV1MgQ2xvdWRGb3JtYXRpb24gZ2VuZXJhdGVzIGEgdW5pcXVlIElEIGFuZCB1c2VzIHRoYXQgSUQgZm9yIHRoZSBidWNrZXQgbmFtZS4gVGhlIGJ1Y2tldCBuYW1lIG11c3QgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBwZXJpb2RzICguKSwgYW5kIGRhc2hlcyAoLSkgYW5kIG11c3QgZm9sbG93IFtBbWF6b24gUzMgYnVja2V0IHJlc3RyaWN0aW9ucyBhbmQgbGltaXRhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L0J1Y2tldFJlc3RyaWN0aW9ucy5odG1sKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUnVsZXMgZm9yIG5hbWluZyBBbWF6b24gUzMgYnVja2V0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvYnVja2V0bmFtaW5ncnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouIFxuICogICBJZiB5b3Ugc3BlY2lmeSBhIG5hbWUsIHlvdSBjYW4ndCBwZXJmb3JtIHVwZGF0ZXMgdGhhdCByZXF1aXJlIHJlcGxhY2VtZW50IG9mIHRoaXMgcmVzb3VyY2UuIFlvdSBjYW4gcGVyZm9ybSB1cGRhdGVzIHRoYXQgcmVxdWlyZSBubyBvciBzb21lIGludGVycnVwdGlvbi4gSWYgeW91IG5lZWQgdG8gcmVwbGFjZSB0aGUgcmVzb3VyY2UsIHNwZWNpZnkgYSBuZXcgbmFtZS5cbiAqL1xuQnVja2V0TmFtZT86IHN0cmluZ1xuQ29yc0NvbmZpZ3VyYXRpb24/OiBDb3JzQ29uZmlndXJhdGlvblxuLyoqXG4gKiBEZWZpbmVzIGhvdyBBbWF6b24gUzMgaGFuZGxlcyBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UuXG4gKi9cbkludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25zPzogSW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbltdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgUzMgSW52ZW50b3J5IGNvbmZpZ3VyYXRpb24gZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dFVCBCdWNrZXQgaW52ZW50b3J5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0R0VUSW52ZW50b3J5Q29uZmlnLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5JbnZlbnRvcnlDb25maWd1cmF0aW9ucz86IEludmVudG9yeUNvbmZpZ3VyYXRpb25bXVxuTGlmZWN5Y2xlQ29uZmlndXJhdGlvbj86IExpZmVjeWNsZUNvbmZpZ3VyYXRpb25cbkxvZ2dpbmdDb25maWd1cmF0aW9uPzogTG9nZ2luZ0NvbmZpZ3VyYXRpb25cbi8qKlxuICogU3BlY2lmaWVzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZvciB0aGUgQ2xvdWRXYXRjaCByZXF1ZXN0IG1ldHJpY3MgKHNwZWNpZmllZCBieSB0aGUgbWV0cmljcyBjb25maWd1cmF0aW9uIElEKSBmcm9tIGFuIEFtYXpvbiBTMyBidWNrZXQuIElmIHlvdSdyZSB1cGRhdGluZyBhbiBleGlzdGluZyBtZXRyaWNzIGNvbmZpZ3VyYXRpb24sIG5vdGUgdGhhdCB0aGlzIGlzIGEgZnVsbCByZXBsYWNlbWVudCBvZiB0aGUgZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLiBJZiB5b3UgZG9uJ3QgaW5jbHVkZSB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8ga2VlcCwgdGhleSBhcmUgZXJhc2VkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVE1ldHJpY0NvbmZpZ3VyYXRpb24uaHRtbCkuXG4gKi9cbk1ldHJpY3NDb25maWd1cmF0aW9ucz86IE1ldHJpY3NDb25maWd1cmF0aW9uW11cbk1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uPzogTWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb25cbk1ldGFkYXRhQ29uZmlndXJhdGlvbj86IE1ldGFkYXRhQ29uZmlndXJhdGlvblxuTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbj86IE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25cbk9iamVjdExvY2tDb25maWd1cmF0aW9uPzogT2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBidWNrZXQgaGFzIGFuIE9iamVjdCBMb2NrIGNvbmZpZ3VyYXRpb24gZW5hYmxlZC4gRW5hYmxlIGBgT2JqZWN0TG9ja0VuYWJsZWRgYCB3aGVuIHlvdSBhcHBseSBgYE9iamVjdExvY2tDb25maWd1cmF0aW9uYGAgdG8gYSBidWNrZXQuXG4gKi9cbk9iamVjdExvY2tFbmFibGVkPzogYm9vbGVhblxuT3duZXJzaGlwQ29udHJvbHM/OiBPd25lcnNoaXBDb250cm9sc1xuUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uPzogUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uXG5SZXBsaWNhdGlvbkNvbmZpZ3VyYXRpb24/OiBSZXBsaWNhdGlvbkNvbmZpZ3VyYXRpb25cbi8qKlxuICogQW4gYXJiaXRyYXJ5IHNldCBvZiB0YWdzIChrZXktdmFsdWUgcGFpcnMpIGZvciB0aGlzIFMzIGJ1Y2tldC5cbiAqL1xuVGFncz86IFRhZ1tdXG4vKipcbiAqIFRoZSBBQkFDIHN0YXR1cyBvZiB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC4gV2hlbiBBQkFDIGlzIGVuYWJsZWQgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0LCB5b3UgY2FuIHVzZSB0YWdzIHRvIG1hbmFnZSBhY2Nlc3MgdG8gdGhlIGdlbmVyYWwgcHVycG9zZSBidWNrZXRzIGFzIHdlbGwgYXMgZm9yIGNvc3QgdHJhY2tpbmcgcHVycG9zZXMuIFdoZW4gQUJBQyBpcyBkaXNhYmxlZCBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBidWNrZXRzLCB5b3UgY2FuIG9ubHkgdXNlIHRhZ3MgZm9yIGNvc3QgdHJhY2tpbmcgcHVycG9zZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzaW5nIHRhZ3Mgd2l0aCBTMyBnZW5lcmFsIHB1cnBvc2UgYnVja2V0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvYnVja2V0cy10YWdnaW5nLmh0bWwpLlxuICovXG5BYmFjU3RhdHVzPzogKFwiRW5hYmxlZFwiIHwgXCJEaXNhYmxlZFwiKVxuVmVyc2lvbmluZ0NvbmZpZ3VyYXRpb24/OiBWZXJzaW9uaW5nQ29uZmlndXJhdGlvblxuV2Vic2l0ZUNvbmZpZ3VyYXRpb24/OiBXZWJzaXRlQ29uZmlndXJhdGlvblxuQXJuPzogc3RyaW5nXG5Eb21haW5OYW1lPzogc3RyaW5nXG5EdWFsU3RhY2tEb21haW5OYW1lPzogc3RyaW5nXG5SZWdpb25hbERvbWFpbk5hbWU/OiBzdHJpbmdcbldlYnNpdGVVUkw/OiBzdHJpbmdcbn1cbi8qKlxuICogQ29uZmlndXJlcyB0aGUgdHJhbnNmZXIgYWNjZWxlcmF0aW9uIHN0YXRlIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gUzMgVHJhbnNmZXIgQWNjZWxlcmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi90cmFuc2Zlci1hY2NlbGVyYXRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHRyYW5zZmVyIGFjY2VsZXJhdGlvbiBzdGF0dXMgb2YgdGhlIGJ1Y2tldC5cbiAqL1xuQWNjZWxlcmF0aW9uU3RhdHVzOiAoXCJFbmFibGVkXCIgfCBcIlN1c3BlbmRlZFwiKVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGFueSBhbmFseXNlcyBmb3IgdGhlIGFuYWx5dGljcyBmaWx0ZXIgb2YgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbmFseXRpY3NDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIHRhZ3MgdG8gdXNlIHdoZW4gZXZhbHVhdGluZyBhbiBhbmFseXRpY3MgZmlsdGVyLlxuICogIFRoZSBhbmFseXRpY3Mgb25seSBpbmNsdWRlcyBvYmplY3RzIHRoYXQgbWVldCB0aGUgZmlsdGVyJ3MgY3JpdGVyaWEuIElmIG5vIGZpbHRlciBpcyBzcGVjaWZpZWQsIGFsbCBvZiB0aGUgY29udGVudHMgb2YgdGhlIGJ1Y2tldCBhcmUgaW5jbHVkZWQgaW4gdGhlIGFuYWx5c2lzLlxuICovXG5UYWdGaWx0ZXJzPzogVGFnRmlsdGVyW11cblN0b3JhZ2VDbGFzc0FuYWx5c2lzOiBTdG9yYWdlQ2xhc3NBbmFseXNpc1xuLyoqXG4gKiBUaGUgSUQgdGhhdCBpZGVudGlmaWVzIHRoZSBhbmFseXRpY3MgY29uZmlndXJhdGlvbi5cbiAqL1xuSWQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgcHJlZml4IHRoYXQgYW4gb2JqZWN0IG11c3QgaGF2ZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYW5hbHl0aWNzIHJlc3VsdHMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGFncyB0byB1c2UgdG8gaWRlbnRpZnkgYSBzdWJzZXQgb2Ygb2JqZWN0cyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ2F0ZWdvcml6aW5nIHlvdXIgc3RvcmFnZSB1c2luZyB0YWdzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3QtdGFnZ2luZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTaW1wbGUgU3RvcmFnZSBTZXJ2aWNlIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0ZpbHRlciB7XG4vKipcbiAqIFRoZSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIENvbnRhaW5zIGRhdGEgcmVsYXRlZCB0byBhY2Nlc3MgcGF0dGVybnMgdG8gYmUgY29sbGVjdGVkIGFuZCBtYWRlIGF2YWlsYWJsZSB0byBhbmFseXplIHRoZSB0cmFkZW9mZnMgYmV0d2VlbiBkaWZmZXJlbnQgc3RvcmFnZSBjbGFzc2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VDbGFzc0FuYWx5c2lzIHtcbkRhdGFFeHBvcnQ/OiBEYXRhRXhwb3J0XG59XG4vKipcbiAqIFNwZWNpZmllcyBob3cgZGF0YSByZWxhdGVkIHRvIHRoZSBzdG9yYWdlIGNsYXNzIGFuYWx5c2lzIGZvciBhbiBBbWF6b24gUzMgYnVja2V0IHNob3VsZCBiZSBleHBvcnRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhRXhwb3J0IHtcbkRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgb3V0cHV0IHNjaGVtYSB0byB1c2Ugd2hlbiBleHBvcnRpbmcgZGF0YS4gTXVzdCBiZSBgYFZfMWBgLlxuICovXG5PdXRwdXRTY2hlbWFWZXJzaW9uOiBcIlZfMVwiXG59XG4vKipcbiAqIFRoZSBwbGFjZSB0byBzdG9yZSB0aGUgZGF0YSBmb3IgYW4gYW5hbHlzaXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdGluYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGJ1Y2tldCB0byB3aGljaCBkYXRhIGlzIGV4cG9ydGVkLlxuICovXG5CdWNrZXRBcm46IHN0cmluZ1xuLyoqXG4gKiBUaGUgYWNjb3VudCBJRCB0aGF0IG93bnMgdGhlIGRlc3RpbmF0aW9uIFMzIGJ1Y2tldC4gSWYgbm8gYWNjb3VudCBJRCBpcyBwcm92aWRlZCwgdGhlIG93bmVyIGlzIG5vdCB2YWxpZGF0ZWQgYmVmb3JlIGV4cG9ydGluZyBkYXRhLlxuICogICAgQWx0aG91Z2ggdGhpcyB2YWx1ZSBpcyBvcHRpb25hbCwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHRoYXQgeW91IHNldCBpdCB0byBoZWxwIHByZXZlbnQgcHJvYmxlbXMgaWYgdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldCBvd25lcnNoaXAgY2hhbmdlcy5cbiAqL1xuQnVja2V0QWNjb3VudElkPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZmlsZSBmb3JtYXQgdXNlZCB3aGVuIGV4cG9ydGluZyBkYXRhIHRvIEFtYXpvbiBTMy5cbiAqICAqQWxsb3dlZCB2YWx1ZXMqOiBgYENTVmBgIHwgYGBPUkNgYCB8IGBgUGFycXVldGBgXG4gKi9cbkZvcm1hdDogKFwiQ1NWXCIgfCBcIk9SQ1wiIHwgXCJQYXJxdWV0XCIpXG4vKipcbiAqIFRoZSBwcmVmaXggdG8gdXNlIHdoZW4gZXhwb3J0aW5nIGRhdGEuIFRoZSBwcmVmaXggaXMgcHJlcGVuZGVkIHRvIGFsbCByZXN1bHRzLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIGRlZmF1bHQgZW5jcnlwdGlvbiBmb3IgYSBidWNrZXQgdXNpbmcgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEFtYXpvbiBTMy1tYW5hZ2VkIGtleXMgKFNTRS1TMyksIEFXUyBLTVMtbWFuYWdlZCBrZXlzIChTU0UtS01TKSwgb3IgZHVhbC1sYXllciBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggS01TLW1hbmFnZWQga2V5cyAoRFNTRS1LTVMpLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEFtYXpvbiBTMyBkZWZhdWx0IGVuY3J5cHRpb24gZmVhdHVyZSwgc2VlIFtBbWF6b24gUzMgRGVmYXVsdCBFbmNyeXB0aW9uIGZvciBTMyBCdWNrZXRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9idWNrZXQtZW5jcnlwdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWNrZXRFbmNyeXB0aW9uIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IHNlcnZlci1zaWRlLWVuY3J5cHRpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuU2VydmVyU2lkZUVuY3J5cHRpb25Db25maWd1cmF0aW9uOiBTZXJ2ZXJTaWRlRW5jcnlwdGlvblJ1bGVbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uLlxuICogICAgKyAgKkdlbmVyYWwgcHVycG9zZSBidWNrZXRzKiAtIElmIHlvdSdyZSBzcGVjaWZ5aW5nIGEgY3VzdG9tZXIgbWFuYWdlZCBLTVMga2V5LCB3ZSByZWNvbW1lbmQgdXNpbmcgYSBmdWxseSBxdWFsaWZpZWQgS01TIGtleSBBUk4uIElmIHlvdSB1c2UgYSBLTVMga2V5IGFsaWFzIGluc3RlYWQsIHRoZW4gS01TIHJlc29sdmVzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0ZXLigJlzIGFjY291bnQuIFRoaXMgYmVoYXZpb3IgY2FuIHJlc3VsdCBpbiBkYXRhIHRoYXQncyBlbmNyeXB0ZWQgd2l0aCBhIEtNUyBrZXkgdGhhdCBiZWxvbmdzIHRvIHRoZSByZXF1ZXN0ZXIsIGFuZCBub3QgdGhlIGJ1Y2tldCBvd25lci5cbiAqICAgKyAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFdoZW4geW91IHNwZWNpZnkgYW4gW2N1c3RvbWVyIG1hbmFnZWQga2V5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9jb25jZXB0cy5odG1sI2N1c3RvbWVyLWNtaykgZm9yIGVuY3J5cHRpb24gaW4geW91ciBkaXJlY3RvcnkgYnVja2V0LCBvbmx5IHVzZSB0aGUga2V5IElEIG9yIGtleSBBUk4uIFRoZSBrZXkgYWxpYXMgZm9ybWF0IG9mIHRoZSBLTVMga2V5IGlzbid0IHN1cHBvcnRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJTaWRlRW5jcnlwdGlvblJ1bGUge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIHVzZSBhbiBTMyBCdWNrZXQgS2V5IHdpdGggc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB1c2luZyBLTVMgKFNTRS1LTVMpIGZvciBuZXcgb2JqZWN0cyBpbiB0aGUgYnVja2V0LiBFeGlzdGluZyBvYmplY3RzIGFyZSBub3QgYWZmZWN0ZWQuIFNldHRpbmcgdGhlIGBgQnVja2V0S2V5RW5hYmxlZGBgIGVsZW1lbnQgdG8gYGB0cnVlYGAgY2F1c2VzIEFtYXpvbiBTMyB0byB1c2UgYW4gUzMgQnVja2V0IEtleS4gQnkgZGVmYXVsdCwgUzMgQnVja2V0IEtleSBpcyBub3QgZW5hYmxlZC5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gUzMgQnVja2V0IEtleXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2J1Y2tldC1rZXkuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbkJ1Y2tldEtleUVuYWJsZWQ/OiBib29sZWFuXG5TZXJ2ZXJTaWRlRW5jcnlwdGlvbkJ5RGVmYXVsdD86IFNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0XG5CbG9ja2VkRW5jcnlwdGlvblR5cGVzPzogQmxvY2tlZEVuY3J5cHRpb25UeXBlc1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB0byBhcHBseSB0byBuZXcgb2JqZWN0cyBpbiB0aGUgYnVja2V0LiBJZiBhIFBVVCBPYmplY3QgcmVxdWVzdCBkb2Vzbid0IHNwZWNpZnkgYW55IHNlcnZlci1zaWRlIGVuY3J5cHRpb24sIHRoaXMgZGVmYXVsdCBlbmNyeXB0aW9uIHdpbGwgYmUgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkJ5RGVmYXVsdCB7XG4vKipcbiAqIEFXUyBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIChLTVMpIGN1c3RvbWVyIG1hbmFnZWQga2V5IElEIHRvIHVzZSBmb3IgdGhlIGRlZmF1bHQgZW5jcnlwdGlvbi4gXG4gKiAgICArICAqR2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMqIC0gVGhpcyBwYXJhbWV0ZXIgaXMgYWxsb3dlZCBpZiBhbmQgb25seSBpZiBgYFNTRUFsZ29yaXRobWBgIGlzIHNldCB0byBgYGF3czprbXNgYCBvciBgYGF3czprbXM6ZHNzZWBgLlxuICogICArICAqRGlyZWN0b3J5IGJ1Y2tldHMqIC0gVGhpcyBwYXJhbWV0ZXIgaXMgYWxsb3dlZCBpZiBhbmQgb25seSBpZiBgYFNTRUFsZ29yaXRobWBgIGlzIHNldCB0byBgYGF3czprbXNgYC5cbiAqICAgXG4gKiAgIFlvdSBjYW4gc3BlY2lmeSB0aGUga2V5IElELCBrZXkgYWxpYXMsIG9yIHRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgS01TIGtleS5cbiAqICAgKyAgS2V5IElEOiBgYDEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYmBgXG4gKiAgICsgIEtleSBBUk46IGBgYXJuOmF3czprbXM6dXMtZWFzdC0yOjExMTEyMjIyMzMzMzprZXkvMTIzNGFiY2QtMTJhYi0zNGNkLTU2ZWYtMTIzNDU2Nzg5MGFiYGBcbiAqICAgKyAgS2V5IEFsaWFzOiBgYGFsaWFzL2FsaWFzLW5hbWVgYFxuICogICBcbiAqICBJZiB5b3UgYXJlIHVzaW5nIGVuY3J5cHRpb24gd2l0aCBjcm9zcy1hY2NvdW50IG9yIEFXUyBzZXJ2aWNlIG9wZXJhdGlvbnMsIHlvdSBtdXN0IHVzZSBhIGZ1bGx5IHF1YWxpZmllZCBLTVMga2V5IEFSTi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbVXNpbmcgZW5jcnlwdGlvbiBmb3IgY3Jvc3MtYWNjb3VudCBvcGVyYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9idWNrZXQtZW5jcnlwdGlvbi5odG1sI2J1Y2tldC1lbmNyeXB0aW9uLXVwZGF0ZS1idWNrZXQtcG9saWN5KS5cbiAqICAgICsgICpHZW5lcmFsIHB1cnBvc2UgYnVja2V0cyogLSBJZiB5b3UncmUgc3BlY2lmeWluZyBhIGN1c3RvbWVyIG1hbmFnZWQgS01TIGtleSwgd2UgcmVjb21tZW5kIHVzaW5nIGEgZnVsbHkgcXVhbGlmaWVkIEtNUyBrZXkgQVJOLiBJZiB5b3UgdXNlIGEgS01TIGtleSBhbGlhcyBpbnN0ZWFkLCB0aGVuIEtNUyByZXNvbHZlcyB0aGUga2V5IHdpdGhpbiB0aGUgcmVxdWVzdGVy4oCZcyBhY2NvdW50LiBUaGlzIGJlaGF2aW9yIGNhbiByZXN1bHQgaW4gZGF0YSB0aGF0J3MgZW5jcnlwdGVkIHdpdGggYSBLTVMga2V5IHRoYXQgYmVsb25ncyB0byB0aGUgcmVxdWVzdGVyLCBhbmQgbm90IHRoZSBidWNrZXQgb3duZXIuIEFsc28sIGlmIHlvdSB1c2UgYSBrZXkgSUQsIHlvdSBjYW4gcnVuIGludG8gYSBMb2dEZXN0aW5hdGlvbiB1bmRlbGl2ZXJhYmxlIGVycm9yIHdoZW4gY3JlYXRpbmcgYSBWUEMgZmxvdyBsb2cuIFxuICogICArICAqRGlyZWN0b3J5IGJ1Y2tldHMqIC0gV2hlbiB5b3Ugc3BlY2lmeSBhbiBbY3VzdG9tZXIgbWFuYWdlZCBrZXldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2NvbmNlcHRzLmh0bWwjY3VzdG9tZXItY21rKSBmb3IgZW5jcnlwdGlvbiBpbiB5b3VyIGRpcmVjdG9yeSBidWNrZXQsIG9ubHkgdXNlIHRoZSBrZXkgSUQgb3Iga2V5IEFSTi4gVGhlIGtleSBhbGlhcyBmb3JtYXQgb2YgdGhlIEtNUyBrZXkgaXNuJ3Qgc3VwcG9ydGVkLlxuICogICBcbiAqICAgIEFtYXpvbiBTMyBvbmx5IHN1cHBvcnRzIHN5bW1ldHJpYyBlbmNyeXB0aW9uIEtNUyBrZXlzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBc3ltbWV0cmljIGtleXMgaW4gS01TXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vL2ttcy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvc3ltbWV0cmljLWFzeW1tZXRyaWMuaHRtbCkgaW4gdGhlICpLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIERldmVsb3BlciBHdWlkZSouXG4gKi9cbktNU01hc3RlcktleUlEPzogc3RyaW5nXG4vKipcbiAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gYWxnb3JpdGhtIHRvIHVzZSBmb3IgdGhlIGRlZmF1bHQgZW5jcnlwdGlvbi5cbiAqICAgRm9yIGRpcmVjdG9yeSBidWNrZXRzLCB0aGVyZSBhcmUgb25seSB0d28gc3VwcG9ydGVkIHZhbHVlcyBmb3Igc2VydmVyLXNpZGUgZW5jcnlwdGlvbjogYGBBRVMyNTZgYCBhbmQgYGBhd3M6a21zYGAuXG4gKi9cblNTRUFsZ29yaXRobTogKFwiYXdzOmttc1wiIHwgXCJBRVMyNTZcIiB8IFwiYXdzOmttczpkc3NlXCIpXG59XG4vKipcbiAqIEEgYnVja2V0LWxldmVsIHNldHRpbmcgZm9yIEFtYXpvbiBTMyBnZW5lcmFsIHB1cnBvc2UgYnVja2V0cyB1c2VkIHRvIHByZXZlbnQgdGhlIHVwbG9hZCBvZiBuZXcgb2JqZWN0cyBlbmNyeXB0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdHlwZS4gRm9yIGV4YW1wbGUsIGJsb2NraW5nIGFuIGVuY3J5cHRpb24gdHlwZSB3aWxsIGJsb2NrIGBgUHV0T2JqZWN0YGAsIGBgQ29weU9iamVjdGBgLCBgYFBvc3RPYmplY3RgYCwgbXVsdGlwYXJ0IHVwbG9hZCwgYW5kIHJlcGxpY2F0aW9uIHJlcXVlc3RzIHRvIHRoZSBidWNrZXQgZm9yIG9iamVjdHMgd2l0aCB0aGUgc3BlY2lmaWVkIGVuY3J5cHRpb24gdHlwZS4gSG93ZXZlciwgeW91IGNhbiBjb250aW51ZSB0byByZWFkIGFuZCBsaXN0IGFueSBwcmUtZXhpc3Rpbmcgb2JqZWN0cyBhbHJlYWR5IGVuY3J5cHRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jcnlwdGlvbiB0eXBlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtCbG9ja2luZyBvciB1bmJsb2NraW5nIFNTRS1DIGZvciBhIGdlbmVyYWwgcHVycG9zZSBidWNrZXRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2Jsb2NraW5nLXVuYmxvY2tpbmctczMtYy1lbmNyeXB0aW9uLWdwYi5odG1sKS5cbiAqICAgQ3VycmVudGx5LCB0aGlzIHBhcmFtZXRlciBvbmx5IHN1cHBvcnRzIGJsb2NraW5nIG9yIHVuYmxvY2tpbmcgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIGN1c3RvbWVyLXByb3ZpZGVkIGtleXMgKFNTRS1DKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgU1NFLUMsIHNlZSBbVXNpbmcgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIGN1c3RvbWVyLXByb3ZpZGVkIGtleXMgKFNTRS1DKV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvU2VydmVyU2lkZUVuY3J5cHRpb25DdXN0b21lcktleXMuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2tlZEVuY3J5cHRpb25UeXBlcyB7XG5FbmNyeXB0aW9uVHlwZT86IEJsb2NrZWRFbmNyeXB0aW9uVHlwZUxpc3Rcbn1cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBjcm9zcy1vcmlnaW4gYWNjZXNzIGNvbmZpZ3VyYXRpb24gZm9yIG9iamVjdHMgaW4gYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRW5hYmxpbmcgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2NvcnMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29yc0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBBIHNldCBvZiBvcmlnaW5zIGFuZCBtZXRob2RzIChjcm9zcy1vcmlnaW4gYWNjZXNzIHRoYXQgeW91IHdhbnQgdG8gYWxsb3cpLiBZb3UgY2FuIGFkZCB1cCB0byAxMDAgcnVsZXMgdG8gdGhlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbkNvcnNSdWxlczogQ29yc1J1bGVbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBjcm9zcy1vcmlnaW4gYWNjZXNzIHJ1bGUgZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29yc1J1bGUge1xuLyoqXG4gKiBIZWFkZXJzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgYGBBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LUhlYWRlcnNgYCBoZWFkZXIuIFRoZXNlIGhlYWRlcnMgYXJlIGFsbG93ZWQgaW4gYSBwcmVmbGlnaHQgT1BUSU9OUyByZXF1ZXN0LiBJbiByZXNwb25zZSB0byBhbnkgcHJlZmxpZ2h0IE9QVElPTlMgcmVxdWVzdCwgQW1hem9uIFMzIHJldHVybnMgYW55IHJlcXVlc3RlZCBoZWFkZXJzIHRoYXQgYXJlIGFsbG93ZWQuXG4gKi9cbkFsbG93ZWRIZWFkZXJzPzogc3RyaW5nW11cbi8qKlxuICogQW4gSFRUUCBtZXRob2QgdGhhdCB5b3UgYWxsb3cgdGhlIG9yaWdpbiB0byBydW4uXG4gKiAgKkFsbG93ZWQgdmFsdWVzKjogYGBHRVRgYCB8IGBgUFVUYGAgfCBgYEhFQURgYCB8IGBgUE9TVGBgIHwgYGBERUxFVEVgYFxuICovXG5BbGxvd2VkTWV0aG9kczogKFwiR0VUXCIgfCBcIlBVVFwiIHwgXCJIRUFEXCIgfCBcIlBPU1RcIiB8IFwiREVMRVRFXCIpW11cbi8qKlxuICogT25lIG9yIG1vcmUgb3JpZ2lucyB5b3Ugd2FudCBjdXN0b21lcnMgdG8gYmUgYWJsZSB0byBhY2Nlc3MgdGhlIGJ1Y2tldCBmcm9tLlxuICovXG5BbGxvd2VkT3JpZ2luczogc3RyaW5nW11cbi8qKlxuICogT25lIG9yIG1vcmUgaGVhZGVycyBpbiB0aGUgcmVzcG9uc2UgdGhhdCB5b3Ugd2FudCBjdXN0b21lcnMgdG8gYmUgYWJsZSB0byBhY2Nlc3MgZnJvbSB0aGVpciBhcHBsaWNhdGlvbnMgKGZvciBleGFtcGxlLCBmcm9tIGEgSmF2YVNjcmlwdCBgYFhNTEh0dHBSZXF1ZXN0YGAgb2JqZWN0KS5cbiAqL1xuRXhwb3NlZEhlYWRlcnM/OiBzdHJpbmdbXVxuLyoqXG4gKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIHJ1bGUuIFRoZSB2YWx1ZSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAyNTUgY2hhcmFjdGVycy5cbiAqL1xuSWQ/OiBzdHJpbmdcbi8qKlxuICogVGhlIHRpbWUgaW4gc2Vjb25kcyB0aGF0IHlvdXIgYnJvd3NlciBpcyB0byBjYWNoZSB0aGUgcHJlZmxpZ2h0IHJlc3BvbnNlIGZvciB0aGUgc3BlY2lmaWVkIHJlc291cmNlLlxuICovXG5NYXhBZ2U/OiBudW1iZXJcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBTMyBJbnRlbGxpZ2VudC1UaWVyaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuXG4gKiAgRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBTMyBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UgY2xhc3MsIHNlZSBbU3RvcmFnZSBjbGFzcyBmb3IgYXV0b21hdGljYWxseSBvcHRpbWl6aW5nIGZyZXF1ZW50bHkgYW5kIGluZnJlcXVlbnRseSBhY2Nlc3NlZCBvYmplY3RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9zdG9yYWdlLWNsYXNzLWludHJvLmh0bWwjc2MtZHluYW1pYy1kYXRhLWFjY2VzcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBTMyBJbnRlbGxpZ2VudC1UaWVyaW5nIGNvbmZpZ3VyYXRpb24uXG4gKi9cbklkOiBzdHJpbmdcbi8qKlxuICogQW4gb2JqZWN0IGtleSBuYW1lIHByZWZpeCB0aGF0IGlkZW50aWZpZXMgdGhlIHN1YnNldCBvZiBvYmplY3RzIHRvIHdoaWNoIHRoZSBydWxlIGFwcGxpZXMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHN0YXR1cyBvZiB0aGUgY29uZmlndXJhdGlvbi5cbiAqL1xuU3RhdHVzOiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBhIGtleS12YWx1ZSBwYWlyLlxuICovXG5UYWdGaWx0ZXJzPzogVGFnRmlsdGVyW11cbi8qKlxuICogU3BlY2lmaWVzIGEgbGlzdCBvZiBTMyBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UgY2xhc3MgdGllcnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIEF0IGxlYXN0IG9uZSB0aWVyIG11c3QgYmUgZGVmaW5lZCBpbiB0aGUgbGlzdC4gQXQgbW9zdCwgeW91IGNhbiBzcGVjaWZ5IHR3byB0aWVycyBpbiB0aGUgbGlzdCwgb25lIGZvciBlYWNoIGF2YWlsYWJsZSBBY2Nlc3NUaWVyOiBgYEFSQ0hJVkVfQUNDRVNTYGAgYW5kIGBgREVFUF9BUkNISVZFX0FDQ0VTU2BgLlxuICogICBZb3Ugb25seSBuZWVkIEludGVsbGlnZW50IFRpZXJpbmcgQ29uZmlndXJhdGlvbiBlbmFibGVkIG9uIGEgYnVja2V0IGlmIHlvdSB3YW50IHRvIGF1dG9tYXRpY2FsbHkgbW92ZSBvYmplY3RzIHN0b3JlZCBpbiB0aGUgSW50ZWxsaWdlbnQtVGllcmluZyBzdG9yYWdlIGNsYXNzIHRvIEFyY2hpdmUgQWNjZXNzIG9yIERlZXAgQXJjaGl2ZSBBY2Nlc3MgdGllcnMuXG4gKi9cblRpZXJpbmdzOiBUaWVyaW5nW11cbn1cbi8qKlxuICogVGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcyBpcyBkZXNpZ25lZCB0byBvcHRpbWl6ZSBzdG9yYWdlIGNvc3RzIGJ5IGF1dG9tYXRpY2FsbHkgbW92aW5nIGRhdGEgdG8gdGhlIG1vc3QgY29zdC1lZmZlY3RpdmUgc3RvcmFnZSBhY2Nlc3MgdGllciwgd2l0aG91dCBhZGRpdGlvbmFsIG9wZXJhdGlvbmFsIG92ZXJoZWFkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRpZXJpbmcge1xuLyoqXG4gKiBTMyBJbnRlbGxpZ2VudC1UaWVyaW5nIGFjY2VzcyB0aWVyLiBTZWUgW1N0b3JhZ2UgY2xhc3MgZm9yIGF1dG9tYXRpY2FsbHkgb3B0aW1pemluZyBmcmVxdWVudGx5IGFuZCBpbmZyZXF1ZW50bHkgYWNjZXNzZWQgb2JqZWN0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvc3RvcmFnZS1jbGFzcy1pbnRyby5odG1sI3NjLWR5bmFtaWMtZGF0YS1hY2Nlc3MpIGZvciBhIGxpc3Qgb2YgYWNjZXNzIHRpZXJzIGluIHRoZSBTMyBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UgY2xhc3MuXG4gKi9cbkFjY2Vzc1RpZXI6IChcIkFSQ0hJVkVfQUNDRVNTXCIgfCBcIkRFRVBfQVJDSElWRV9BQ0NFU1NcIilcbi8qKlxuICogVGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBkYXlzIG9mIG5vIGFjY2VzcyBhZnRlciB3aGljaCBhbiBvYmplY3Qgd2lsbCBiZSBlbGlnaWJsZSB0byBiZSB0cmFuc2l0aW9uZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGllci4gVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRheXMgc3BlY2lmaWVkIGZvciBBcmNoaXZlIEFjY2VzcyB0aWVyIG11c3QgYmUgYXQgbGVhc3QgOTAgZGF5cyBhbmQgRGVlcCBBcmNoaXZlIEFjY2VzcyB0aWVyIG11c3QgYmUgYXQgbGVhc3QgMTgwIGRheXMuIFRoZSBtYXhpbXVtIGNhbiBiZSB1cCB0byAyIHllYXJzICg3MzAgZGF5cykuXG4gKi9cbkRheXM6IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIFMzIEludmVudG9yeSBjb25maWd1cmF0aW9uIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtHRVQgQnVja2V0IGludmVudG9yeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldEdFVEludmVudG9yeUNvbmZpZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZlbnRvcnlDb25maWd1cmF0aW9uIHtcbkRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvbjFcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGludmVudG9yeSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLiBJZiBzZXQgdG8gYGBUcnVlYGAsIGFuIGludmVudG9yeSBsaXN0IGlzIGdlbmVyYXRlZC4gSWYgc2V0IHRvIGBgRmFsc2VgYCwgbm8gaW52ZW50b3J5IGxpc3QgaXMgZ2VuZXJhdGVkLlxuICovXG5FbmFibGVkOiBib29sZWFuXG4vKipcbiAqIFRoZSBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBpbnZlbnRvcnkgY29uZmlndXJhdGlvbi5cbiAqL1xuSWQ6IHN0cmluZ1xuLyoqXG4gKiBPYmplY3QgdmVyc2lvbnMgdG8gaW5jbHVkZSBpbiB0aGUgaW52ZW50b3J5IGxpc3QuIElmIHNldCB0byBgYEFsbGBgLCB0aGUgbGlzdCBpbmNsdWRlcyBhbGwgdGhlIG9iamVjdCB2ZXJzaW9ucywgd2hpY2ggYWRkcyB0aGUgdmVyc2lvbi1yZWxhdGVkIGZpZWxkcyBgYFZlcnNpb25JZGBgLCBgYElzTGF0ZXN0YGAsIGFuZCBgYERlbGV0ZU1hcmtlcmBgIHRvIHRoZSBsaXN0LiBJZiBzZXQgdG8gYGBDdXJyZW50YGAsIHRoZSBsaXN0IGRvZXMgbm90IGNvbnRhaW4gdGhlc2UgdmVyc2lvbi1yZWxhdGVkIGZpZWxkcy5cbiAqL1xuSW5jbHVkZWRPYmplY3RWZXJzaW9uczogKFwiQWxsXCIgfCBcIkN1cnJlbnRcIilcbi8qKlxuICogQ29udGFpbnMgdGhlIG9wdGlvbmFsIGZpZWxkcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgaW52ZW50b3J5IHJlc3VsdHMuXG4gKi9cbk9wdGlvbmFsRmllbGRzPzogKFwiU2l6ZVwiIHwgXCJMYXN0TW9kaWZpZWREYXRlXCIgfCBcIlN0b3JhZ2VDbGFzc1wiIHwgXCJFVGFnXCIgfCBcIklzTXVsdGlwYXJ0VXBsb2FkZWRcIiB8IFwiUmVwbGljYXRpb25TdGF0dXNcIiB8IFwiRW5jcnlwdGlvblN0YXR1c1wiIHwgXCJPYmplY3RMb2NrUmV0YWluVW50aWxEYXRlXCIgfCBcIk9iamVjdExvY2tNb2RlXCIgfCBcIk9iamVjdExvY2tMZWdhbEhvbGRTdGF0dXNcIiB8IFwiSW50ZWxsaWdlbnRUaWVyaW5nQWNjZXNzVGllclwiIHwgXCJCdWNrZXRLZXlTdGF0dXNcIiB8IFwiQ2hlY2tzdW1BbGdvcml0aG1cIiB8IFwiT2JqZWN0QWNjZXNzQ29udHJvbExpc3RcIiB8IFwiT2JqZWN0T3duZXJcIiB8IFwiTGlmZWN5Y2xlRXhwaXJhdGlvbkRhdGVcIilbXVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGludmVudG9yeSBmaWx0ZXIgcHJlZml4LlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBzY2hlZHVsZSBmb3IgZ2VuZXJhdGluZyBpbnZlbnRvcnkgcmVzdWx0cy5cbiAqL1xuU2NoZWR1bGVGcmVxdWVuY3k6IChcIkRhaWx5XCIgfCBcIldlZWtseVwiKVxufVxuLyoqXG4gKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0byBwdWJsaXNoIHRoZSBpbnZlbnRvcnkgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0aW5hdGlvbjEge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGJ1Y2tldCB0byB3aGljaCBkYXRhIGlzIGV4cG9ydGVkLlxuICovXG5CdWNrZXRBcm46IHN0cmluZ1xuLyoqXG4gKiBUaGUgYWNjb3VudCBJRCB0aGF0IG93bnMgdGhlIGRlc3RpbmF0aW9uIFMzIGJ1Y2tldC4gSWYgbm8gYWNjb3VudCBJRCBpcyBwcm92aWRlZCwgdGhlIG93bmVyIGlzIG5vdCB2YWxpZGF0ZWQgYmVmb3JlIGV4cG9ydGluZyBkYXRhLlxuICogICAgQWx0aG91Z2ggdGhpcyB2YWx1ZSBpcyBvcHRpb25hbCwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHRoYXQgeW91IHNldCBpdCB0byBoZWxwIHByZXZlbnQgcHJvYmxlbXMgaWYgdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldCBvd25lcnNoaXAgY2hhbmdlcy5cbiAqL1xuQnVja2V0QWNjb3VudElkPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZmlsZSBmb3JtYXQgdXNlZCB3aGVuIGV4cG9ydGluZyBkYXRhIHRvIEFtYXpvbiBTMy5cbiAqICAqQWxsb3dlZCB2YWx1ZXMqOiBgYENTVmBgIHwgYGBPUkNgYCB8IGBgUGFycXVldGBgXG4gKi9cbkZvcm1hdDogKFwiQ1NWXCIgfCBcIk9SQ1wiIHwgXCJQYXJxdWV0XCIpXG4vKipcbiAqIFRoZSBwcmVmaXggdG8gdXNlIHdoZW4gZXhwb3J0aW5nIGRhdGEuIFRoZSBwcmVmaXggaXMgcHJlcGVuZGVkIHRvIGFsbCByZXN1bHRzLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBsaWZlY3ljbGUgY29uZmlndXJhdGlvbiBmb3Igb2JqZWN0cyBpbiBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtPYmplY3QgTGlmZWN5Y2xlIE1hbmFnZW1lbnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L29iamVjdC1saWZlY3ljbGUtbWdtdC5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogQSBsaWZlY3ljbGUgcnVsZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzIGluIGFuIEFtYXpvbiBTMyBidWNrZXQuXG4gKi9cblJ1bGVzOiBSdWxlW11cbi8qKlxuICogSW5kaWNhdGVzIHdoaWNoIGRlZmF1bHQgbWluaW11bSBvYmplY3Qgc2l6ZSBiZWhhdmlvciBpcyBhcHBsaWVkIHRvIHRoZSBsaWZlY3ljbGUgY29uZmlndXJhdGlvbi5cbiAqICAgVGhpcyBwYXJhbWV0ZXIgYXBwbGllcyB0byBnZW5lcmFsIHB1cnBvc2UgYnVja2V0cyBvbmx5LiBJdCBpc24ndCBzdXBwb3J0ZWQgZm9yIGRpcmVjdG9yeSBidWNrZXQgbGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb25zLlxuICogICAgKyAgYGBhbGxfc3RvcmFnZV9jbGFzc2VzXzEyOEtgYCAtIE9iamVjdHMgc21hbGxlciB0aGFuIDEyOCBLQiB3aWxsIG5vdCB0cmFuc2l0aW9uIHRvIGFueSBzdG9yYWdlIGNsYXNzIGJ5IGRlZmF1bHQuXG4gKiAgICsgIGBgdmFyaWVzX2J5X3N0b3JhZ2VfY2xhc3NgYCAtIE9iamVjdHMgc21hbGxlciB0aGFuIDEyOCBLQiB3aWxsIHRyYW5zaXRpb24gdG8gR2xhY2llciBGbGV4aWJsZSBSZXRyaWV2YWwgb3IgR2xhY2llciBEZWVwIEFyY2hpdmUgc3RvcmFnZSBjbGFzc2VzLiBCeSBkZWZhdWx0LCBhbGwgb3RoZXIgc3RvcmFnZSBjbGFzc2VzIHdpbGwgcHJldmVudCB0cmFuc2l0aW9ucyBzbWFsbGVyIHRoYW4gMTI4IEtCLiBcbiAqICAgXG4gKiAgVG8gY3VzdG9taXplIHRoZSBtaW5pbXVtIG9iamVjdCBzaXplIGZvciBhbnkgdHJhbnNpdGlvbiB5b3UgY2FuIGFkZCBhIGZpbHRlciB0aGF0IHNwZWNpZmllcyBhIGN1c3RvbSBgYE9iamVjdFNpemVHcmVhdGVyVGhhbmBgIG9yIGBgT2JqZWN0U2l6ZUxlc3NUaGFuYGAgaW4gdGhlIGJvZHkgb2YgeW91ciB0cmFuc2l0aW9uIHJ1bGUuIEN1c3RvbSBmaWx0ZXJzIGFsd2F5cyB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgZGVmYXVsdCB0cmFuc2l0aW9uIGJlaGF2aW9yLlxuICovXG5UcmFuc2l0aW9uRGVmYXVsdE1pbmltdW1PYmplY3RTaXplPzogKFwidmFyaWVzX2J5X3N0b3JhZ2VfY2xhc3NcIiB8IFwiYWxsX3N0b3JhZ2VfY2xhc3Nlc18xMjhLXCIpXG59XG4vKipcbiAqIFNwZWNpZmllcyBsaWZlY3ljbGUgcnVsZXMgZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1B1dCBCdWNrZXQgTGlmZWN5Y2xlIENvbmZpZ3VyYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvQVBJL1JFU1RCdWNrZXRQVVRsaWZlY3ljbGUuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgQVBJIFJlZmVyZW5jZSouXG4gKiAgWW91IG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOiBgYEFib3J0SW5jb21wbGV0ZU11bHRpcGFydFVwbG9hZGBgLCBgYEV4cGlyYXRpb25EYXRlYGAsIGBgRXhwaXJhdGlvbkluRGF5c2BgLCBgYE5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbkluRGF5c2BgLCBgYE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbmBgLCBgYE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnNgYCwgYGBUcmFuc2l0aW9uYGAsIG9yIGBgVHJhbnNpdGlvbnNgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlIHtcbkFib3J0SW5jb21wbGV0ZU11bHRpcGFydFVwbG9hZD86IEFib3J0SW5jb21wbGV0ZU11bHRpcGFydFVwbG9hZFxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hlbiBvYmplY3RzIGFyZSBkZWxldGVkIGZyb20gQW1hem9uIFMzIGFuZCBBbWF6b24gUzMgR2xhY2llci4gVGhlIGRhdGUgdmFsdWUgbXVzdCBiZSBpbiBJU08gODYwMSBmb3JtYXQuIFRoZSB0aW1lIGlzIGFsd2F5cyBtaWRuaWdodCBVVEMuIElmIHlvdSBzcGVjaWZ5IGFuIGV4cGlyYXRpb24gYW5kIHRyYW5zaXRpb24gdGltZSwgeW91IG11c3QgdXNlIHRoZSBzYW1lIHRpbWUgdW5pdCBmb3IgYm90aCBwcm9wZXJ0aWVzIChlaXRoZXIgaW4gZGF5cyBvciBieSBkYXRlKS4gVGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGFsc28gYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLlxuICovXG5FeHBpcmF0aW9uRGF0ZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIGNyZWF0aW9uIHdoZW4gb2JqZWN0cyBhcmUgZGVsZXRlZCBmcm9tIEFtYXpvbiBTMyBhbmQgQW1hem9uIFMzIEdsYWNpZXIuIElmIHlvdSBzcGVjaWZ5IGFuIGV4cGlyYXRpb24gYW5kIHRyYW5zaXRpb24gdGltZSwgeW91IG11c3QgdXNlIHRoZSBzYW1lIHRpbWUgdW5pdCBmb3IgYm90aCBwcm9wZXJ0aWVzIChlaXRoZXIgaW4gZGF5cyBvciBieSBkYXRlKS4gVGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGFsc28gYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLlxuICovXG5FeHBpcmF0aW9uSW5EYXlzPzogbnVtYmVyXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIEFtYXpvbiBTMyB3aWxsIHJlbW92ZSBhIGRlbGV0ZSBtYXJrZXIgd2l0aG91dCBhbnkgbm9uY3VycmVudCB2ZXJzaW9ucy4gSWYgc2V0IHRvIHRydWUsIHRoZSBkZWxldGUgbWFya2VyIHdpbGwgYmUgcmVtb3ZlZCBpZiB0aGVyZSBhcmUgbm8gbm9uY3VycmVudCB2ZXJzaW9ucy4gVGhpcyBjYW5ub3QgYmUgc3BlY2lmaWVkIHdpdGggYGBFeHBpcmF0aW9uSW5EYXlzYGAsIGBgRXhwaXJhdGlvbkRhdGVgYCwgb3IgYGBUYWdGaWx0ZXJzYGAuXG4gKi9cbkV4cGlyZWRPYmplY3REZWxldGVNYXJrZXI/OiBib29sZWFuXG4vKipcbiAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZS4gVGhlIHZhbHVlIGNhbid0IGJlIGxvbmdlciB0aGFuIDI1NSBjaGFyYWN0ZXJzLlxuICovXG5JZD86IHN0cmluZ1xuLyoqXG4gKiAoRGVwcmVjYXRlZC4pIEZvciBidWNrZXRzIHdpdGggdmVyc2lvbmluZyBlbmFibGVkIChvciBzdXNwZW5kZWQpLCBzcGVjaWZpZXMgdGhlIHRpbWUsIGluIGRheXMsIGJldHdlZW4gd2hlbiBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBvYmplY3QgaXMgdXBsb2FkZWQgdG8gdGhlIGJ1Y2tldCBhbmQgd2hlbiBvbGQgdmVyc2lvbnMgb2YgdGhlIG9iamVjdCBleHBpcmUuIFdoZW4gb2JqZWN0IHZlcnNpb25zIGV4cGlyZSwgQW1hem9uIFMzIHBlcm1hbmVudGx5IGRlbGV0ZXMgdGhlbS4gSWYgeW91IHNwZWNpZnkgYSB0cmFuc2l0aW9uIGFuZCBleHBpcmF0aW9uIHRpbWUsIHRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuXG4gKi9cbk5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbkluRGF5cz86IG51bWJlclxuTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uPzogTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uXG5Ob25jdXJyZW50VmVyc2lvblRyYW5zaXRpb24/OiBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25cbi8qKlxuICogRm9yIGJ1Y2tldHMgd2l0aCB2ZXJzaW9uaW5nIGVuYWJsZWQgKG9yIHN1c3BlbmRlZCksIG9uZSBvciBtb3JlIHRyYW5zaXRpb24gcnVsZXMgdGhhdCBzcGVjaWZ5IHdoZW4gbm9uLWN1cnJlbnQgb2JqZWN0cyB0cmFuc2l0aW9uIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHlvdSBzcGVjaWZ5IGEgdHJhbnNpdGlvbiBhbmQgZXhwaXJhdGlvbiB0aW1lLCB0aGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbmBgIHByb3BlcnR5LlxuICovXG5Ob25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25zPzogTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uMVtdXG4vKipcbiAqIE9iamVjdCBrZXkgcHJlZml4IHRoYXQgaWRlbnRpZmllcyBvbmUgb3IgbW9yZSBvYmplY3RzIHRvIHdoaWNoIHRoaXMgcnVsZSBhcHBsaWVzLlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogSWYgYGBFbmFibGVkYGAsIHRoZSBydWxlIGlzIGN1cnJlbnRseSBiZWluZyBhcHBsaWVkLiBJZiBgYERpc2FibGVkYGAsIHRoZSBydWxlIGlzIG5vdCBjdXJyZW50bHkgYmVpbmcgYXBwbGllZC5cbiAqL1xuU3RhdHVzOiAoXCJFbmFibGVkXCIgfCBcIkRpc2FibGVkXCIpXG4vKipcbiAqIFRhZ3MgdG8gdXNlIHRvIGlkZW50aWZ5IGEgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIGxpZmVjeWNsZSBydWxlIGFwcGxpZXMuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG1pbmltdW0gb2JqZWN0IHNpemUgaW4gYnl0ZXMgZm9yIHRoaXMgcnVsZSB0byBhcHBseSB0by4gT2JqZWN0cyBtdXN0IGJlIGxhcmdlciB0aGFuIHRoaXMgdmFsdWUgaW4gYnl0ZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHNpemUgYmFzZWQgcnVsZXMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gdXNpbmcgc2l6ZS1iYXNlZCBydWxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvbGlmZWN5Y2xlLWNvbmZpZ3VyYXRpb24tZXhhbXBsZXMuaHRtbCNsYy1zaXplLXJ1bGVzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuT2JqZWN0U2l6ZUdyZWF0ZXJUaGFuPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBvYmplY3Qgc2l6ZSBpbiBieXRlcyBmb3IgdGhpcyBydWxlIHRvIGFwcGx5IHRvLiBPYmplY3RzIG11c3QgYmUgc21hbGxlciB0aGFuIHRoaXMgdmFsdWUgaW4gYnl0ZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHNpemVkIGJhc2VkIHJ1bGVzLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIHVzaW5nIHNpemUtYmFzZWQgcnVsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2xpZmVjeWNsZS1jb25maWd1cmF0aW9uLWV4YW1wbGVzLmh0bWwjbGMtc2l6ZS1ydWxlcykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk9iamVjdFNpemVMZXNzVGhhbj86IHN0cmluZ1xuVHJhbnNpdGlvbj86IFRyYW5zaXRpb25cbi8qKlxuICogT25lIG9yIG1vcmUgdHJhbnNpdGlvbiBydWxlcyB0aGF0IHNwZWNpZnkgd2hlbiBhbiBvYmplY3QgdHJhbnNpdGlvbnMgdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgeW91IHNwZWNpZnkgYW4gZXhwaXJhdGlvbiBhbmQgdHJhbnNpdGlvbiB0aW1lLCB5b3UgbXVzdCB1c2UgdGhlIHNhbWUgdGltZSB1bml0IGZvciBib3RoIHByb3BlcnRpZXMgKGVpdGhlciBpbiBkYXlzIG9yIGJ5IGRhdGUpLiBUaGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYWxzbyBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgVHJhbnNpdGlvbmBgIHByb3BlcnR5LlxuICovXG5UcmFuc2l0aW9ucz86IFRyYW5zaXRpb24xW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgbGlmZWN5Y2xlIHJ1bGUgdGhhdCBzdG9wcyBpbmNvbXBsZXRlIG11bHRpcGFydCB1cGxvYWRzIHRvIGFuIEFtYXpvbiBTMyBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciB3aGljaCBBbWF6b24gUzMgc3RvcHMgYW4gaW5jb21wbGV0ZSBtdWx0aXBhcnQgdXBsb2FkLlxuICovXG5EYXlzQWZ0ZXJJbml0aWF0aW9uOiBudW1iZXJcbn1cbi8qKlxuICogU3BlY2lmaWVzIHdoZW4gbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMgZXhwaXJlLiBVcG9uIGV4cGlyYXRpb24sIFMzIHBlcm1hbmVudGx5IGRlbGV0ZXMgdGhlIG5vbmN1cnJlbnQgb2JqZWN0IHZlcnNpb25zLiBZb3Ugc2V0IHRoaXMgbGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gYWN0aW9uIG9uIGEgYnVja2V0IHRoYXQgaGFzIHZlcnNpb25pbmcgZW5hYmxlZCAob3Igc3VzcGVuZGVkKSB0byByZXF1ZXN0IHRoYXQgUzMgZGVsZXRlIG5vbmN1cnJlbnQgb2JqZWN0IHZlcnNpb25zIGF0IGEgc3BlY2lmaWMgcGVyaW9kIGluIHRoZSBvYmplY3QncyBsaWZldGltZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFuIG9iamVjdCBpcyBub25jdXJyZW50IGJlZm9yZSBTMyBjYW4gcGVyZm9ybSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24uIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbm9uY3VycmVudCBkYXlzIGNhbGN1bGF0aW9ucywgc2VlIFtIb3cgQW1hem9uIFMzIENhbGN1bGF0ZXMgV2hlbiBhbiBPYmplY3QgQmVjYW1lIE5vbmN1cnJlbnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2ludHJvLWxpZmVjeWNsZS1ydWxlcy5odG1sI25vbi1jdXJyZW50LWRheXMtY2FsY3VsYXRpb25zKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuTm9uY3VycmVudERheXM6IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IG1hbnkgbm9uY3VycmVudCB2ZXJzaW9ucyBTMyB3aWxsIHJldGFpbi4gSWYgdGhlcmUgYXJlIHRoaXMgbWFueSBtb3JlIHJlY2VudCBub25jdXJyZW50IHZlcnNpb25zLCBTMyB3aWxsIHRha2UgdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBub25jdXJyZW50IHZlcnNpb25zLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIGVsZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5ld2VyTm9uY3VycmVudFZlcnNpb25zPzogbnVtYmVyXG59XG4vKipcbiAqIChEZXByZWNhdGVkLikgRm9yIGJ1Y2tldHMgd2l0aCB2ZXJzaW9uaW5nIGVuYWJsZWQgKG9yIHN1c3BlbmRlZCksIHNwZWNpZmllcyB3aGVuIG5vbi1jdXJyZW50IG9iamVjdHMgdHJhbnNpdGlvbiB0byBhIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB5b3Ugc3BlY2lmeSBhIHRyYW5zaXRpb24gYW5kIGV4cGlyYXRpb24gdGltZSwgdGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS4gSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25zYGAgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uIHtcbi8qKlxuICogVGhlIGNsYXNzIG9mIHN0b3JhZ2UgdXNlZCB0byBzdG9yZSB0aGUgb2JqZWN0LlxuICovXG5TdG9yYWdlQ2xhc3M6IChcIkRFRVBfQVJDSElWRVwiIHwgXCJHTEFDSUVSXCIgfCBcIkdsYWNpZXJcIiB8IFwiR0xBQ0lFUl9JUlwiIHwgXCJJTlRFTExJR0VOVF9USUVSSU5HXCIgfCBcIk9ORVpPTkVfSUFcIiB8IFwiU1RBTkRBUkRfSUFcIilcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGF5cyBhbiBvYmplY3QgaXMgbm9uY3VycmVudCBiZWZvcmUgQW1hem9uIFMzIGNhbiBwZXJmb3JtIHRoZSBhc3NvY2lhdGVkIGFjdGlvbi4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBub25jdXJyZW50IGRheXMgY2FsY3VsYXRpb25zLCBzZWUgW0hvdyBBbWF6b24gUzMgQ2FsY3VsYXRlcyBIb3cgTG9uZyBhbiBPYmplY3QgSGFzIEJlZW4gTm9uY3VycmVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvaW50cm8tbGlmZWN5Y2xlLXJ1bGVzLmh0bWwjbm9uLWN1cnJlbnQtZGF5cy1jYWxjdWxhdGlvbnMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5UcmFuc2l0aW9uSW5EYXlzOiBudW1iZXJcbi8qKlxuICogU3BlY2lmaWVzIGhvdyBtYW55IG5vbmN1cnJlbnQgdmVyc2lvbnMgUzMgd2lsbCByZXRhaW4uIElmIHRoZXJlIGFyZSB0aGlzIG1hbnkgbW9yZSByZWNlbnQgbm9uY3VycmVudCB2ZXJzaW9ucywgUzMgd2lsbCB0YWtlIHRoZSBhc3NvY2lhdGVkIGFjdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgbm9uY3VycmVudCB2ZXJzaW9ucywgc2VlIFtMaWZlY3ljbGUgY29uZmlndXJhdGlvbiBlbGVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvaW50cm8tbGlmZWN5Y2xlLXJ1bGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5OZXdlck5vbmN1cnJlbnRWZXJzaW9ucz86IG51bWJlclxufVxuLyoqXG4gKiBDb250YWluZXIgZm9yIHRoZSB0cmFuc2l0aW9uIHJ1bGUgdGhhdCBkZXNjcmliZXMgd2hlbiBub25jdXJyZW50IG9iamVjdHMgdHJhbnNpdGlvbiB0byB0aGUgYGBTVEFOREFSRF9JQWBgLCBgYE9ORVpPTkVfSUFgYCwgYGBJTlRFTExJR0VOVF9USUVSSU5HYGAsIGBgR0xBQ0lFUl9JUmBgLCBgYEdMQUNJRVJgYCwgb3IgYGBERUVQX0FSQ0hJVkVgYCBzdG9yYWdlIGNsYXNzLiBJZiB5b3VyIGJ1Y2tldCBpcyB2ZXJzaW9uaW5nLWVuYWJsZWQgKG9yIHZlcnNpb25pbmcgaXMgc3VzcGVuZGVkKSwgeW91IGNhbiBzZXQgdGhpcyBhY3Rpb24gdG8gcmVxdWVzdCB0aGF0IEFtYXpvbiBTMyB0cmFuc2l0aW9uIG5vbmN1cnJlbnQgb2JqZWN0IHZlcnNpb25zIHRvIHRoZSBgYFNUQU5EQVJEX0lBYGAsIGBgT05FWk9ORV9JQWBgLCBgYElOVEVMTElHRU5UX1RJRVJJTkdgYCwgYGBHTEFDSUVSX0lSYGAsIGBgR0xBQ0lFUmBgLCBvciBgYERFRVBfQVJDSElWRWBgIHN0b3JhZ2UgY2xhc3MgYXQgYSBzcGVjaWZpYyBwZXJpb2QgaW4gdGhlIG9iamVjdCdzIGxpZmV0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnNgYCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb24xIHtcbi8qKlxuICogVGhlIGNsYXNzIG9mIHN0b3JhZ2UgdXNlZCB0byBzdG9yZSB0aGUgb2JqZWN0LlxuICovXG5TdG9yYWdlQ2xhc3M6IChcIkRFRVBfQVJDSElWRVwiIHwgXCJHTEFDSUVSXCIgfCBcIkdsYWNpZXJcIiB8IFwiR0xBQ0lFUl9JUlwiIHwgXCJJTlRFTExJR0VOVF9USUVSSU5HXCIgfCBcIk9ORVpPTkVfSUFcIiB8IFwiU1RBTkRBUkRfSUFcIilcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGF5cyBhbiBvYmplY3QgaXMgbm9uY3VycmVudCBiZWZvcmUgQW1hem9uIFMzIGNhbiBwZXJmb3JtIHRoZSBhc3NvY2lhdGVkIGFjdGlvbi4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBub25jdXJyZW50IGRheXMgY2FsY3VsYXRpb25zLCBzZWUgW0hvdyBBbWF6b24gUzMgQ2FsY3VsYXRlcyBIb3cgTG9uZyBhbiBPYmplY3QgSGFzIEJlZW4gTm9uY3VycmVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvaW50cm8tbGlmZWN5Y2xlLXJ1bGVzLmh0bWwjbm9uLWN1cnJlbnQtZGF5cy1jYWxjdWxhdGlvbnMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5UcmFuc2l0aW9uSW5EYXlzOiBudW1iZXJcbi8qKlxuICogU3BlY2lmaWVzIGhvdyBtYW55IG5vbmN1cnJlbnQgdmVyc2lvbnMgUzMgd2lsbCByZXRhaW4uIElmIHRoZXJlIGFyZSB0aGlzIG1hbnkgbW9yZSByZWNlbnQgbm9uY3VycmVudCB2ZXJzaW9ucywgUzMgd2lsbCB0YWtlIHRoZSBhc3NvY2lhdGVkIGFjdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgbm9uY3VycmVudCB2ZXJzaW9ucywgc2VlIFtMaWZlY3ljbGUgY29uZmlndXJhdGlvbiBlbGVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvaW50cm8tbGlmZWN5Y2xlLXJ1bGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5OZXdlck5vbmN1cnJlbnRWZXJzaW9ucz86IG51bWJlclxufVxuLyoqXG4gKiAoRGVwcmVjYXRlZC4pIFNwZWNpZmllcyB3aGVuIGFuIG9iamVjdCB0cmFuc2l0aW9ucyB0byBhIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB5b3Ugc3BlY2lmeSBhbiBleHBpcmF0aW9uIGFuZCB0cmFuc2l0aW9uIHRpbWUsIHlvdSBtdXN0IHVzZSB0aGUgc2FtZSB0aW1lIHVuaXQgZm9yIGJvdGggcHJvcGVydGllcyAoZWl0aGVyIGluIGRheXMgb3IgYnkgZGF0ZSkuIFRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBhbHNvIGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS4gSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBUcmFuc2l0aW9uc2BgIHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zaXRpb24ge1xuLyoqXG4gKiBUaGUgc3RvcmFnZSBjbGFzcyB0byB3aGljaCB5b3Ugd2FudCB0aGUgb2JqZWN0IHRvIHRyYW5zaXRpb24uXG4gKi9cblN0b3JhZ2VDbGFzczogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR2xhY2llclwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJTVEFOREFSRF9JQVwiKVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hlbiBvYmplY3RzIGFyZSB0cmFuc2l0aW9uZWQgdG8gdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBUaGUgZGF0ZSB2YWx1ZSBtdXN0IGJlIGluIElTTyA4NjAxIGZvcm1hdC4gVGhlIHRpbWUgaXMgYWx3YXlzIG1pZG5pZ2h0IFVUQy5cbiAqL1xuVHJhbnNpdGlvbkRhdGU/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciBjcmVhdGlvbiB3aGVuIG9iamVjdHMgYXJlIHRyYW5zaXRpb25lZCB0byB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcyBpcyBgYElOVEVMTElHRU5UX1RJRVJJTkdgYCwgYGBHTEFDSUVSX0lSYGAsIGBgR0xBQ0lFUmBgLCBvciBgYERFRVBfQVJDSElWRWBgLCB2YWxpZCB2YWx1ZXMgYXJlIGBgMGBgIG9yIHBvc2l0aXZlIGludGVnZXJzLiBJZiB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MgaXMgYGBTVEFOREFSRF9JQWBgIG9yIGBgT05FWk9ORV9JQWBgLCB2YWxpZCB2YWx1ZXMgYXJlIHBvc2l0aXZlIGludGVnZXJzIGdyZWF0ZXIgdGhhbiBgYDMwYGAuIEJlIGF3YXJlIHRoYXQgc29tZSBzdG9yYWdlIGNsYXNzZXMgaGF2ZSBhIG1pbmltdW0gc3RvcmFnZSBkdXJhdGlvbiBhbmQgdGhhdCB5b3UncmUgY2hhcmdlZCBmb3IgdHJhbnNpdGlvbmluZyBvYmplY3RzIGJlZm9yZSB0aGVpciBtaW5pbXVtIHN0b3JhZ2UgZHVyYXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbnN0cmFpbnRzIGFuZCBjb25zaWRlcmF0aW9ucyBmb3IgdHJhbnNpdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2xpZmVjeWNsZS10cmFuc2l0aW9uLWdlbmVyYWwtY29uc2lkZXJhdGlvbnMuaHRtbCNsaWZlY3ljbGUtY29uZmlndXJhdGlvbi1jb25zdHJhaW50cykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblRyYW5zaXRpb25JbkRheXM/OiBudW1iZXJcbn1cbi8qKlxuICogU3BlY2lmaWVzIHdoZW4gYW4gb2JqZWN0IHRyYW5zaXRpb25zIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEFtYXpvbiBTMyBsaWZlY3ljbGUgY29uZmlndXJhdGlvbiBydWxlcywgc2VlIFtUcmFuc2l0aW9uaW5nIE9iamVjdHMgVXNpbmcgQW1hem9uIFMzIExpZmVjeWNsZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvbGlmZWN5Y2xlLXRyYW5zaXRpb24tZ2VuZXJhbC1jb25zaWRlcmF0aW9ucy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2l0aW9uMSB7XG4vKipcbiAqIFRoZSBzdG9yYWdlIGNsYXNzIHRvIHdoaWNoIHlvdSB3YW50IHRoZSBvYmplY3QgdG8gdHJhbnNpdGlvbi5cbiAqL1xuU3RvcmFnZUNsYXNzOiAoXCJERUVQX0FSQ0hJVkVcIiB8IFwiR0xBQ0lFUlwiIHwgXCJHbGFjaWVyXCIgfCBcIkdMQUNJRVJfSVJcIiB8IFwiSU5URUxMSUdFTlRfVElFUklOR1wiIHwgXCJPTkVaT05FX0lBXCIgfCBcIlNUQU5EQVJEX0lBXCIpXG4vKipcbiAqIEluZGljYXRlcyB3aGVuIG9iamVjdHMgYXJlIHRyYW5zaXRpb25lZCB0byB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIFRoZSBkYXRlIHZhbHVlIG11c3QgYmUgaW4gSVNPIDg2MDEgZm9ybWF0LiBUaGUgdGltZSBpcyBhbHdheXMgbWlkbmlnaHQgVVRDLlxuICovXG5UcmFuc2l0aW9uRGF0ZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIGNyZWF0aW9uIHdoZW4gb2JqZWN0cyBhcmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzIGlzIGBgSU5URUxMSUdFTlRfVElFUklOR2BgLCBgYEdMQUNJRVJfSVJgYCwgYGBHTEFDSUVSYGAsIG9yIGBgREVFUF9BUkNISVZFYGAsIHZhbGlkIHZhbHVlcyBhcmUgYGAwYGAgb3IgcG9zaXRpdmUgaW50ZWdlcnMuIElmIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcyBpcyBgYFNUQU5EQVJEX0lBYGAgb3IgYGBPTkVaT05FX0lBYGAsIHZhbGlkIHZhbHVlcyBhcmUgcG9zaXRpdmUgaW50ZWdlcnMgZ3JlYXRlciB0aGFuIGBgMzBgYC4gQmUgYXdhcmUgdGhhdCBzb21lIHN0b3JhZ2UgY2xhc3NlcyBoYXZlIGEgbWluaW11bSBzdG9yYWdlIGR1cmF0aW9uIGFuZCB0aGF0IHlvdSdyZSBjaGFyZ2VkIGZvciB0cmFuc2l0aW9uaW5nIG9iamVjdHMgYmVmb3JlIHRoZWlyIG1pbmltdW0gc3RvcmFnZSBkdXJhdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uc3RyYWludHMgYW5kIGNvbnNpZGVyYXRpb25zIGZvciB0cmFuc2l0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvbGlmZWN5Y2xlLXRyYW5zaXRpb24tZ2VuZXJhbC1jb25zaWRlcmF0aW9ucy5odG1sI2xpZmVjeWNsZS1jb25maWd1cmF0aW9uLWNvbnN0cmFpbnRzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuVHJhbnNpdGlvbkluRGF5cz86IG51bWJlclxufVxuLyoqXG4gKiBTZXR0aW5ncyB0aGF0IGRlZmluZSB3aGVyZSBsb2dzIGFyZSBzdG9yZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2luZ0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgYnVja2V0IHdoZXJlIEFtYXpvbiBTMyBzaG91bGQgc3RvcmUgc2VydmVyIGFjY2VzcyBsb2cgZmlsZXMuIFlvdSBjYW4gc3RvcmUgbG9nIGZpbGVzIGluIGFueSBidWNrZXQgdGhhdCB5b3Ugb3duLiBCeSBkZWZhdWx0LCBsb2dzIGFyZSBzdG9yZWQgaW4gdGhlIGJ1Y2tldCB3aGVyZSB0aGUgYGBMb2dnaW5nQ29uZmlndXJhdGlvbmBgIHByb3BlcnR5IGlzIGRlZmluZWQuXG4gKi9cbkRlc3RpbmF0aW9uQnVja2V0TmFtZT86IHN0cmluZ1xuLyoqXG4gKiBBIHByZWZpeCBmb3IgYWxsIGxvZyBvYmplY3Qga2V5cy4gSWYgeW91IHN0b3JlIGxvZyBmaWxlcyBmcm9tIG11bHRpcGxlIEFtYXpvbiBTMyBidWNrZXRzIGluIGEgc2luZ2xlIGJ1Y2tldCwgeW91IGNhbiB1c2UgYSBwcmVmaXggdG8gZGlzdGluZ3Vpc2ggd2hpY2ggbG9nIGZpbGVzIGNhbWUgZnJvbSB3aGljaCBidWNrZXQuXG4gKi9cbkxvZ0ZpbGVQcmVmaXg/OiBzdHJpbmdcblRhcmdldE9iamVjdEtleUZvcm1hdD86IFRhcmdldE9iamVjdEtleUZvcm1hdFxufVxuLyoqXG4gKiBBbWF6b24gUzMga2V5cyBmb3IgbG9nIG9iamVjdHMgYXJlIHBhcnRpdGlvbmVkIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICogICBgYFtEZXN0aW5hdGlvblByZWZpeF1bU291cmNlQWNjb3VudElkXS9bU291cmNlUmVnaW9uXS9bU291cmNlQnVja2V0XS9bWVlZWV0vW01NXS9bRERdL1tZWVlZXS1bTU1dLVtERF0tW2hoXS1bbW1dLVtzc10tW1VuaXF1ZVN0cmluZ11gYCBcbiAqICBQYXJ0aXRpb25lZFByZWZpeCBkZWZhdWx0cyB0byBFdmVudFRpbWUgZGVsaXZlcnkgd2hlbiBzZXJ2ZXIgYWNjZXNzIGxvZ3MgYXJlIGRlbGl2ZXJlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb25lZFByZWZpeCB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgcGFydGl0aW9uIGRhdGUgc291cmNlIGZvciB0aGUgcGFydGl0aW9uZWQgcHJlZml4LiBgYFBhcnRpdGlvbkRhdGVTb3VyY2VgYCBjYW4gYmUgYGBFdmVudFRpbWVgYCBvciBgYERlbGl2ZXJ5VGltZWBgLlxuICogIEZvciBgYERlbGl2ZXJ5VGltZWBgLCB0aGUgdGltZSBpbiB0aGUgbG9nIGZpbGUgbmFtZXMgY29ycmVzcG9uZHMgdG8gdGhlIGRlbGl2ZXJ5IHRpbWUgZm9yIHRoZSBsb2cgZmlsZXMuIFxuICogICBGb3IgYGBFdmVudFRpbWVgYCwgVGhlIGxvZ3MgZGVsaXZlcmVkIGFyZSBmb3IgYSBzcGVjaWZpYyBkYXkgb25seS4gVGhlIHllYXIsIG1vbnRoLCBhbmQgZGF5IGNvcnJlc3BvbmQgdG8gdGhlIGRheSBvbiB3aGljaCB0aGUgZXZlbnQgb2NjdXJyZWQsIGFuZCB0aGUgaG91ciwgbWludXRlcyBhbmQgc2Vjb25kcyBhcmUgc2V0IHRvIDAwIGluIHRoZSBrZXkuXG4gKi9cblBhcnRpdGlvbkRhdGVTb3VyY2U/OiAoXCJFdmVudFRpbWVcIiB8IFwiRGVsaXZlcnlUaW1lXCIpXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIG1ldHJpY3MgY29uZmlndXJhdGlvbiBmb3IgdGhlIENsb3VkV2F0Y2ggcmVxdWVzdCBtZXRyaWNzIChzcGVjaWZpZWQgYnkgdGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBJRCkgZnJvbSBhbiBBbWF6b24gUzMgYnVja2V0LiBJZiB5b3UncmUgdXBkYXRpbmcgYW4gZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLCBub3RlIHRoYXQgdGhpcyBpcyBhIGZ1bGwgcmVwbGFjZW1lbnQgb2YgdGhlIGV4aXN0aW5nIG1ldHJpY3MgY29uZmlndXJhdGlvbi4gSWYgeW91IGRvbid0IGluY2x1ZGUgdGhlIGVsZW1lbnRzIHlvdSB3YW50IHRvIGtlZXAsIHRoZXkgYXJlIGVyYXNlZC4gRm9yIGV4YW1wbGVzLCBzZWUgW0FXUzo6UzM6OkJ1Y2tldF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0Lmh0bWwjYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LS1leGFtcGxlcykuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1BVVCBCdWNrZXQgbWV0cmljc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVE1ldHJpY0NvbmZpZ3VyYXRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgQVBJIFJlZmVyZW5jZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgYWNjZXNzIHBvaW50IHRoYXQgd2FzIHVzZWQgd2hpbGUgcGVyZm9ybWluZyBvcGVyYXRpb25zIG9uIHRoZSBvYmplY3QuIFRoZSBtZXRyaWNzIGNvbmZpZ3VyYXRpb24gb25seSBpbmNsdWRlcyBvYmplY3RzIHRoYXQgbWVldCB0aGUgZmlsdGVyJ3MgY3JpdGVyaWEuXG4gKi9cbkFjY2Vzc1BvaW50QXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBtZXRyaWNzIGNvbmZpZ3VyYXRpb24uIFRoaXMgY2FuIGJlIGFueSB2YWx1ZSB5b3UgY2hvb3NlIHRoYXQgaGVscHMgeW91IGlkZW50aWZ5IHlvdXIgbWV0cmljcyBjb25maWd1cmF0aW9uLlxuICovXG5JZDogc3RyaW5nXG4vKipcbiAqIFRoZSBwcmVmaXggdGhhdCBhbiBvYmplY3QgbXVzdCBoYXZlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBtZXRyaWNzIHJlc3VsdHMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgYSBsaXN0IG9mIHRhZyBmaWx0ZXJzIHRvIHVzZSBhcyBhIG1ldHJpY3MgY29uZmlndXJhdGlvbiBmaWx0ZXIuIFRoZSBtZXRyaWNzIGNvbmZpZ3VyYXRpb24gaW5jbHVkZXMgb25seSBvYmplY3RzIHRoYXQgbWVldCB0aGUgZmlsdGVyJ3MgY3JpdGVyaWEuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxufVxuLyoqXG4gKiBUaGUgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbiBvZiBhbiBTMyBnZW5lcmFsIHB1cnBvc2UgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uIHtcblMzVGFibGVzRGVzdGluYXRpb246IFMzVGFibGVzRGVzdGluYXRpb25cbn1cbi8qKlxuICogVGhlIGRlc3RpbmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbi4gVGhlIGRlc3RpbmF0aW9uIHRhYmxlIGJ1Y2tldCBtdXN0IGJlIGluIHRoZSBzYW1lIFJlZ2lvbiBhbmQgQVdTLWFjY291bnQgYXMgdGhlIGdlbmVyYWwgcHVycG9zZSBidWNrZXQuIFRoZSBzcGVjaWZpZWQgbWV0YWRhdGEgdGFibGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGBgYXdzX3MzX21ldGFkYXRhYGAgbmFtZXNwYWNlIGluIHRoZSBkZXN0aW5hdGlvbiB0YWJsZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUzNUYWJsZXNEZXN0aW5hdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBmb3IgdGhlIHRhYmxlIGJ1Y2tldCB0aGF0J3Mgc3BlY2lmaWVkIGFzIHRoZSBkZXN0aW5hdGlvbiBpbiB0aGUgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbi4gVGhlIGRlc3RpbmF0aW9uIHRhYmxlIGJ1Y2tldCBtdXN0IGJlIGluIHRoZSBzYW1lIFJlZ2lvbiBhbmQgQVdTLWFjY291bnQgYXMgdGhlIGdlbmVyYWwgcHVycG9zZSBidWNrZXQuXG4gKi9cblRhYmxlQnVja2V0QXJuOiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWUgZm9yIHRoZSBtZXRhZGF0YSB0YWJsZSBpbiB5b3VyIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uIFRoZSBzcGVjaWZpZWQgbWV0YWRhdGEgdGFibGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGBgYXdzX3MzX21ldGFkYXRhYGAgbmFtZXNwYWNlIGluIHRoZSBkZXN0aW5hdGlvbiB0YWJsZSBidWNrZXQuXG4gKi9cblRhYmxlTmFtZTogc3RyaW5nXG4vKipcbiAqIFRoZSB0YWJsZSBidWNrZXQgbmFtZXNwYWNlIGZvciB0aGUgbWV0YWRhdGEgdGFibGUgaW4geW91ciBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGlzIHZhbHVlIGlzIGFsd2F5cyBgYGF3c19zM19tZXRhZGF0YWBgLlxuICovXG5UYWJsZU5hbWVzcGFjZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9yIHRoZSBtZXRhZGF0YSB0YWJsZSBpbiB0aGUgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbi4gVGhlIHNwZWNpZmllZCBtZXRhZGF0YSB0YWJsZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgYGBhd3NfczNfbWV0YWRhdGFgYCBuYW1lc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9uIHRhYmxlIGJ1Y2tldC5cbiAqL1xuVGFibGVBcm4/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIFMzIE1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gZm9yIGEgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YUNvbmZpZ3VyYXRpb24ge1xuRGVzdGluYXRpb24/OiBNZXRhZGF0YURlc3RpbmF0aW9uXG5Kb3VybmFsVGFibGVDb25maWd1cmF0aW9uOiBKb3VybmFsVGFibGVDb25maWd1cmF0aW9uXG5JbnZlbnRvcnlUYWJsZUNvbmZpZ3VyYXRpb24/OiBJbnZlbnRvcnlUYWJsZUNvbmZpZ3VyYXRpb25cbn1cbi8qKlxuICogVGhlIGRlc3RpbmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgUzMgTWV0YWRhdGEgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YURlc3RpbmF0aW9uIHtcbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIHRhYmxlIGJ1Y2tldCB3aGVyZSB0aGUgbWV0YWRhdGEgY29uZmlndXJhdGlvbiBpcyBzdG9yZWQuIFRoZSBgYGF3c2BgIHZhbHVlIGluZGljYXRlcyBhbiBBV1MgbWFuYWdlZCB0YWJsZSBidWNrZXQsIGFuZCB0aGUgYGBjdXN0b21lcmBgIHZhbHVlIGluZGljYXRlcyBhIGN1c3RvbWVyLW1hbmFnZWQgdGFibGUgYnVja2V0LiBWMiBtZXRhZGF0YSBjb25maWd1cmF0aW9ucyBhcmUgc3RvcmVkIGluIEFXUyBtYW5hZ2VkIHRhYmxlIGJ1Y2tldHMsIGFuZCBWMSBtZXRhZGF0YSBjb25maWd1cmF0aW9ucyBhcmUgc3RvcmVkIGluIGN1c3RvbWVyLW1hbmFnZWQgdGFibGUgYnVja2V0cy5cbiAqL1xuVGFibGVCdWNrZXRUeXBlOiAoXCJhd3NcIiB8IFwiY3VzdG9tZXJcIilcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSB0YWJsZSBidWNrZXQgd2hlcmUgdGhlIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gaXMgc3RvcmVkLlxuICovXG5UYWJsZUJ1Y2tldEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZXNwYWNlIGluIHRoZSB0YWJsZSBidWNrZXQgd2hlcmUgdGhlIG1ldGFkYXRhIHRhYmxlcyBmb3IgYSBtZXRhZGF0YSBjb25maWd1cmF0aW9uIGFyZSBzdG9yZWQuXG4gKi9cblRhYmxlTmFtZXNwYWNlPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBqb3VybmFsIHRhYmxlIGNvbmZpZ3VyYXRpb24gZm9yIGEgbWV0YWRhdGEgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb3VybmFsVGFibGVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGpvdXJuYWwgdGFibGUuXG4gKi9cblRhYmxlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9yIHRoZSBqb3VybmFsIHRhYmxlLlxuICovXG5UYWJsZUFybj86IHN0cmluZ1xuUmVjb3JkRXhwaXJhdGlvbjogUmVjb3JkRXhwaXJhdGlvblxuRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24/OiBNZXRhZGF0YVRhYmxlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb25cbn1cbi8qKlxuICogVGhlIGpvdXJuYWwgdGFibGUgcmVjb3JkIGV4cGlyYXRpb24gc2V0dGluZ3MgZm9yIHRoZSBqb3VybmFsIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZEV4cGlyYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBqb3VybmFsIHRhYmxlIHJlY29yZCBleHBpcmF0aW9uIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuXG4gKi9cbkV4cGlyYXRpb246IChcIkVOQUJMRURcIiB8IFwiRElTQUJMRURcIilcbi8qKlxuICogSWYgeW91IGVuYWJsZSBqb3VybmFsIHRhYmxlIHJlY29yZCBleHBpcmF0aW9uLCB5b3UgY2FuIHNldCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gcmV0YWluIHlvdXIgam91cm5hbCB0YWJsZSByZWNvcmRzLiBKb3VybmFsIHRhYmxlIHJlY29yZHMgbXVzdCBiZSByZXRhaW5lZCBmb3IgYSBtaW5pbXVtIG9mIDcgZGF5cy4gVG8gc2V0IHRoaXMgdmFsdWUsIHNwZWNpZnkgYW55IHdob2xlIG51bWJlciBmcm9tIGBgN2BgIHRvIGBgMjE0NzQ4MzY0N2BgLiBGb3IgZXhhbXBsZSwgdG8gcmV0YWluIHlvdXIgam91cm5hbCB0YWJsZSByZWNvcmRzIGZvciBvbmUgeWVhciwgc2V0IHRoaXMgdmFsdWUgdG8gYGAzNjVgYC5cbiAqL1xuRGF5cz86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgam91cm5hbCB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YVRhYmxlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgZW5jcnlwdGlvbiB0eXBlIHNwZWNpZmllZCBmb3IgYSBtZXRhZGF0YSB0YWJsZS4gVG8gc3BlY2lmeSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggS01TbG9uZyAoS01TKSBrZXlzIChTU0UtS01TKSwgdXNlIHRoZSBgYGF3czprbXNgYCB2YWx1ZS4gVG8gc3BlY2lmeSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggQW1hem9uIFMzIG1hbmFnZWQga2V5cyAoU1NFLVMzKSwgdXNlIHRoZSBgYEFFUzI1NmBgIHZhbHVlLlxuICovXG5Tc2VBbGdvcml0aG06IChcImF3czprbXNcIiB8IFwiQUVTMjU2XCIpXG4vKipcbiAqIElmIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBLTVNsb25nIChLTVMpIGtleXMgKFNTRS1LTVMpIGlzIHNwZWNpZmllZCwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IHRoZSBLTVMga2V5IEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pLiBZb3UgbXVzdCBzcGVjaWZ5IGEgY3VzdG9tZXItbWFuYWdlZCBLTVMga2V5IHRoYXQncyBsb2NhdGVkIGluIHRoZSBzYW1lIFJlZ2lvbiBhcyB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLlxuICovXG5LbXNLZXlBcm4/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGludmVudG9yeSB0YWJsZSBjb25maWd1cmF0aW9uIGZvciBhIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52ZW50b3J5VGFibGVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGludmVudG9yeSB0YWJsZS5cbiAqL1xuVGFibGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBmb3IgdGhlIGludmVudG9yeSB0YWJsZS5cbiAqL1xuVGFibGVBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gc3RhdGUgb2YgdGhlIGludmVudG9yeSB0YWJsZSwgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBpbnZlbnRvcnkgdGFibGUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cbiAqL1xuQ29uZmlndXJhdGlvblN0YXRlOiAoXCJFTkFCTEVEXCIgfCBcIkRJU0FCTEVEXCIpXG5FbmNyeXB0aW9uQ29uZmlndXJhdGlvbj86IE1ldGFkYXRhVGFibGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjFcbn1cbi8qKlxuICogVGhlIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIGludmVudG9yeSB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YVRhYmxlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24xIHtcbi8qKlxuICogVGhlIGVuY3J5cHRpb24gdHlwZSBzcGVjaWZpZWQgZm9yIGEgbWV0YWRhdGEgdGFibGUuIFRvIHNwZWNpZnkgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEtNU2xvbmcgKEtNUykga2V5cyAoU1NFLUtNUyksIHVzZSB0aGUgYGBhd3M6a21zYGAgdmFsdWUuIFRvIHNwZWNpZnkgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEFtYXpvbiBTMyBtYW5hZ2VkIGtleXMgKFNTRS1TMyksIHVzZSB0aGUgYGBBRVMyNTZgYCB2YWx1ZS5cbiAqL1xuU3NlQWxnb3JpdGhtOiAoXCJhd3M6a21zXCIgfCBcIkFFUzI1NlwiKVxuLyoqXG4gKiBJZiBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggS01TbG9uZyAoS01TKSBrZXlzIChTU0UtS01TKSBpcyBzcGVjaWZpZWQsIHlvdSBtdXN0IGFsc28gc3BlY2lmeSB0aGUgS01TIGtleSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKS4gWW91IG11c3Qgc3BlY2lmeSBhIGN1c3RvbWVyLW1hbmFnZWQgS01TIGtleSB0aGF0J3MgbG9jYXRlZCBpbiB0aGUgc2FtZSBSZWdpb24gYXMgdGhlIGdlbmVyYWwgcHVycG9zZSBidWNrZXQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbi5cbiAqL1xuS21zS2V5QXJuPzogc3RyaW5nXG59XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gdGhhdCBkZWZpbmVzIGhvdyBBbWF6b24gUzMgaGFuZGxlcyBidWNrZXQgbm90aWZpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uIHtcbkV2ZW50QnJpZGdlQ29uZmlndXJhdGlvbj86IEV2ZW50QnJpZGdlQ29uZmlndXJhdGlvblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIExBTWxvbmcgZnVuY3Rpb25zIHRvIGludm9rZSBhbmQgdGhlIGV2ZW50cyBmb3Igd2hpY2ggdG8gaW52b2tlIHRoZW0uXG4gKi9cbkxhbWJkYUNvbmZpZ3VyYXRpb25zPzogTGFtYmRhQ29uZmlndXJhdGlvbltdXG4vKipcbiAqIFRoZSBBbWF6b24gU2ltcGxlIFF1ZXVlIFNlcnZpY2UgcXVldWVzIHRvIHB1Ymxpc2ggbWVzc2FnZXMgdG8gYW5kIHRoZSBldmVudHMgZm9yIHdoaWNoIHRvIHB1Ymxpc2ggbWVzc2FnZXMuXG4gKi9cblF1ZXVlQ29uZmlndXJhdGlvbnM/OiBRdWV1ZUNvbmZpZ3VyYXRpb25bXVxuLyoqXG4gKiBUaGUgdG9waWMgdG8gd2hpY2ggbm90aWZpY2F0aW9ucyBhcmUgc2VudCBhbmQgdGhlIGV2ZW50cyBmb3Igd2hpY2ggbm90aWZpY2F0aW9ucyBhcmUgZ2VuZXJhdGVkLlxuICovXG5Ub3BpY0NvbmZpZ3VyYXRpb25zPzogVG9waWNDb25maWd1cmF0aW9uW11cbn1cbi8qKlxuICogRW5hYmxlcyBkZWxpdmVyeSBvZiBldmVudHMgdG8gQW1hem9uIEV2ZW50QnJpZGdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QnJpZGdlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIEVuYWJsZXMgZGVsaXZlcnkgb2YgZXZlbnRzIHRvIEFtYXpvbiBFdmVudEJyaWRnZS5cbiAqL1xuRXZlbnRCcmlkZ2VFbmFibGVkOiAoYm9vbGVhbiAmIHN0cmluZylcbn1cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBMQU1sb25nIGZ1bmN0aW9ucyB0byBpbnZva2UgYW5kIHRoZSBldmVudHMgZm9yIHdoaWNoIHRvIGludm9rZSB0aGVtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFMzIGJ1Y2tldCBldmVudCBmb3Igd2hpY2ggdG8gaW52b2tlIHRoZSBMQU1sb25nIGZ1bmN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTdXBwb3J0ZWQgRXZlbnQgVHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L05vdGlmaWNhdGlvbkhvd1RvLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5FdmVudDogc3RyaW5nXG5GaWx0ZXI/OiBOb3RpZmljYXRpb25GaWx0ZXJcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBMQU1sb25nIGZ1bmN0aW9uIHRoYXQgQW1hem9uIFMzIGludm9rZXMgd2hlbiB0aGUgc3BlY2lmaWVkIGV2ZW50IHR5cGUgb2NjdXJzLlxuICovXG5GdW5jdGlvbjogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBmaWx0ZXJpbmcgcnVsZXMgdGhhdCBkZXRlcm1pbmUgd2hpY2ggb2JqZWN0cyBpbnZva2UgdGhlIEFXUyBMYW1iZGEgZnVuY3Rpb24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGNyZWF0ZSBhIGZpbHRlciBzbyB0aGF0IG9ubHkgaW1hZ2UgZmlsZXMgd2l0aCBhIGBgLmpwZ2BgIGV4dGVuc2lvbiBpbnZva2UgdGhlIGZ1bmN0aW9uIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gdGhlIEFtYXpvbiBTMyBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uRmlsdGVyIHtcblMzS2V5OiBTM0tleUZpbHRlclxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3Igb2JqZWN0IGtleSBuYW1lIHByZWZpeCBhbmQgc3VmZml4IGZpbHRlcmluZyBydWxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0tleUZpbHRlciB7XG4vKipcbiAqIEEgbGlzdCBvZiBjb250YWluZXJzIGZvciB0aGUga2V5LXZhbHVlIHBhaXIgdGhhdCBkZWZpbmVzIHRoZSBjcml0ZXJpYSBmb3IgdGhlIGZpbHRlciBydWxlLlxuICovXG5SdWxlczogRmlsdGVyUnVsZVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgQW1hem9uIFMzIG9iamVjdCBrZXkgbmFtZSB0byBmaWx0ZXIgb24uIEFuIG9iamVjdCBrZXkgbmFtZSBpcyB0aGUgbmFtZSBhc3NpZ25lZCB0byBhbiBvYmplY3QgaW4geW91ciBBbWF6b24gUzMgYnVja2V0LiBZb3Ugc3BlY2lmeSB3aGV0aGVyIHRvIGZpbHRlciBvbiB0aGUgc3VmZml4IG9yIHByZWZpeCBvZiB0aGUgb2JqZWN0IGtleSBuYW1lLiBBIHByZWZpeCBpcyBhIHNwZWNpZmljIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gb2JqZWN0IGtleSBuYW1lLCB3aGljaCB5b3UgY2FuIHVzZSB0byBvcmdhbml6ZSBvYmplY3RzLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBzdGFydCB0aGUga2V5IG5hbWVzIG9mIHJlbGF0ZWQgb2JqZWN0cyB3aXRoIGEgcHJlZml4LCBzdWNoIGFzIGBgMjAyMy1gYCBvciBgYGVuZ2luZWVyaW5nL2BgLiBUaGVuLCB5b3UgY2FuIHVzZSBgYEZpbHRlclJ1bGVgYCB0byBmaW5kIG9iamVjdHMgaW4gYSBidWNrZXQgd2l0aCBrZXkgbmFtZXMgdGhhdCBoYXZlIHRoZSBzYW1lIHByZWZpeC4gQSBzdWZmaXggaXMgc2ltaWxhciB0byBhIHByZWZpeCwgYnV0IGl0IGlzIGF0IHRoZSBlbmQgb2YgdGhlIG9iamVjdCBrZXkgbmFtZSBpbnN0ZWFkIG9mIGF0IHRoZSBiZWdpbm5pbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyUnVsZSB7XG4vKipcbiAqIFRoZSBvYmplY3Qga2V5IG5hbWUgcHJlZml4IG9yIHN1ZmZpeCBpZGVudGlmeWluZyBvbmUgb3IgbW9yZSBvYmplY3RzIHRvIHdoaWNoIHRoZSBmaWx0ZXJpbmcgcnVsZSBhcHBsaWVzLiBUaGUgbWF4aW11bSBsZW5ndGggaXMgMSwwMjQgY2hhcmFjdGVycy4gT3ZlcmxhcHBpbmcgcHJlZml4ZXMgYW5kIHN1ZmZpeGVzIGFyZSBub3Qgc3VwcG9ydGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmluZyBFdmVudCBOb3RpZmljYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Ob3RpZmljYXRpb25Ib3dUby5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuTmFtZTogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSB0aGF0IHRoZSBmaWx0ZXIgc2VhcmNoZXMgZm9yIGluIG9iamVjdCBrZXkgbmFtZXMuXG4gKi9cblZhbHVlOiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBwdWJsaXNoaW5nIG1lc3NhZ2VzIHRvIGFuIEFtYXpvbiBTaW1wbGUgUXVldWUgU2VydmljZSAoQW1hem9uIFNRUykgcXVldWUgd2hlbiBBbWF6b24gUzMgZGV0ZWN0cyBzcGVjaWZpZWQgZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXVlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUzMgYnVja2V0IGV2ZW50IGFib3V0IHdoaWNoIHlvdSB3YW50IHRvIHB1Ymxpc2ggbWVzc2FnZXMgdG8gQW1hem9uIFNRUy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3VwcG9ydGVkIEV2ZW50IFR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Ob3RpZmljYXRpb25Ib3dUby5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuRXZlbnQ6IHN0cmluZ1xuRmlsdGVyPzogTm90aWZpY2F0aW9uRmlsdGVyMVxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEFtYXpvbiBTUVMgcXVldWUgdG8gd2hpY2ggQW1hem9uIFMzIHB1Ymxpc2hlcyBhIG1lc3NhZ2Ugd2hlbiBpdCBkZXRlY3RzIGV2ZW50cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuIEZJRk8gcXVldWVzIGFyZSBub3QgYWxsb3dlZCB3aGVuIGVuYWJsaW5nIGFuIFNRUyBxdWV1ZSBhcyB0aGUgZXZlbnQgbm90aWZpY2F0aW9uIGRlc3RpbmF0aW9uLlxuICovXG5RdWV1ZTogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBmaWx0ZXJpbmcgcnVsZXMgdGhhdCBkZXRlcm1pbmUgd2hpY2ggb2JqZWN0cyB0cmlnZ2VyIG5vdGlmaWNhdGlvbnMuIEZvciBleGFtcGxlLCB5b3UgY2FuIGNyZWF0ZSBhIGZpbHRlciBzbyB0aGF0IEFtYXpvbiBTMyBzZW5kcyBub3RpZmljYXRpb25zIG9ubHkgd2hlbiBpbWFnZSBmaWxlcyB3aXRoIGEgYGAuanBnYGAgZXh0ZW5zaW9uIGFyZSBhZGRlZCB0byB0aGUgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmluZyBldmVudCBub3RpZmljYXRpb25zIHVzaW5nIG9iamVjdCBrZXkgbmFtZSBmaWx0ZXJpbmddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlci1ndWlkZS9ub3RpZmljYXRpb24taG93LXRvLWZpbHRlcmluZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25GaWx0ZXIxIHtcblMzS2V5OiBTM0tleUZpbHRlclxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3Igc3BlY2lmeWluZyB0aGUgY29uZmlndXJhdGlvbiBmb3IgcHVibGljYXRpb24gb2YgbWVzc2FnZXMgdG8gYW4gQW1hem9uIFNpbXBsZSBOb3RpZmljYXRpb24gU2VydmljZSAoQW1hem9uIFNOUykgdG9waWMgd2hlbiBBbWF6b24gUzMgZGV0ZWN0cyBzcGVjaWZpZWQgZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvcGljQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUzMgYnVja2V0IGV2ZW50IGFib3V0IHdoaWNoIHRvIHNlbmQgbm90aWZpY2F0aW9ucy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3VwcG9ydGVkIEV2ZW50IFR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Ob3RpZmljYXRpb25Ib3dUby5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuRXZlbnQ6IHN0cmluZ1xuRmlsdGVyPzogTm90aWZpY2F0aW9uRmlsdGVyMlxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEFtYXpvbiBTTlMgdG9waWMgdG8gd2hpY2ggQW1hem9uIFMzIHB1Ymxpc2hlcyBhIG1lc3NhZ2Ugd2hlbiBpdCBkZXRlY3RzIGV2ZW50cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gKi9cblRvcGljOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGZpbHRlcmluZyBydWxlcyB0aGF0IGRldGVybWluZSBmb3Igd2hpY2ggb2JqZWN0cyB0byBzZW5kIG5vdGlmaWNhdGlvbnMuIEZvciBleGFtcGxlLCB5b3UgY2FuIGNyZWF0ZSBhIGZpbHRlciBzbyB0aGF0IEFtYXpvbiBTMyBzZW5kcyBub3RpZmljYXRpb25zIG9ubHkgd2hlbiBpbWFnZSBmaWxlcyB3aXRoIGEgYGAuanBnYGAgZXh0ZW5zaW9uIGFyZSBhZGRlZCB0byB0aGUgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkZpbHRlcjIge1xuUzNLZXk6IFMzS2V5RmlsdGVyXG59XG4vKipcbiAqIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGRpcmVjdG9yeSBidWNrZXRzLlxuICogICBQbGFjZXMgYW4gT2JqZWN0IExvY2sgY29uZmlndXJhdGlvbiBvbiB0aGUgc3BlY2lmaWVkIGJ1Y2tldC4gVGhlIHJ1bGUgc3BlY2lmaWVkIGluIHRoZSBPYmplY3QgTG9jayBjb25maWd1cmF0aW9uIHdpbGwgYmUgYXBwbGllZCBieSBkZWZhdWx0IHRvIGV2ZXJ5IG5ldyBvYmplY3QgcGxhY2VkIGluIHRoZSBzcGVjaWZpZWQgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtMb2NraW5nIE9iamVjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L29iamVjdC1sb2NrLmh0bWwpLiBcbiAqICAgICsgIFRoZSBgYERlZmF1bHRSZXRlbnRpb25gYCBzZXR0aW5ncyByZXF1aXJlIGJvdGggYSBtb2RlIGFuZCBhIHBlcmlvZC5cbiAqICAgKyAgVGhlIGBgRGVmYXVsdFJldGVudGlvbmBgIHBlcmlvZCBjYW4gYmUgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYCBidXQgeW91IG11c3Qgc2VsZWN0IG9uZS4gWW91IGNhbm5vdCBzcGVjaWZ5IGBgRGF5c2BgIGFuZCBgYFllYXJzYGAgYXQgdGhlIHNhbWUgdGltZS5cbiAqICAgKyAgWW91IGNhbiBlbmFibGUgT2JqZWN0IExvY2sgZm9yIG5ldyBvciBleGlzdGluZyBidWNrZXRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmluZyBPYmplY3QgTG9ja10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LWxvY2stY29uZmlndXJlLmh0bWwpLlxuICogICBcbiAqICAgIFlvdSBtdXN0IFVSTCBlbmNvZGUgYW55IHNpZ25lZCBoZWFkZXIgdmFsdWVzIHRoYXQgY29udGFpbiBzcGFjZXMuIEZvciBleGFtcGxlLCBpZiB5b3VyIGhlYWRlciB2YWx1ZSBpcyBgYG15IGZpbGUudHh0YGAsIGNvbnRhaW5pbmcgdHdvIHNwYWNlcyBhZnRlciBgYG15YGAsIHlvdSBtdXN0IFVSTCBlbmNvZGUgdGhpcyB2YWx1ZSB0byBgYG15JTIwJTIwZmlsZS50eHRgYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYmplY3RMb2NrQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgYnVja2V0IGhhcyBhbiBPYmplY3QgTG9jayBjb25maWd1cmF0aW9uIGVuYWJsZWQuIEVuYWJsZSBgYE9iamVjdExvY2tFbmFibGVkYGAgd2hlbiB5b3UgYXBwbHkgYGBPYmplY3RMb2NrQ29uZmlndXJhdGlvbmBgIHRvIGEgYnVja2V0LlxuICovXG5PYmplY3RMb2NrRW5hYmxlZD86IFwiRW5hYmxlZFwiXG5SdWxlPzogT2JqZWN0TG9ja1J1bGVcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBPYmplY3QgTG9jayBydWxlIGZvciB0aGUgc3BlY2lmaWVkIG9iamVjdC4gRW5hYmxlIHRoaXMgcnVsZSB3aGVuIHlvdSBhcHBseSBgYE9iamVjdExvY2tDb25maWd1cmF0aW9uYGAgdG8gYSBidWNrZXQuIElmIE9iamVjdCBMb2NrIGlzIHR1cm5lZCBvbiwgYnVja2V0IHNldHRpbmdzIHJlcXVpcmUgYm90aCBgYE1vZGVgYCBhbmQgYSBwZXJpb2Qgb2YgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC4gWW91IGNhbm5vdCBzcGVjaWZ5IGBgRGF5c2BgIGFuZCBgYFllYXJzYGAgYXQgdGhlIHNhbWUgdGltZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbT2JqZWN0TG9ja1J1bGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLWJ1Y2tldC1vYmplY3Rsb2NrcnVsZS5odG1sKSBhbmQgW0RlZmF1bHRSZXRlbnRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLWJ1Y2tldC1kZWZhdWx0cmV0ZW50aW9uLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdExvY2tSdWxlIHtcbkRlZmF1bHRSZXRlbnRpb24/OiBEZWZhdWx0UmV0ZW50aW9uXG59XG4vKipcbiAqIFRoZSBkZWZhdWx0IE9iamVjdCBMb2NrIHJldGVudGlvbiBtb2RlIGFuZCBwZXJpb2QgdGhhdCB5b3Ugd2FudCB0byBhcHBseSB0byBuZXcgb2JqZWN0cyBwbGFjZWQgaW4gdGhlIHNwZWNpZmllZCBidWNrZXQuIElmIE9iamVjdCBMb2NrIGlzIHR1cm5lZCBvbiwgYnVja2V0IHNldHRpbmdzIHJlcXVpcmUgYm90aCBgYE1vZGVgYCBhbmQgYSBwZXJpb2Qgb2YgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC4gWW91IGNhbm5vdCBzcGVjaWZ5IGBgRGF5c2BgIGFuZCBgYFllYXJzYGAgYXQgdGhlIHNhbWUgdGltZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYWxsb3dhYmxlIHZhbHVlcyBmb3IgbW9kZSBhbmQgcGVyaW9kLCBzZWUgW0RlZmF1bHRSZXRlbnRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLWJ1Y2tldC1kZWZhdWx0cmV0ZW50aW9uLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRSZXRlbnRpb24ge1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHllYXJzIHRoYXQgeW91IHdhbnQgdG8gc3BlY2lmeSBmb3IgdGhlIGRlZmF1bHQgcmV0ZW50aW9uIHBlcmlvZC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCB5b3UgbXVzdCBzcGVjaWZ5IGBgTW9kZWBgIGFuZCBzcGVjaWZ5IGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAuXG4gKi9cblllYXJzPzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgZGF5cyB0aGF0IHlvdSB3YW50IHRvIHNwZWNpZnkgZm9yIHRoZSBkZWZhdWx0IHJldGVudGlvbiBwZXJpb2QuIElmIE9iamVjdCBMb2NrIGlzIHR1cm5lZCBvbiwgeW91IG11c3Qgc3BlY2lmeSBgYE1vZGVgYCBhbmQgc3BlY2lmeSBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgLlxuICovXG5EYXlzPzogbnVtYmVyXG4vKipcbiAqIFRoZSBkZWZhdWx0IE9iamVjdCBMb2NrIHJldGVudGlvbiBtb2RlIHlvdSB3YW50IHRvIGFwcGx5IHRvIG5ldyBvYmplY3RzIHBsYWNlZCBpbiB0aGUgc3BlY2lmaWVkIGJ1Y2tldC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCB5b3UgbXVzdCBzcGVjaWZ5IGBgTW9kZWBgIGFuZCBzcGVjaWZ5IGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAuXG4gKi9cbk1vZGU/OiAoXCJDT01QTElBTkNFXCIgfCBcIkdPVkVSTkFOQ0VcIilcbn1cbi8qKlxuICogQ29uZmlndXJhdGlvbiB0aGF0IGRlZmluZXMgaG93IEFtYXpvbiBTMyBoYW5kbGVzIE9iamVjdCBPd25lcnNoaXAgcnVsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3duZXJzaGlwQ29udHJvbHMge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBlbGVtZW50IGZvciBPYmplY3QgT3duZXJzaGlwIHJ1bGVzLlxuICovXG5SdWxlczogT3duZXJzaGlwQ29udHJvbHNSdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIE9iamVjdCBPd25lcnNoaXAgcnVsZS5cbiAqICBTMyBPYmplY3QgT3duZXJzaGlwIGlzIGFuIEFtYXpvbiBTMyBidWNrZXQtbGV2ZWwgc2V0dGluZyB0aGF0IHlvdSBjYW4gdXNlIHRvIGRpc2FibGUgYWNjZXNzIGNvbnRyb2wgbGlzdHMgKEFDTHMpIGFuZCB0YWtlIG93bmVyc2hpcCBvZiBldmVyeSBvYmplY3QgaW4geW91ciBidWNrZXQsIHNpbXBsaWZ5aW5nIGFjY2VzcyBtYW5hZ2VtZW50IGZvciBkYXRhIHN0b3JlZCBpbiBBbWF6b24gUzMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbnRyb2xsaW5nIG93bmVyc2hpcCBvZiBvYmplY3RzIGFuZCBkaXNhYmxpbmcgQUNMc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvYWJvdXQtb2JqZWN0LW93bmVyc2hpcC5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lcnNoaXBDb250cm9sc1J1bGUge1xuLyoqXG4gKiBTcGVjaWZpZXMgYW4gb2JqZWN0IG93bmVyc2hpcCBydWxlLlxuICovXG5PYmplY3RPd25lcnNoaXA/OiAoXCJPYmplY3RXcml0ZXJcIiB8IFwiQnVja2V0T3duZXJQcmVmZXJyZWRcIiB8IFwiQnVja2V0T3duZXJFbmZvcmNlZFwiKVxufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHRoYXQgZGVmaW5lcyBob3cgQW1hem9uIFMzIGhhbmRsZXMgcHVibGljIGFjY2Vzcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNBY2Nlc3NCbG9ja0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIGJsb2NrIHB1YmxpYyBhY2Nlc3MgY29udHJvbCBsaXN0cyAoQUNMcykgZm9yIHRoaXMgYnVja2V0IGFuZCBvYmplY3RzIGluIHRoaXMgYnVja2V0LiBTZXR0aW5nIHRoaXMgZWxlbWVudCB0byBgYFRSVUVgYCBjYXVzZXMgdGhlIGZvbGxvd2luZyBiZWhhdmlvcjpcbiAqICAgKyAgUFVUIEJ1Y2tldCBBQ0wgYW5kIFBVVCBPYmplY3QgQUNMIGNhbGxzIGZhaWwgaWYgdGhlIHNwZWNpZmllZCBBQ0wgaXMgcHVibGljLlxuICogICArICBQVVQgT2JqZWN0IGNhbGxzIGZhaWwgaWYgdGhlIHJlcXVlc3QgaW5jbHVkZXMgYSBwdWJsaWMgQUNMLlxuICogICArICBQVVQgQnVja2V0IGNhbGxzIGZhaWwgaWYgdGhlIHJlcXVlc3QgaW5jbHVkZXMgYSBwdWJsaWMgQUNMLlxuICogICBcbiAqICBFbmFibGluZyB0aGlzIHNldHRpbmcgZG9lc24ndCBhZmZlY3QgZXhpc3RpbmcgcG9saWNpZXMgb3IgQUNMcy5cbiAqL1xuQmxvY2tQdWJsaWNBY2xzPzogYm9vbGVhblxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIGJsb2NrIHB1YmxpYyBidWNrZXQgcG9saWNpZXMgZm9yIHRoaXMgYnVja2V0LiBTZXR0aW5nIHRoaXMgZWxlbWVudCB0byBgYFRSVUVgYCBjYXVzZXMgQW1hem9uIFMzIHRvIHJlamVjdCBjYWxscyB0byBQVVQgQnVja2V0IHBvbGljeSBpZiB0aGUgc3BlY2lmaWVkIGJ1Y2tldCBwb2xpY3kgYWxsb3dzIHB1YmxpYyBhY2Nlc3MuIFxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCBleGlzdGluZyBidWNrZXQgcG9saWNpZXMuXG4gKi9cbkJsb2NrUHVibGljUG9saWN5PzogYm9vbGVhblxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIGlnbm9yZSBwdWJsaWMgQUNMcyBmb3IgdGhpcyBidWNrZXQgYW5kIG9iamVjdHMgaW4gdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIGNhdXNlcyBBbWF6b24gUzMgdG8gaWdub3JlIGFsbCBwdWJsaWMgQUNMcyBvbiB0aGlzIGJ1Y2tldCBhbmQgb2JqZWN0cyBpbiB0aGlzIGJ1Y2tldC5cbiAqICBFbmFibGluZyB0aGlzIHNldHRpbmcgZG9lc24ndCBhZmZlY3QgdGhlIHBlcnNpc3RlbmNlIG9mIGFueSBleGlzdGluZyBBQ0xzIGFuZCBkb2Vzbid0IHByZXZlbnQgbmV3IHB1YmxpYyBBQ0xzIGZyb20gYmVpbmcgc2V0LlxuICovXG5JZ25vcmVQdWJsaWNBY2xzPzogYm9vbGVhblxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIHJlc3RyaWN0IHB1YmxpYyBidWNrZXQgcG9saWNpZXMgZm9yIHRoaXMgYnVja2V0LiBTZXR0aW5nIHRoaXMgZWxlbWVudCB0byBgYFRSVUVgYCByZXN0cmljdHMgYWNjZXNzIHRvIHRoaXMgYnVja2V0IHRvIG9ubHkgQVdTLXNlcnZpY2UgcHJpbmNpcGFscyBhbmQgYXV0aG9yaXplZCB1c2VycyB3aXRoaW4gdGhpcyBhY2NvdW50IGlmIHRoZSBidWNrZXQgaGFzIGEgcHVibGljIHBvbGljeS5cbiAqICBFbmFibGluZyB0aGlzIHNldHRpbmcgZG9lc24ndCBhZmZlY3QgcHJldmlvdXNseSBzdG9yZWQgYnVja2V0IHBvbGljaWVzLCBleGNlcHQgdGhhdCBwdWJsaWMgYW5kIGNyb3NzLWFjY291bnQgYWNjZXNzIHdpdGhpbiBhbnkgcHVibGljIGJ1Y2tldCBwb2xpY3ksIGluY2x1ZGluZyBub24tcHVibGljIGRlbGVnYXRpb24gdG8gc3BlY2lmaWMgYWNjb3VudHMsIGlzIGJsb2NrZWQuXG4gKi9cblJlc3RyaWN0UHVibGljQnVja2V0cz86IGJvb2xlYW5cbn1cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgcmVwbGljYXRpbmcgb2JqZWN0cyBpbiBhbiBTMyBidWNrZXQuIFRvIGVuYWJsZSByZXBsaWNhdGlvbiwgeW91IG11c3QgYWxzbyBlbmFibGUgdmVyc2lvbmluZyBieSB1c2luZyB0aGUgYGBWZXJzaW9uaW5nQ29uZmlndXJhdGlvbmBgIHByb3BlcnR5LlxuICogIEFtYXpvbiBTMyBjYW4gc3RvcmUgcmVwbGljYXRlZCBvYmplY3RzIGluIGEgc2luZ2xlIGRlc3RpbmF0aW9uIGJ1Y2tldCBvciBtdWx0aXBsZSBkZXN0aW5hdGlvbiBidWNrZXRzLiBUaGUgZGVzdGluYXRpb24gYnVja2V0IG9yIGJ1Y2tldHMgbXVzdCBhbHJlYWR5IGV4aXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNbG9uZyAoSUFNKSByb2xlIHRoYXQgQW1hem9uIFMzIGFzc3VtZXMgd2hlbiByZXBsaWNhdGluZyBvYmplY3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtIb3cgdG8gU2V0IFVwIFJlcGxpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9yZXBsaWNhdGlvbi1ob3ctc2V0dXAuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblJvbGU6IHN0cmluZ1xuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3Igb25lIG9yIG1vcmUgcmVwbGljYXRpb24gcnVsZXMuIEEgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHJ1bGUgYW5kIGNhbiBjb250YWluIGEgbWF4aW11bSBvZiAxLDAwMCBydWxlcy5cbiAqL1xuUnVsZXM6IFJlcGxpY2F0aW9uUnVsZVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyB3aGljaCBBbWF6b24gUzMgb2JqZWN0cyB0byByZXBsaWNhdGUgYW5kIHdoZXJlIHRvIHN0b3JlIHRoZSByZXBsaWNhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblJ1bGUge1xuRGVsZXRlTWFya2VyUmVwbGljYXRpb24/OiBEZWxldGVNYXJrZXJSZXBsaWNhdGlvblxuRGVzdGluYXRpb246IFJlcGxpY2F0aW9uRGVzdGluYXRpb25cbkZpbHRlcj86IFJlcGxpY2F0aW9uUnVsZUZpbHRlclxuLyoqXG4gKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZS4gVGhlIG1heGltdW0gdmFsdWUgaXMgMjU1IGNoYXJhY3RlcnMuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgdmFsdWUsIEFXUyBDbG91ZEZvcm1hdGlvbiBnZW5lcmF0ZXMgYSByYW5kb20gSUQuIFdoZW4gdXNpbmcgYSBWMiByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIHRoaXMgcHJvcGVydHkgaXMgY2FwaXRhbGl6ZWQgYXMgXCJJRFwiLlxuICovXG5JZD86IHN0cmluZ1xuLyoqXG4gKiBBbiBvYmplY3Qga2V5IG5hbWUgcHJlZml4IHRoYXQgaWRlbnRpZmllcyB0aGUgb2JqZWN0IG9yIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJ1bGUgYXBwbGllcy4gVGhlIG1heGltdW0gcHJlZml4IGxlbmd0aCBpcyAxLDAyNCBjaGFyYWN0ZXJzLiBUbyBpbmNsdWRlIGFsbCBvYmplY3RzIGluIGEgYnVja2V0LCBzcGVjaWZ5IGFuIGVtcHR5IHN0cmluZy4gVG8gZmlsdGVyIHVzaW5nIGEgVjEgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiwgYWRkIHRoZSBgYFByZWZpeGBgIGRpcmVjdGx5IGFzIGEgY2hpbGQgZWxlbWVudCBvZiB0aGUgYGBSdWxlYGAgZWxlbWVudC5cbiAqICAgUmVwbGFjZW1lbnQgbXVzdCBiZSBtYWRlIGZvciBvYmplY3Qga2V5cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyBjYXJyaWFnZSByZXR1cm5zKSB3aGVuIHVzaW5nIFhNTCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbWE1MIHJlbGF0ZWQgb2JqZWN0IGtleSBjb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LWtleXMuaHRtbCNvYmplY3Qta2V5LXhtbC1yZWxhdGVkLWNvbnN0cmFpbnRzKS5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBwcmlvcml0eSBpbmRpY2F0ZXMgd2hpY2ggcnVsZSBoYXMgcHJlY2VkZW5jZSB3aGVuZXZlciB0d28gb3IgbW9yZSByZXBsaWNhdGlvbiBydWxlcyBjb25mbGljdC4gQW1hem9uIFMzIHdpbGwgYXR0ZW1wdCB0byByZXBsaWNhdGUgb2JqZWN0cyBhY2NvcmRpbmcgdG8gYWxsIHJlcGxpY2F0aW9uIHJ1bGVzLiBIb3dldmVyLCBpZiB0aGVyZSBhcmUgdHdvIG9yIG1vcmUgcnVsZXMgd2l0aCB0aGUgc2FtZSBkZXN0aW5hdGlvbiBidWNrZXQsIHRoZW4gb2JqZWN0cyB3aWxsIGJlIHJlcGxpY2F0ZWQgYWNjb3JkaW5nIHRvIHRoZSBydWxlIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIGhpZ2hlciB0aGUgcHJpb3JpdHkuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1JlcGxpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9yZXBsaWNhdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuUHJpb3JpdHk/OiBudW1iZXJcblNvdXJjZVNlbGVjdGlvbkNyaXRlcmlhPzogU291cmNlU2VsZWN0aW9uQ3JpdGVyaWFcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHJ1bGUgaXMgZW5hYmxlZC5cbiAqL1xuU3RhdHVzOiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG59XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyByZXBsaWNhdGVzIGRlbGV0ZSBtYXJrZXJzLiBJZiB5b3Ugc3BlY2lmeSBhIGBgRmlsdGVyYGAgaW4geW91ciByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCB5b3UgbXVzdCBhbHNvIGluY2x1ZGUgYSBgYERlbGV0ZU1hcmtlclJlcGxpY2F0aW9uYGAgZWxlbWVudC4gSWYgeW91ciBgYEZpbHRlcmBgIGluY2x1ZGVzIGEgYGBUYWdgYCBlbGVtZW50LCB0aGUgYGBEZWxldGVNYXJrZXJSZXBsaWNhdGlvbmBgYGBTdGF0dXNgYCBtdXN0IGJlIHNldCB0byBEaXNhYmxlZCwgYmVjYXVzZSBBbWF6b24gUzMgZG9lcyBub3Qgc3VwcG9ydCByZXBsaWNhdGluZyBkZWxldGUgbWFya2VycyBmb3IgdGFnLWJhc2VkIHJ1bGVzLiBGb3IgYW4gZXhhbXBsZSBjb25maWd1cmF0aW9uLCBzZWUgW0Jhc2ljIFJ1bGUgQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvcmVwbGljYXRpb24tYWRkLWNvbmZpZy5odG1sI3JlcGxpY2F0aW9uLWNvbmZpZy1taW4tcnVsZS1jb25maWcpLiBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkZWxldGUgbWFya2VyIHJlcGxpY2F0aW9uLCBzZWUgW0Jhc2ljIFJ1bGUgQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvZGVsZXRlLW1hcmtlci1yZXBsaWNhdGlvbi5odG1sKS4gXG4gKiAgIElmIHlvdSBhcmUgdXNpbmcgYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoZSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCBBbWF6b24gUzMgaGFuZGxlcyByZXBsaWNhdGlvbiBvZiBkZWxldGUgbWFya2VycyBkaWZmZXJlbnRseS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQmFja3dhcmQgQ29tcGF0aWJpbGl0eV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvcmVwbGljYXRpb24tYWRkLWNvbmZpZy5odG1sI3JlcGxpY2F0aW9uLWJhY2t3YXJkLWNvbXBhdC1jb25zaWRlcmF0aW9ucykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlTWFya2VyUmVwbGljYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZXBsaWNhdGUgZGVsZXRlIG1hcmtlcnMuXG4gKi9cblN0YXR1cz86IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXBsaWNhdGlvbiBkZXN0aW5hdGlvbiBhbmQgaXRzIGNvbmZpZ3VyYXRpb25zIGluY2x1ZGluZyBlbmFibGluZyB0aGUgUzMgUmVwbGljYXRpb24gVGltZSBDb250cm9sIChTMyBSVEMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uRGVzdGluYXRpb24ge1xuQWNjZXNzQ29udHJvbFRyYW5zbGF0aW9uPzogQWNjZXNzQ29udHJvbFRyYW5zbGF0aW9uXG4vKipcbiAqIERlc3RpbmF0aW9uIGJ1Y2tldCBvd25lciBhY2NvdW50IElELiBJbiBhIGNyb3NzLWFjY291bnQgc2NlbmFyaW8sIGlmIHlvdSBkaXJlY3QgQW1hem9uIFMzIHRvIGNoYW5nZSByZXBsaWNhIG93bmVyc2hpcCB0byB0aGUgQVdTLWFjY291bnQgdGhhdCBvd25zIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQgYnkgc3BlY2lmeWluZyB0aGUgYGBBY2Nlc3NDb250cm9sVHJhbnNsYXRpb25gYCBwcm9wZXJ0eSwgdGhpcyBpcyB0aGUgYWNjb3VudCBJRCBvZiB0aGUgZGVzdGluYXRpb24gYnVja2V0IG93bmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDcm9zcy1SZWdpb24gUmVwbGljYXRpb24gQWRkaXRpb25hbCBDb25maWd1cmF0aW9uOiBDaGFuZ2UgUmVwbGljYSBPd25lcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvY3JyLWNoYW5nZS1vd25lci5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBBY2Nlc3NDb250cm9sVHJhbnNsYXRpb25gYCBwcm9wZXJ0eSwgdGhlIGBgQWNjb3VudGBgIHByb3BlcnR5IGlzIHJlcXVpcmVkLlxuICovXG5BY2NvdW50Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYnVja2V0IHdoZXJlIHlvdSB3YW50IEFtYXpvbiBTMyB0byBzdG9yZSB0aGUgcmVzdWx0cy5cbiAqL1xuQnVja2V0OiBzdHJpbmdcbkVuY3J5cHRpb25Db25maWd1cmF0aW9uPzogRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb25cbk1ldHJpY3M/OiBNZXRyaWNzXG5SZXBsaWNhdGlvblRpbWU/OiBSZXBsaWNhdGlvblRpbWVcbi8qKlxuICogVGhlIHN0b3JhZ2UgY2xhc3MgdG8gdXNlIHdoZW4gcmVwbGljYXRpbmcgb2JqZWN0cywgc3VjaCBhcyBTMyBTdGFuZGFyZCBvciByZWR1Y2VkIHJlZHVuZGFuY3kuIEJ5IGRlZmF1bHQsIEFtYXpvbiBTMyB1c2VzIHRoZSBzdG9yYWdlIGNsYXNzIG9mIHRoZSBzb3VyY2Ugb2JqZWN0IHRvIGNyZWF0ZSB0aGUgb2JqZWN0IHJlcGxpY2EuIFxuICogIEZvciB2YWxpZCB2YWx1ZXMsIHNlZSB0aGUgYGBTdG9yYWdlQ2xhc3NgYCBlbGVtZW50IG9mIHRoZSBbUFVUIEJ1Y2tldCByZXBsaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVHJlcGxpY2F0aW9uLmh0bWwpIGFjdGlvbiBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqICBgYEZTWF9PUEVOWkZTYGAgaXMgbm90IGFuIGFjY2VwdGVkIHZhbHVlIHdoZW4gcmVwbGljYXRpbmcgb2JqZWN0cy5cbiAqL1xuU3RvcmFnZUNsYXNzPzogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR0xBQ0lFUl9JUlwiIHwgXCJJTlRFTExJR0VOVF9USUVSSU5HXCIgfCBcIk9ORVpPTkVfSUFcIiB8IFwiUkVEVUNFRF9SRURVTkRBTkNZXCIgfCBcIlNUQU5EQVJEXCIgfCBcIlNUQU5EQVJEX0lBXCIpXG59XG4vKipcbiAqIFNwZWNpZnkgdGhpcyBvbmx5IGluIGEgY3Jvc3MtYWNjb3VudCBzY2VuYXJpbyAod2hlcmUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBidWNrZXQgb3duZXJzIGFyZSBub3QgdGhlIHNhbWUpLCBhbmQgeW91IHdhbnQgdG8gY2hhbmdlIHJlcGxpY2Egb3duZXJzaGlwIHRvIHRoZSBBV1MtYWNjb3VudCB0aGF0IG93bnMgdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldC4gSWYgdGhpcyBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCB0aGUgcmVwbGljYXMgYXJlIG93bmVkIGJ5IHNhbWUgQVdTLWFjY291bnQgdGhhdCBvd25zIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2Vzc0NvbnRyb2xUcmFuc2xhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgcmVwbGljYSBvd25lcnNoaXAuIEZvciBkZWZhdWx0IGFuZCB2YWxpZCB2YWx1ZXMsIHNlZSBbUFVUIGJ1Y2tldCByZXBsaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVHJlcGxpY2F0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5Pd25lcjogXCJEZXN0aW5hdGlvblwiXG59XG4vKipcbiAqIFNwZWNpZmllcyBlbmNyeXB0aW9uLXJlbGF0ZWQgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIElEIChLZXkgQVJOIG9yIEFsaWFzIEFSTikgb2YgdGhlIGN1c3RvbWVyIG1hbmFnZWQgQVdTIEtNUyBrZXkgc3RvcmVkIGluIEFXUyBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIChLTVMpIGZvciB0aGUgZGVzdGluYXRpb24gYnVja2V0LiBBbWF6b24gUzMgdXNlcyB0aGlzIGtleSB0byBlbmNyeXB0IHJlcGxpY2Egb2JqZWN0cy4gQW1hem9uIFMzIG9ubHkgc3VwcG9ydHMgc3ltbWV0cmljIGVuY3J5cHRpb24gS01TIGtleXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FzeW1tZXRyaWMga2V5cyBpbiBLTVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS8va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9zeW1tZXRyaWMtYXN5bW1ldHJpYy5odG1sKSBpbiB0aGUgKktleSBNYW5hZ2VtZW50IFNlcnZpY2UgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuUmVwbGljYUttc0tleUlEOiBzdHJpbmdcbn1cbi8qKlxuICogQSBjb250YWluZXIgc3BlY2lmeWluZyByZXBsaWNhdGlvbiBtZXRyaWNzLXJlbGF0ZWQgc2V0dGluZ3MgZW5hYmxpbmcgcmVwbGljYXRpb24gbWV0cmljcyBhbmQgZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY3Mge1xuRXZlbnRUaHJlc2hvbGQ/OiBSZXBsaWNhdGlvblRpbWVWYWx1ZVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgcmVwbGljYXRpb24gbWV0cmljcyBhcmUgZW5hYmxlZC5cbiAqL1xuU3RhdHVzOiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHNwZWNpZnlpbmcgdGhlIHRpbWUgdGhyZXNob2xkIGZvciBlbWl0dGluZyB0aGUgYGBzMzpSZXBsaWNhdGlvbjpPcGVyYXRpb25NaXNzZWRUaHJlc2hvbGRgYCBldmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblRpbWVWYWx1ZSB7XG4vKipcbiAqIENvbnRhaW5zIGFuIGludGVnZXIgc3BlY2lmeWluZyB0aW1lIGluIG1pbnV0ZXMuIFxuICogICBWYWxpZCB2YWx1ZTogMTVcbiAqL1xuTWludXRlczogbnVtYmVyXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHNwZWNpZnlpbmcgUzMgUmVwbGljYXRpb24gVGltZSBDb250cm9sIChTMyBSVEMpLCBpbmNsdWRpbmcgd2hldGhlciBTMyBSVEMgaXMgZW5hYmxlZCBhbmQgdGhlIHRpbWUgd2hlbiBhbGwgb2JqZWN0cyBhbmQgb3BlcmF0aW9ucyBvbiBvYmplY3RzIG11c3QgYmUgcmVwbGljYXRlZC4gTXVzdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBhIGBgTWV0cmljc2BgIGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uVGltZSB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSByZXBsaWNhdGlvbiB0aW1lIGlzIGVuYWJsZWQuXG4gKi9cblN0YXR1czogKFwiRGlzYWJsZWRcIiB8IFwiRW5hYmxlZFwiKVxuVGltZTogUmVwbGljYXRpb25UaW1lVmFsdWUxXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHNwZWNpZnlpbmcgdGhlIHRpbWUgYnkgd2hpY2ggcmVwbGljYXRpb24gc2hvdWxkIGJlIGNvbXBsZXRlIGZvciBhbGwgb2JqZWN0cyBhbmQgb3BlcmF0aW9ucyBvbiBvYmplY3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uVGltZVZhbHVlMSB7XG4vKipcbiAqIENvbnRhaW5zIGFuIGludGVnZXIgc3BlY2lmeWluZyB0aW1lIGluIG1pbnV0ZXMuIFxuICogICBWYWxpZCB2YWx1ZTogMTVcbiAqL1xuTWludXRlczogbnVtYmVyXG59XG4vKipcbiAqIEEgZmlsdGVyIHRoYXQgaWRlbnRpZmllcyB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJlcGxpY2F0aW9uIHJ1bGUgYXBwbGllcy4gQSBgYEZpbHRlcmBgIG11c3Qgc3BlY2lmeSBleGFjdGx5IG9uZSBgYFByZWZpeGBgLCBgYFRhZ0ZpbHRlcmBgLCBvciBhbiBgYEFuZGBgIGNoaWxkIGVsZW1lbnQuIFRoZSB1c2Ugb2YgdGhlIGZpbHRlciBmaWVsZCBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGEgVjIgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbi4gVGhpcyBmaWVsZCBpc24ndCBzdXBwb3J0ZWQgaW4gYSBWMSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICogICBWMSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIG9ubHkgc3VwcG9ydHMgZmlsdGVyaW5nIGJ5IGtleSBwcmVmaXguIFRvIGZpbHRlciB1c2luZyBhIFYxIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIGFkZCB0aGUgYGBQcmVmaXhgYCBkaXJlY3RseSBhcyBhIGNoaWxkIGVsZW1lbnQgb2YgdGhlIGBgUnVsZWBgIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25SdWxlRmlsdGVyIHtcbkFuZD86IFJlcGxpY2F0aW9uUnVsZUFuZE9wZXJhdG9yXG4vKipcbiAqIEFuIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcblRhZ0ZpbHRlcj86IFRhZ0ZpbHRlcjFcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIHNwZWNpZnlpbmcgcnVsZSBmaWx0ZXJzLiBUaGUgZmlsdGVycyBkZXRlcm1pbmUgdGhlIHN1YnNldCBvZiBvYmplY3RzIHRvIHdoaWNoIHRoZSBydWxlIGFwcGxpZXMuIFRoaXMgZWxlbWVudCBpcyByZXF1aXJlZCBvbmx5IGlmIHlvdSBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgZmlsdGVyLiBGb3IgZXhhbXBsZTogXG4gKiAgICsgIElmIHlvdSBzcGVjaWZ5IGJvdGggYSBgYFByZWZpeGBgIGFuZCBhIGBgVGFnRmlsdGVyYGAsIHdyYXAgdGhlc2UgZmlsdGVycyBpbiBhbiBgYEFuZGBgIHRhZy5cbiAqICAgKyAgSWYgeW91IHNwZWNpZnkgYSBmaWx0ZXIgYmFzZWQgb24gbXVsdGlwbGUgdGFncywgd3JhcCB0aGUgYGBUYWdGaWx0ZXJgYCBlbGVtZW50cyBpbiBhbiBgYEFuZGBgIHRhZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblJ1bGVBbmRPcGVyYXRvciB7XG4vKipcbiAqIEFuIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgb2YgdGFncyBjb250YWluaW5nIGtleSBhbmQgdmFsdWUgcGFpcnMuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGFncyB0byB1c2UgdG8gaWRlbnRpZnkgYSBzdWJzZXQgb2Ygb2JqZWN0cyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ2F0ZWdvcml6aW5nIHlvdXIgc3RvcmFnZSB1c2luZyB0YWdzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3QtdGFnZ2luZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTaW1wbGUgU3RvcmFnZSBTZXJ2aWNlIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0ZpbHRlcjEge1xuLyoqXG4gKiBUaGUgdGFnIHZhbHVlLlxuICovXG5WYWx1ZTogc3RyaW5nXG4vKipcbiAqIFRoZSB0YWcga2V5LlxuICovXG5LZXk6IHN0cmluZ1xufVxuLyoqXG4gKiBBIGNvbnRhaW5lciB0aGF0IGRlc2NyaWJlcyBhZGRpdGlvbmFsIGZpbHRlcnMgZm9yIGlkZW50aWZ5aW5nIHRoZSBzb3VyY2Ugb2JqZWN0cyB0aGF0IHlvdSB3YW50IHRvIHJlcGxpY2F0ZS4gWW91IGNhbiBjaG9vc2UgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHJlcGxpY2F0aW9uIG9mIHRoZXNlIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0aW9uQ3JpdGVyaWEge1xuUmVwbGljYU1vZGlmaWNhdGlvbnM/OiBSZXBsaWNhTW9kaWZpY2F0aW9uc1xuU3NlS21zRW5jcnlwdGVkT2JqZWN0cz86IFNzZUttc0VuY3J5cHRlZE9iamVjdHNcbn1cbi8qKlxuICogQSBmaWx0ZXIgdGhhdCB5b3UgY2FuIHNwZWNpZnkgZm9yIHNlbGVjdGlvbiBmb3IgbW9kaWZpY2F0aW9ucyBvbiByZXBsaWNhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhTW9kaWZpY2F0aW9ucyB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyByZXBsaWNhdGVzIG1vZGlmaWNhdGlvbnMgb24gcmVwbGljYXMuXG4gKiAgKkFsbG93ZWQgdmFsdWVzKjogYGBFbmFibGVkYGAgfCBgYERpc2FibGVkYGBcbiAqL1xuU3RhdHVzOiAoXCJFbmFibGVkXCIgfCBcIkRpc2FibGVkXCIpXG59XG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBmaWx0ZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBzZWxlY3Rpb24gb2YgQW1hem9uIFMzIG9iamVjdHMgZW5jcnlwdGVkIHdpdGggQVdTIEtNUy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTc2VLbXNFbmNyeXB0ZWRPYmplY3RzIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHJlcGxpY2F0ZXMgb2JqZWN0cyBjcmVhdGVkIHdpdGggc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB1c2luZyBhbiBBV1MgS01TIGtleSBzdG9yZWQgaW4gQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UuXG4gKi9cblN0YXR1czogKFwiRGlzYWJsZWRcIiB8IFwiRW5hYmxlZFwiKVxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBvZiBhIGtleSB2YWx1ZSBuYW1lIHBhaXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogTmFtZSBvZiB0aGUgb2JqZWN0IGtleS5cbiAqL1xuS2V5OiBzdHJpbmdcbi8qKlxuICogVmFsdWUgb2YgdGhlIHRhZy5cbiAqL1xuVmFsdWU6IHN0cmluZ1xufVxuLyoqXG4gKiBFbmFibGVzIG11bHRpcGxlIHZlcnNpb25zIG9mIGFsbCBvYmplY3RzIGluIHRoaXMgYnVja2V0LiBZb3UgbWlnaHQgZW5hYmxlIHZlcnNpb25pbmcgdG8gcHJldmVudCBvYmplY3RzIGZyb20gYmVpbmcgZGVsZXRlZCBvciBvdmVyd3JpdHRlbiBieSBtaXN0YWtlIG9yIHRvIGFyY2hpdmUgb2JqZWN0cyBzbyB0aGF0IHlvdSBjYW4gcmV0cmlldmUgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlbS5cbiAqICAgV2hlbiB5b3UgZW5hYmxlIHZlcnNpb25pbmcgb24gYSBidWNrZXQgZm9yIHRoZSBmaXJzdCB0aW1lLCBpdCBtaWdodCB0YWtlIGEgc2hvcnQgYW1vdW50IG9mIHRpbWUgZm9yIHRoZSBjaGFuZ2UgdG8gYmUgZnVsbHkgcHJvcGFnYXRlZC4gV2UgcmVjb21tZW5kIHRoYXQgeW91IHdhaXQgZm9yIDE1IG1pbnV0ZXMgYWZ0ZXIgZW5hYmxpbmcgdmVyc2lvbmluZyBiZWZvcmUgaXNzdWluZyB3cml0ZSBvcGVyYXRpb25zIChgYFBVVGBgIG9yIGBgREVMRVRFYGApIG9uIG9iamVjdHMgaW4gdGhlIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uaW5nQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSB2ZXJzaW9uaW5nIHN0YXRlIG9mIHRoZSBidWNrZXQuXG4gKi9cblN0YXR1czogKFwiRW5hYmxlZFwiIHwgXCJTdXNwZW5kZWRcIilcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gdXNlZCB0byBjb25maWd1cmUgdGhlIGJ1Y2tldCBhcyBhIHN0YXRpYyB3ZWJzaXRlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtIb3N0aW5nIFdlYnNpdGVzIG9uIEFtYXpvbiBTM10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvV2Vic2l0ZUhvc3RpbmcuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Vic2l0ZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgZXJyb3IgZG9jdW1lbnQgZm9yIHRoZSB3ZWJzaXRlLlxuICovXG5FcnJvckRvY3VtZW50Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBpbmRleCBkb2N1bWVudCBmb3IgdGhlIHdlYnNpdGUuXG4gKi9cbkluZGV4RG9jdW1lbnQ/OiBzdHJpbmdcbi8qKlxuICogUnVsZXMgdGhhdCBkZWZpbmUgd2hlbiBhIHJlZGlyZWN0IGlzIGFwcGxpZWQgYW5kIHRoZSByZWRpcmVjdCBiZWhhdmlvci5cbiAqL1xuUm91dGluZ1J1bGVzPzogUm91dGluZ1J1bGVbXVxuUmVkaXJlY3RBbGxSZXF1ZXN0c1RvPzogUmVkaXJlY3RBbGxSZXF1ZXN0c1RvXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgcmVkaXJlY3QgYmVoYXZpb3IgYW5kIHdoZW4gYSByZWRpcmVjdCBpcyBhcHBsaWVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByb3V0aW5nIHJ1bGVzLCBzZWUgW0NvbmZpZ3VyaW5nIGFkdmFuY2VkIGNvbmRpdGlvbmFsIHJlZGlyZWN0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvaG93LXRvLXBhZ2UtcmVkaXJlY3QuaHRtbCNhZHZhbmNlZC1jb25kaXRpb25hbC1yZWRpcmVjdHMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRpbmdSdWxlIHtcblJlZGlyZWN0UnVsZTogUmVkaXJlY3RSdWxlXG5Sb3V0aW5nUnVsZUNvbmRpdGlvbj86IFJvdXRpbmdSdWxlQ29uZGl0aW9uXG59XG4vKipcbiAqIENvbnRhaW5lciBmb3IgcmVkaXJlY3QgaW5mb3JtYXRpb24uIFlvdSBjYW4gcmVkaXJlY3QgcmVxdWVzdHMgdG8gYW5vdGhlciBob3N0LCB0byBhbm90aGVyIHBhZ2UsIG9yIHdpdGggYW5vdGhlciBwcm90b2NvbC4gSW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLCB5b3UgY2FuIHNwZWNpZnkgYSBkaWZmZXJlbnQgZXJyb3IgY29kZSB0byByZXR1cm4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXJlY3RSdWxlIHtcbi8qKlxuICogVGhlIGhvc3QgbmFtZSB0byB1c2UgaW4gdGhlIHJlZGlyZWN0IHJlcXVlc3QuXG4gKi9cbkhvc3ROYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBIVFRQIHJlZGlyZWN0IGNvZGUgdG8gdXNlIG9uIHRoZSByZXNwb25zZS4gTm90IHJlcXVpcmVkIGlmIG9uZSBvZiB0aGUgc2libGluZ3MgaXMgcHJlc2VudC5cbiAqL1xuSHR0cFJlZGlyZWN0Q29kZT86IHN0cmluZ1xuLyoqXG4gKiBQcm90b2NvbCB0byB1c2Ugd2hlbiByZWRpcmVjdGluZyByZXF1ZXN0cy4gVGhlIGRlZmF1bHQgaXMgdGhlIHByb3RvY29sIHRoYXQgaXMgdXNlZCBpbiB0aGUgb3JpZ2luYWwgcmVxdWVzdC5cbiAqL1xuUHJvdG9jb2w/OiAoXCJodHRwXCIgfCBcImh0dHBzXCIpXG4vKipcbiAqIFRoZSBvYmplY3Qga2V5IHByZWZpeCB0byB1c2UgaW4gdGhlIHJlZGlyZWN0IHJlcXVlc3QuIEZvciBleGFtcGxlLCB0byByZWRpcmVjdCByZXF1ZXN0cyBmb3IgYWxsIHBhZ2VzIHdpdGggcHJlZml4IGBgZG9jcy9gYCAob2JqZWN0cyBpbiB0aGUgYGBkb2NzL2BgIGZvbGRlcikgdG8gYGBkb2N1bWVudHMvYGAsIHlvdSBjYW4gc2V0IGEgY29uZGl0aW9uIGJsb2NrIHdpdGggYGBLZXlQcmVmaXhFcXVhbHNgYCBzZXQgdG8gYGBkb2NzL2BgIGFuZCBpbiB0aGUgUmVkaXJlY3Qgc2V0IGBgUmVwbGFjZUtleVByZWZpeFdpdGhgYCB0byBgYC9kb2N1bWVudHNgYC4gTm90IHJlcXVpcmVkIGlmIG9uZSBvZiB0aGUgc2libGluZ3MgaXMgcHJlc2VudC4gQ2FuIGJlIHByZXNlbnQgb25seSBpZiBgYFJlcGxhY2VLZXlXaXRoYGAgaXMgbm90IHByb3ZpZGVkLlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5SZXBsYWNlS2V5UHJlZml4V2l0aD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgc3BlY2lmaWMgb2JqZWN0IGtleSB0byB1c2UgaW4gdGhlIHJlZGlyZWN0IHJlcXVlc3QuIEZvciBleGFtcGxlLCByZWRpcmVjdCByZXF1ZXN0IHRvIGBgZXJyb3IuaHRtbGBgLiBOb3QgcmVxdWlyZWQgaWYgb25lIG9mIHRoZSBzaWJsaW5ncyBpcyBwcmVzZW50LiBDYW4gYmUgcHJlc2VudCBvbmx5IGlmIGBgUmVwbGFjZUtleVByZWZpeFdpdGhgYCBpcyBub3QgcHJvdmlkZWQuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblJlcGxhY2VLZXlXaXRoPzogc3RyaW5nXG59XG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBkZXNjcmliaW5nIGEgY29uZGl0aW9uIHRoYXQgbXVzdCBiZSBtZXQgZm9yIHRoZSBzcGVjaWZpZWQgcmVkaXJlY3QgdG8gYXBwbHkuIEZvciBleGFtcGxlLCAxLiBJZiByZXF1ZXN0IGlzIGZvciBwYWdlcyBpbiB0aGUgYGAvZG9jc2BgIGZvbGRlciwgcmVkaXJlY3QgdG8gdGhlIGBgL2RvY3VtZW50c2BgIGZvbGRlci4gMi4gSWYgcmVxdWVzdCByZXN1bHRzIGluIEhUVFAgZXJyb3IgNHh4LCByZWRpcmVjdCByZXF1ZXN0IHRvIGFub3RoZXIgaG9zdCB3aGVyZSB5b3UgbWlnaHQgcHJvY2VzcyB0aGUgZXJyb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ1J1bGVDb25kaXRpb24ge1xuLyoqXG4gKiBUaGUgb2JqZWN0IGtleSBuYW1lIHByZWZpeCB3aGVuIHRoZSByZWRpcmVjdCBpcyBhcHBsaWVkLiBGb3IgZXhhbXBsZSwgdG8gcmVkaXJlY3QgcmVxdWVzdHMgZm9yIGBgRXhhbXBsZVBhZ2UuaHRtbGBgLCB0aGUga2V5IHByZWZpeCB3aWxsIGJlIGBgRXhhbXBsZVBhZ2UuaHRtbGBgLiBUbyByZWRpcmVjdCByZXF1ZXN0IGZvciBhbGwgcGFnZXMgd2l0aCB0aGUgcHJlZml4IGBgZG9jcy9gYCwgdGhlIGtleSBwcmVmaXggd2lsbCBiZSBgYGRvY3MvYGAsIHdoaWNoIGlkZW50aWZpZXMgYWxsIG9iamVjdHMgaW4gdGhlIGRvY3MvIGZvbGRlci5cbiAqICBSZXF1aXJlZCB3aGVuIHRoZSBwYXJlbnQgZWxlbWVudCBgYENvbmRpdGlvbmBgIGlzIHNwZWNpZmllZCBhbmQgc2libGluZyBgYEh0dHBFcnJvckNvZGVSZXR1cm5lZEVxdWFsc2BgIGlzIG5vdCBzcGVjaWZpZWQuIElmIGJvdGggY29uZGl0aW9ucyBhcmUgc3BlY2lmaWVkLCBib3RoIG11c3QgYmUgdHJ1ZSBmb3IgdGhlIHJlZGlyZWN0IHRvIGJlIGFwcGxpZWQuXG4gKi9cbktleVByZWZpeEVxdWFscz86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSFRUUCBlcnJvciBjb2RlIHdoZW4gdGhlIHJlZGlyZWN0IGlzIGFwcGxpZWQuIEluIHRoZSBldmVudCBvZiBhbiBlcnJvciwgaWYgdGhlIGVycm9yIGNvZGUgZXF1YWxzIHRoaXMgdmFsdWUsIHRoZW4gdGhlIHNwZWNpZmllZCByZWRpcmVjdCBpcyBhcHBsaWVkLlxuICogIFJlcXVpcmVkIHdoZW4gcGFyZW50IGVsZW1lbnQgYGBDb25kaXRpb25gYCBpcyBzcGVjaWZpZWQgYW5kIHNpYmxpbmcgYGBLZXlQcmVmaXhFcXVhbHNgYCBpcyBub3Qgc3BlY2lmaWVkLiBJZiBib3RoIGFyZSBzcGVjaWZpZWQsIHRoZW4gYm90aCBtdXN0IGJlIHRydWUgZm9yIHRoZSByZWRpcmVjdCB0byBiZSBhcHBsaWVkLlxuICovXG5IdHRwRXJyb3JDb2RlUmV0dXJuZWRFcXVhbHM/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIHJlZGlyZWN0IGJlaGF2aW9yIGZvciBldmVyeSByZXF1ZXN0IHRvIHRoaXMgYnVja2V0J3Mgd2Vic2l0ZSBlbmRwb2ludC5cbiAqICAgSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgeW91IGNhbid0IHNwZWNpZnkgYW55IG90aGVyIHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0QWxsUmVxdWVzdHNUbyB7XG4vKipcbiAqIE5hbWUgb2YgdGhlIGhvc3Qgd2hlcmUgcmVxdWVzdHMgYXJlIHJlZGlyZWN0ZWQuXG4gKi9cbkhvc3ROYW1lOiBzdHJpbmdcbi8qKlxuICogUHJvdG9jb2wgdG8gdXNlIHdoZW4gcmVkaXJlY3RpbmcgcmVxdWVzdHMuIFRoZSBkZWZhdWx0IGlzIHRoZSBwcm90b2NvbCB0aGF0IGlzIHVzZWQgaW4gdGhlIG9yaWdpbmFsIHJlcXVlc3QuXG4gKi9cblByb3RvY29sPzogKFwiaHR0cFwiIHwgXCJodHRwc1wiKVxufVxuIl19
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXMzLWJ1Y2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1zMy1idWNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIG9iamVjdCBlbmNyeXB0aW9uIHR5cGUgdGhhdCB5b3Ugd2FudCB0byBibG9jayBvciB1bmJsb2NrIGZvciBhbiBBbWF6b24gUzMgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC5cbiAqICAgQ3VycmVudGx5LCB0aGlzIHBhcmFtZXRlciBvbmx5IHN1cHBvcnRzIGJsb2NraW5nIG9yIHVuYmxvY2tpbmcgc2VydmVyIHNpZGUgZW5jcnlwdGlvbiB3aXRoIGN1c3RvbWVyLXByb3ZpZGVkIGtleXMgKFNTRS1DKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgU1NFLUMsIHNlZSBbVXNpbmcgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIGN1c3RvbWVyLXByb3ZpZGVkIGtleXMgKFNTRS1DKV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvU2VydmVyU2lkZUVuY3J5cHRpb25DdXN0b21lcktleXMuaHRtbCkuXG4gKi9cbmV4cG9ydCB0eXBlIEJsb2NrZWRFbmNyeXB0aW9uVHlwZUxpc3QgPSAoXCJOT05FXCIgfCBcIlNTRS1DXCIpW11cbi8qKlxuICogQW1hem9uIFMzIGtleSBmb3JtYXQgZm9yIGxvZyBvYmplY3RzLiBPbmx5IG9uZSBmb3JtYXQsIGVpdGhlciBQYXJ0aXRpb25lZFByZWZpeCBvciBTaW1wbGVQcmVmaXgsIGlzIGFsbG93ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFRhcmdldE9iamVjdEtleUZvcm1hdCA9ICh7XG4vKipcbiAqIFRoaXMgZm9ybWF0IGRlZmF1bHRzIHRoZSBwcmVmaXggdG8gdGhlIGdpdmVuIGxvZyBmaWxlIHByZWZpeCBmb3IgZGVsaXZlcmluZyBzZXJ2ZXIgYWNjZXNzIGxvZyBmaWxlLlxuICovXG5TaW1wbGVQcmVmaXg6IHtcblxufVxufSB8IHtcblBhcnRpdGlvbmVkUHJlZml4OiBQYXJ0aXRpb25lZFByZWZpeFxufSlcblxuLyoqXG4gKiBUaGUgYGBBV1M6OlMzOjpCdWNrZXRgYCByZXNvdXJjZSBjcmVhdGVzIGFuIEFtYXpvbiBTMyBidWNrZXQgaW4gdGhlIHNhbWUgQVdTIFJlZ2lvbiB3aGVyZSB5b3UgY3JlYXRlIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gKiAgVG8gY29udHJvbCBob3cgQVdTIENsb3VkRm9ybWF0aW9uIGhhbmRsZXMgdGhlIGJ1Y2tldCB3aGVuIHRoZSBzdGFjayBpcyBkZWxldGVkLCB5b3UgY2FuIHNldCBhIGRlbGV0aW9uIHBvbGljeSBmb3IgeW91ciBidWNrZXQuIFlvdSBjYW4gY2hvb3NlIHRvICpyZXRhaW4qIHRoZSBidWNrZXQgb3IgdG8gKmRlbGV0ZSogdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRGVsZXRpb25Qb2xpY3kgQXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtYXR0cmlidXRlLWRlbGV0aW9ucG9saWN5Lmh0bWwpLlxuICogICBZb3UgY2FuIG9ubHkgZGVsZXRlIGVtcHR5IGJ1Y2tldHMuIERlbGV0aW9uIGZhaWxzIGZvciBidWNrZXRzIHRoYXQgaGF2ZSBjb250ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX1MzX0JVQ0tFVCB7XG5BY2NlbGVyYXRlQ29uZmlndXJhdGlvbj86IEFjY2VsZXJhdGVDb25maWd1cmF0aW9uXG4vKipcbiAqIFRoaXMgaXMgYSBsZWdhY3kgcHJvcGVydHksIGFuZCBpdCBpcyBub3QgcmVjb21tZW5kZWQgZm9yIG1vc3QgdXNlIGNhc2VzLiBBIG1ham9yaXR5IG9mIG1vZGVybiB1c2UgY2FzZXMgaW4gQW1hem9uIFMzIG5vIGxvbmdlciByZXF1aXJlIHRoZSB1c2Ugb2YgQUNMcywgYW5kIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBrZWVwIEFDTHMgZGlzYWJsZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbnRyb2xsaW5nIG9iamVjdCBvd25lcnNoaXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS8vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9hYm91dC1vYmplY3Qtb3duZXJzaGlwLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICogICBBIGNhbm5lZCBhY2Nlc3MgY29udHJvbCBsaXN0IChBQ0wpIHRoYXQgZ3JhbnRzIHByZWRlZmluZWQgcGVybWlzc2lvbnMgdG8gdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY2FubmVkIEFDTHMsIHNlZSBbQ2FubmVkIEFDTF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYWNsLW92ZXJ2aWV3Lmh0bWwjY2FubmVkLWFjbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKiAgIFMzIGJ1Y2tldHMgYXJlIGNyZWF0ZWQgd2l0aCBBQ0xzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRoZXJlZm9yZSwgdW5sZXNzIHlvdSBleHBsaWNpdGx5IHNldCB0aGUgW0FXUzo6UzM6Ok93bmVyc2hpcENvbnRyb2xzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LW93bmVyc2hpcGNvbnRyb2xzLmh0bWwpIHByb3BlcnR5IHRvIGVuYWJsZSBBQ0xzLCB5b3VyIHJlc291cmNlIHdpbGwgZmFpbCB0byBkZXBsb3kgd2l0aCBhbnkgdmFsdWUgb3RoZXIgdGhhbiBQcml2YXRlLiBVc2UgY2FzZXMgcmVxdWlyaW5nIEFDTHMgYXJlIHVuY29tbW9uLlxuICogICBUaGUgbWFqb3JpdHkgb2YgYWNjZXNzIGNvbnRyb2wgY29uZmlndXJhdGlvbnMgY2FuIGJlIHN1Y2Nlc3NmdWxseSBhbmQgbW9yZSBlYXNpbHkgYWNoaWV2ZWQgd2l0aCBidWNrZXQgcG9saWNpZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FXUzo6UzM6OkJ1Y2tldFBvbGljeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLXBvbGljeS5odG1sKS4gRm9yIGV4YW1wbGVzIG9mIGNvbW1vbiBwb2xpY3kgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBTMyBTZXJ2ZXIgQWNjZXNzIExvZ3MgYnVja2V0cyBhbmQgbW9yZSwgc2VlIFtCdWNrZXQgcG9saWN5IGV4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9leGFtcGxlLWJ1Y2tldC1wb2xpY2llcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuQWNjZXNzQ29udHJvbD86IChcIkF1dGhlbnRpY2F0ZWRSZWFkXCIgfCBcIkF3c0V4ZWNSZWFkXCIgfCBcIkJ1Y2tldE93bmVyRnVsbENvbnRyb2xcIiB8IFwiQnVja2V0T3duZXJSZWFkXCIgfCBcIkxvZ0RlbGl2ZXJ5V3JpdGVcIiB8IFwiUHJpdmF0ZVwiIHwgXCJQdWJsaWNSZWFkXCIgfCBcIlB1YmxpY1JlYWRXcml0ZVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGFueSBhbmFseXNlcyBmb3IgdGhlIGFuYWx5dGljcyBmaWx0ZXIgb2YgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuQW5hbHl0aWNzQ29uZmlndXJhdGlvbnM/OiBBbmFseXRpY3NDb25maWd1cmF0aW9uW11cbkJ1Y2tldEVuY3J5cHRpb24/OiBCdWNrZXRFbmNyeXB0aW9uXG4vKipcbiAqIEEgbmFtZSBmb3IgdGhlIGJ1Y2tldC4gSWYgeW91IGRvbid0IHNwZWNpZnkgYSBuYW1lLCBBV1MgQ2xvdWRGb3JtYXRpb24gZ2VuZXJhdGVzIGEgdW5pcXVlIElEIGFuZCB1c2VzIHRoYXQgSUQgZm9yIHRoZSBidWNrZXQgbmFtZS4gVGhlIGJ1Y2tldCBuYW1lIG11c3QgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBwZXJpb2RzICguKSwgYW5kIGRhc2hlcyAoLSkgYW5kIG11c3QgZm9sbG93IFtBbWF6b24gUzMgYnVja2V0IHJlc3RyaWN0aW9ucyBhbmQgbGltaXRhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L0J1Y2tldFJlc3RyaWN0aW9ucy5odG1sKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUnVsZXMgZm9yIG5hbWluZyBBbWF6b24gUzMgYnVja2V0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvYnVja2V0bmFtaW5ncnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouIFxuICogICBJZiB5b3Ugc3BlY2lmeSBhIG5hbWUsIHlvdSBjYW4ndCBwZXJmb3JtIHVwZGF0ZXMgdGhhdCByZXF1aXJlIHJlcGxhY2VtZW50IG9mIHRoaXMgcmVzb3VyY2UuIFlvdSBjYW4gcGVyZm9ybSB1cGRhdGVzIHRoYXQgcmVxdWlyZSBubyBvciBzb21lIGludGVycnVwdGlvbi4gSWYgeW91IG5lZWQgdG8gcmVwbGFjZSB0aGUgcmVzb3VyY2UsIHNwZWNpZnkgYSBuZXcgbmFtZS5cbiAqL1xuQnVja2V0TmFtZT86IHN0cmluZ1xuQnVja2V0TmFtZVByZWZpeD86IHN0cmluZ1xuQnVja2V0TmFtZXNwYWNlPzogKFwiZ2xvYmFsXCIgfCBcImFjY291bnQtcmVnaW9uYWxcIilcbkNvcnNDb25maWd1cmF0aW9uPzogQ29yc0NvbmZpZ3VyYXRpb25cbi8qKlxuICogRGVmaW5lcyBob3cgQW1hem9uIFMzIGhhbmRsZXMgSW50ZWxsaWdlbnQtVGllcmluZyBzdG9yYWdlLlxuICovXG5JbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9ucz86IEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25bXVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIFMzIEludmVudG9yeSBjb25maWd1cmF0aW9uIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtHRVQgQnVja2V0IGludmVudG9yeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldEdFVEludmVudG9yeUNvbmZpZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuSW52ZW50b3J5Q29uZmlndXJhdGlvbnM/OiBJbnZlbnRvcnlDb25maWd1cmF0aW9uW11cbkxpZmVjeWNsZUNvbmZpZ3VyYXRpb24/OiBMaWZlY3ljbGVDb25maWd1cmF0aW9uXG5Mb2dnaW5nQ29uZmlndXJhdGlvbj86IExvZ2dpbmdDb25maWd1cmF0aW9uXG4vKipcbiAqIFNwZWNpZmllcyBhIG1ldHJpY3MgY29uZmlndXJhdGlvbiBmb3IgdGhlIENsb3VkV2F0Y2ggcmVxdWVzdCBtZXRyaWNzIChzcGVjaWZpZWQgYnkgdGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBJRCkgZnJvbSBhbiBBbWF6b24gUzMgYnVja2V0LiBJZiB5b3UncmUgdXBkYXRpbmcgYW4gZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLCBub3RlIHRoYXQgdGhpcyBpcyBhIGZ1bGwgcmVwbGFjZW1lbnQgb2YgdGhlIGV4aXN0aW5nIG1ldHJpY3MgY29uZmlndXJhdGlvbi4gSWYgeW91IGRvbid0IGluY2x1ZGUgdGhlIGVsZW1lbnRzIHlvdSB3YW50IHRvIGtlZXAsIHRoZXkgYXJlIGVyYXNlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUHV0QnVja2V0TWV0cmljc0NvbmZpZ3VyYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvQVBJL1JFU1RCdWNrZXRQVVRNZXRyaWNDb25maWd1cmF0aW9uLmh0bWwpLlxuICovXG5NZXRyaWNzQ29uZmlndXJhdGlvbnM/OiBNZXRyaWNzQ29uZmlndXJhdGlvbltdXG5NZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbj86IE1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uXG5NZXRhZGF0YUNvbmZpZ3VyYXRpb24/OiBNZXRhZGF0YUNvbmZpZ3VyYXRpb25cbk5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24/OiBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uXG5PYmplY3RMb2NrQ29uZmlndXJhdGlvbj86IE9iamVjdExvY2tDb25maWd1cmF0aW9uXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgYnVja2V0IGhhcyBhbiBPYmplY3QgTG9jayBjb25maWd1cmF0aW9uIGVuYWJsZWQuIEVuYWJsZSBgYE9iamVjdExvY2tFbmFibGVkYGAgd2hlbiB5b3UgYXBwbHkgYGBPYmplY3RMb2NrQ29uZmlndXJhdGlvbmBgIHRvIGEgYnVja2V0LlxuICovXG5PYmplY3RMb2NrRW5hYmxlZD86IGJvb2xlYW5cbk93bmVyc2hpcENvbnRyb2xzPzogT3duZXJzaGlwQ29udHJvbHNcblB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbj86IFB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvblxuUmVwbGljYXRpb25Db25maWd1cmF0aW9uPzogUmVwbGljYXRpb25Db25maWd1cmF0aW9uXG4vKipcbiAqIEFuIGFyYml0cmFyeSBzZXQgb2YgdGFncyAoa2V5LXZhbHVlIHBhaXJzKSBmb3IgdGhpcyBTMyBidWNrZXQuXG4gKi9cblRhZ3M/OiBUYWdbXVxuLyoqXG4gKiBUaGUgQUJBQyBzdGF0dXMgb2YgdGhlIGdlbmVyYWwgcHVycG9zZSBidWNrZXQuIFdoZW4gQUJBQyBpcyBlbmFibGVkIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldCwgeW91IGNhbiB1c2UgdGFncyB0byBtYW5hZ2UgYWNjZXNzIHRvIHRoZSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0cyBhcyB3ZWxsIGFzIGZvciBjb3N0IHRyYWNraW5nIHB1cnBvc2VzLiBXaGVuIEFCQUMgaXMgZGlzYWJsZWQgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0cywgeW91IGNhbiBvbmx5IHVzZSB0YWdzIGZvciBjb3N0IHRyYWNraW5nIHB1cnBvc2VzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtVc2luZyB0YWdzIHdpdGggUzMgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2J1Y2tldHMtdGFnZ2luZy5odG1sKS5cbiAqL1xuQWJhY1N0YXR1cz86IChcIkVuYWJsZWRcIiB8IFwiRGlzYWJsZWRcIilcblZlcnNpb25pbmdDb25maWd1cmF0aW9uPzogVmVyc2lvbmluZ0NvbmZpZ3VyYXRpb25cbldlYnNpdGVDb25maWd1cmF0aW9uPzogV2Vic2l0ZUNvbmZpZ3VyYXRpb25cbkFybj86IHN0cmluZ1xuRG9tYWluTmFtZT86IHN0cmluZ1xuRHVhbFN0YWNrRG9tYWluTmFtZT86IHN0cmluZ1xuUmVnaW9uYWxEb21haW5OYW1lPzogc3RyaW5nXG5XZWJzaXRlVVJMPzogc3RyaW5nXG59XG4vKipcbiAqIENvbmZpZ3VyZXMgdGhlIHRyYW5zZmVyIGFjY2VsZXJhdGlvbiBzdGF0ZSBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIFMzIFRyYW5zZmVyIEFjY2VsZXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvdHJhbnNmZXItYWNjZWxlcmF0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2VsZXJhdGVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSB0cmFuc2ZlciBhY2NlbGVyYXRpb24gc3RhdHVzIG9mIHRoZSBidWNrZXQuXG4gKi9cbkFjY2VsZXJhdGlvblN0YXR1czogKFwiRW5hYmxlZFwiIHwgXCJTdXNwZW5kZWRcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBjb25maWd1cmF0aW9uIGFuZCBhbnkgYW5hbHlzZXMgZm9yIHRoZSBhbmFseXRpY3MgZmlsdGVyIG9mIGFuIEFtYXpvbiBTMyBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW5hbHl0aWNzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSB0YWdzIHRvIHVzZSB3aGVuIGV2YWx1YXRpbmcgYW4gYW5hbHl0aWNzIGZpbHRlci5cbiAqICBUaGUgYW5hbHl0aWNzIG9ubHkgaW5jbHVkZXMgb2JqZWN0cyB0aGF0IG1lZXQgdGhlIGZpbHRlcidzIGNyaXRlcmlhLiBJZiBubyBmaWx0ZXIgaXMgc3BlY2lmaWVkLCBhbGwgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWNrZXQgYXJlIGluY2x1ZGVkIGluIHRoZSBhbmFseXNpcy5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG5TdG9yYWdlQ2xhc3NBbmFseXNpczogU3RvcmFnZUNsYXNzQW5hbHlzaXNcbi8qKlxuICogVGhlIElEIHRoYXQgaWRlbnRpZmllcyB0aGUgYW5hbHl0aWNzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbklkOiBzdHJpbmdcbi8qKlxuICogVGhlIHByZWZpeCB0aGF0IGFuIG9iamVjdCBtdXN0IGhhdmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGFuYWx5dGljcyByZXN1bHRzLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRhZ3MgdG8gdXNlIHRvIGlkZW50aWZ5IGEgc3Vic2V0IG9mIG9iamVjdHMgZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NhdGVnb3JpemluZyB5b3VyIHN0b3JhZ2UgdXNpbmcgdGFnc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LXRhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gU2ltcGxlIFN0b3JhZ2UgU2VydmljZSBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWdGaWx0ZXIge1xuLyoqXG4gKiBUaGUgdGFnIHZhbHVlLlxuICovXG5WYWx1ZTogc3RyaW5nXG4vKipcbiAqIFRoZSB0YWcga2V5LlxuICovXG5LZXk6IHN0cmluZ1xufVxuLyoqXG4gKiBDb250YWlucyBkYXRhIHJlbGF0ZWQgdG8gYWNjZXNzIHBhdHRlcm5zIHRvIGJlIGNvbGxlY3RlZCBhbmQgbWFkZSBhdmFpbGFibGUgdG8gYW5hbHl6ZSB0aGUgdHJhZGVvZmZzIGJldHdlZW4gZGlmZmVyZW50IHN0b3JhZ2UgY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlQ2xhc3NBbmFseXNpcyB7XG5EYXRhRXhwb3J0PzogRGF0YUV4cG9ydFxufVxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IGRhdGEgcmVsYXRlZCB0byB0aGUgc3RvcmFnZSBjbGFzcyBhbmFseXNpcyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldCBzaG91bGQgYmUgZXhwb3J0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUV4cG9ydCB7XG5EZXN0aW5hdGlvbjogRGVzdGluYXRpb25cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIG91dHB1dCBzY2hlbWEgdG8gdXNlIHdoZW4gZXhwb3J0aW5nIGRhdGEuIE11c3QgYmUgYGBWXzFgYC5cbiAqL1xuT3V0cHV0U2NoZW1hVmVyc2lvbjogXCJWXzFcIlxufVxuLyoqXG4gKiBUaGUgcGxhY2UgdG8gc3RvcmUgdGhlIGRhdGEgZm9yIGFuIGFuYWx5c2lzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3RpbmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBidWNrZXQgdG8gd2hpY2ggZGF0YSBpcyBleHBvcnRlZC5cbiAqL1xuQnVja2V0QXJuOiBzdHJpbmdcbi8qKlxuICogVGhlIGFjY291bnQgSUQgdGhhdCBvd25zIHRoZSBkZXN0aW5hdGlvbiBTMyBidWNrZXQuIElmIG5vIGFjY291bnQgSUQgaXMgcHJvdmlkZWQsIHRoZSBvd25lciBpcyBub3QgdmFsaWRhdGVkIGJlZm9yZSBleHBvcnRpbmcgZGF0YS5cbiAqICAgIEFsdGhvdWdoIHRoaXMgdmFsdWUgaXMgb3B0aW9uYWwsIHdlIHN0cm9uZ2x5IHJlY29tbWVuZCB0aGF0IHlvdSBzZXQgaXQgdG8gaGVscCBwcmV2ZW50IHByb2JsZW1zIGlmIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQgb3duZXJzaGlwIGNoYW5nZXMuXG4gKi9cbkJ1Y2tldEFjY291bnRJZD86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGZpbGUgZm9ybWF0IHVzZWQgd2hlbiBleHBvcnRpbmcgZGF0YSB0byBBbWF6b24gUzMuXG4gKiAgKkFsbG93ZWQgdmFsdWVzKjogYGBDU1ZgYCB8IGBgT1JDYGAgfCBgYFBhcnF1ZXRgYFxuICovXG5Gb3JtYXQ6IChcIkNTVlwiIHwgXCJPUkNcIiB8IFwiUGFycXVldFwiKVxuLyoqXG4gKiBUaGUgcHJlZml4IHRvIHVzZSB3aGVuIGV4cG9ydGluZyBkYXRhLiBUaGUgcHJlZml4IGlzIHByZXBlbmRlZCB0byBhbGwgcmVzdWx0cy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBkZWZhdWx0IGVuY3J5cHRpb24gZm9yIGEgYnVja2V0IHVzaW5nIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBBbWF6b24gUzMtbWFuYWdlZCBrZXlzIChTU0UtUzMpLCBBV1MgS01TLW1hbmFnZWQga2V5cyAoU1NFLUtNUyksIG9yIGR1YWwtbGF5ZXIgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEtNUy1tYW5hZ2VkIGtleXMgKERTU0UtS01TKS4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBBbWF6b24gUzMgZGVmYXVsdCBlbmNyeXB0aW9uIGZlYXR1cmUsIHNlZSBbQW1hem9uIFMzIERlZmF1bHQgRW5jcnlwdGlvbiBmb3IgUzMgQnVja2V0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYnVja2V0LWVuY3J5cHRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVja2V0RW5jcnlwdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBzZXJ2ZXItc2lkZS1lbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cblNlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogU2VydmVyU2lkZUVuY3J5cHRpb25SdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbi5cbiAqICAgICsgICpHZW5lcmFsIHB1cnBvc2UgYnVja2V0cyogLSBJZiB5b3UncmUgc3BlY2lmeWluZyBhIGN1c3RvbWVyIG1hbmFnZWQgS01TIGtleSwgd2UgcmVjb21tZW5kIHVzaW5nIGEgZnVsbHkgcXVhbGlmaWVkIEtNUyBrZXkgQVJOLiBJZiB5b3UgdXNlIGEgS01TIGtleSBhbGlhcyBpbnN0ZWFkLCB0aGVuIEtNUyByZXNvbHZlcyB0aGUga2V5IHdpdGhpbiB0aGUgcmVxdWVzdGVy4oCZcyBhY2NvdW50LiBUaGlzIGJlaGF2aW9yIGNhbiByZXN1bHQgaW4gZGF0YSB0aGF0J3MgZW5jcnlwdGVkIHdpdGggYSBLTVMga2V5IHRoYXQgYmVsb25ncyB0byB0aGUgcmVxdWVzdGVyLCBhbmQgbm90IHRoZSBidWNrZXQgb3duZXIuXG4gKiAgICsgICpEaXJlY3RvcnkgYnVja2V0cyogLSBXaGVuIHlvdSBzcGVjaWZ5IGFuIFtjdXN0b21lciBtYW5hZ2VkIGtleV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ttcy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvY29uY2VwdHMuaHRtbCNjdXN0b21lci1jbWspIGZvciBlbmNyeXB0aW9uIGluIHlvdXIgZGlyZWN0b3J5IGJ1Y2tldCwgb25seSB1c2UgdGhlIGtleSBJRCBvciBrZXkgQVJOLiBUaGUga2V5IGFsaWFzIGZvcm1hdCBvZiB0aGUgS01TIGtleSBpc24ndCBzdXBwb3J0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyU2lkZUVuY3J5cHRpb25SdWxlIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHNob3VsZCB1c2UgYW4gUzMgQnVja2V0IEtleSB3aXRoIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdXNpbmcgS01TIChTU0UtS01TKSBmb3IgbmV3IG9iamVjdHMgaW4gdGhlIGJ1Y2tldC4gRXhpc3Rpbmcgb2JqZWN0cyBhcmUgbm90IGFmZmVjdGVkLiBTZXR0aW5nIHRoZSBgYEJ1Y2tldEtleUVuYWJsZWRgYCBlbGVtZW50IHRvIGBgdHJ1ZWBgIGNhdXNlcyBBbWF6b24gUzMgdG8gdXNlIGFuIFMzIEJ1Y2tldCBLZXkuIEJ5IGRlZmF1bHQsIFMzIEJ1Y2tldCBLZXkgaXMgbm90IGVuYWJsZWQuXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQW1hem9uIFMzIEJ1Y2tldCBLZXlzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9idWNrZXQta2V5Lmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5CdWNrZXRLZXlFbmFibGVkPzogYm9vbGVhblxuU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQ/OiBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkJ5RGVmYXVsdFxuQmxvY2tlZEVuY3J5cHRpb25UeXBlcz86IEJsb2NrZWRFbmNyeXB0aW9uVHlwZXNcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdG8gYXBwbHkgdG8gbmV3IG9iamVjdHMgaW4gdGhlIGJ1Y2tldC4gSWYgYSBQVVQgT2JqZWN0IHJlcXVlc3QgZG9lc24ndCBzcGVjaWZ5IGFueSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLCB0aGlzIGRlZmF1bHQgZW5jcnlwdGlvbiB3aWxsIGJlIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQge1xuLyoqXG4gKiBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSBjdXN0b21lciBtYW5hZ2VkIGtleSBJRCB0byB1c2UgZm9yIHRoZSBkZWZhdWx0IGVuY3J5cHRpb24uIFxuICogICAgKyAgKkdlbmVyYWwgcHVycG9zZSBidWNrZXRzKiAtIFRoaXMgcGFyYW1ldGVyIGlzIGFsbG93ZWQgaWYgYW5kIG9ubHkgaWYgYGBTU0VBbGdvcml0aG1gYCBpcyBzZXQgdG8gYGBhd3M6a21zYGAgb3IgYGBhd3M6a21zOmRzc2VgYC5cbiAqICAgKyAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFRoaXMgcGFyYW1ldGVyIGlzIGFsbG93ZWQgaWYgYW5kIG9ubHkgaWYgYGBTU0VBbGdvcml0aG1gYCBpcyBzZXQgdG8gYGBhd3M6a21zYGAuXG4gKiAgIFxuICogICBZb3UgY2FuIHNwZWNpZnkgdGhlIGtleSBJRCwga2V5IGFsaWFzLCBvciB0aGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEtNUyBrZXkuXG4gKiAgICsgIEtleSBJRDogYGAxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwYWJgYFxuICogICArICBLZXkgQVJOOiBgYGFybjphd3M6a21zOnVzLWVhc3QtMjoxMTExMjIyMjMzMzM6a2V5LzEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYmBgXG4gKiAgICsgIEtleSBBbGlhczogYGBhbGlhcy9hbGlhcy1uYW1lYGBcbiAqICAgXG4gKiAgSWYgeW91IGFyZSB1c2luZyBlbmNyeXB0aW9uIHdpdGggY3Jvc3MtYWNjb3VudCBvciBBV1Mgc2VydmljZSBvcGVyYXRpb25zLCB5b3UgbXVzdCB1c2UgYSBmdWxseSBxdWFsaWZpZWQgS01TIGtleSBBUk4uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzaW5nIGVuY3J5cHRpb24gZm9yIGNyb3NzLWFjY291bnQgb3BlcmF0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYnVja2V0LWVuY3J5cHRpb24uaHRtbCNidWNrZXQtZW5jcnlwdGlvbi11cGRhdGUtYnVja2V0LXBvbGljeSkuXG4gKiAgICArICAqR2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMqIC0gSWYgeW91J3JlIHNwZWNpZnlpbmcgYSBjdXN0b21lciBtYW5hZ2VkIEtNUyBrZXksIHdlIHJlY29tbWVuZCB1c2luZyBhIGZ1bGx5IHF1YWxpZmllZCBLTVMga2V5IEFSTi4gSWYgeW91IHVzZSBhIEtNUyBrZXkgYWxpYXMgaW5zdGVhZCwgdGhlbiBLTVMgcmVzb2x2ZXMgdGhlIGtleSB3aXRoaW4gdGhlIHJlcXVlc3RlcuKAmXMgYWNjb3VudC4gVGhpcyBiZWhhdmlvciBjYW4gcmVzdWx0IGluIGRhdGEgdGhhdCdzIGVuY3J5cHRlZCB3aXRoIGEgS01TIGtleSB0aGF0IGJlbG9uZ3MgdG8gdGhlIHJlcXVlc3RlciwgYW5kIG5vdCB0aGUgYnVja2V0IG93bmVyLiBBbHNvLCBpZiB5b3UgdXNlIGEga2V5IElELCB5b3UgY2FuIHJ1biBpbnRvIGEgTG9nRGVzdGluYXRpb24gdW5kZWxpdmVyYWJsZSBlcnJvciB3aGVuIGNyZWF0aW5nIGEgVlBDIGZsb3cgbG9nLiBcbiAqICAgKyAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFdoZW4geW91IHNwZWNpZnkgYW4gW2N1c3RvbWVyIG1hbmFnZWQga2V5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9jb25jZXB0cy5odG1sI2N1c3RvbWVyLWNtaykgZm9yIGVuY3J5cHRpb24gaW4geW91ciBkaXJlY3RvcnkgYnVja2V0LCBvbmx5IHVzZSB0aGUga2V5IElEIG9yIGtleSBBUk4uIFRoZSBrZXkgYWxpYXMgZm9ybWF0IG9mIHRoZSBLTVMga2V5IGlzbid0IHN1cHBvcnRlZC5cbiAqICAgXG4gKiAgICBBbWF6b24gUzMgb25seSBzdXBwb3J0cyBzeW1tZXRyaWMgZW5jcnlwdGlvbiBLTVMga2V5cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXN5bW1ldHJpYyBrZXlzIGluIEtNU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3N5bW1ldHJpYy1hc3ltbWV0cmljLmh0bWwpIGluIHRoZSAqS2V5IE1hbmFnZW1lbnQgU2VydmljZSBEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5LTVNNYXN0ZXJLZXlJRD86IHN0cmluZ1xuLyoqXG4gKiBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGFsZ29yaXRobSB0byB1c2UgZm9yIHRoZSBkZWZhdWx0IGVuY3J5cHRpb24uXG4gKiAgIEZvciBkaXJlY3RvcnkgYnVja2V0cywgdGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCB2YWx1ZXMgZm9yIHNlcnZlci1zaWRlIGVuY3J5cHRpb246IGBgQUVTMjU2YGAgYW5kIGBgYXdzOmttc2BgLlxuICovXG5TU0VBbGdvcml0aG06IChcImF3czprbXNcIiB8IFwiQUVTMjU2XCIgfCBcImF3czprbXM6ZHNzZVwiKVxufVxuLyoqXG4gKiBBIGJ1Y2tldC1sZXZlbCBzZXR0aW5nIGZvciBBbWF6b24gUzMgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMgdXNlZCB0byBwcmV2ZW50IHRoZSB1cGxvYWQgb2YgbmV3IG9iamVjdHMgZW5jcnlwdGVkIHdpdGggdGhlIHNwZWNpZmllZCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHR5cGUuIEZvciBleGFtcGxlLCBibG9ja2luZyBhbiBlbmNyeXB0aW9uIHR5cGUgd2lsbCBibG9jayBgYFB1dE9iamVjdGBgLCBgYENvcHlPYmplY3RgYCwgYGBQb3N0T2JqZWN0YGAsIG11bHRpcGFydCB1cGxvYWQsIGFuZCByZXBsaWNhdGlvbiByZXF1ZXN0cyB0byB0aGUgYnVja2V0IGZvciBvYmplY3RzIHdpdGggdGhlIHNwZWNpZmllZCBlbmNyeXB0aW9uIHR5cGUuIEhvd2V2ZXIsIHlvdSBjYW4gY29udGludWUgdG8gcmVhZCBhbmQgbGlzdCBhbnkgcHJlLWV4aXN0aW5nIG9iamVjdHMgYWxyZWFkeSBlbmNyeXB0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGVuY3J5cHRpb24gdHlwZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQmxvY2tpbmcgb3IgdW5ibG9ja2luZyBTU0UtQyBmb3IgYSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9ibG9ja2luZy11bmJsb2NraW5nLXMzLWMtZW5jcnlwdGlvbi1ncGIuaHRtbCkuXG4gKiAgIEN1cnJlbnRseSwgdGhpcyBwYXJhbWV0ZXIgb25seSBzdXBwb3J0cyBibG9ja2luZyBvciB1bmJsb2NraW5nIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBjdXN0b21lci1wcm92aWRlZCBrZXlzIChTU0UtQykuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFNTRS1DLCBzZWUgW1VzaW5nIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBjdXN0b21lci1wcm92aWRlZCBrZXlzIChTU0UtQyldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL1NlcnZlclNpZGVFbmNyeXB0aW9uQ3VzdG9tZXJLZXlzLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrZWRFbmNyeXB0aW9uVHlwZXMge1xuRW5jcnlwdGlvblR5cGU/OiBCbG9ja2VkRW5jcnlwdGlvblR5cGVMaXN0XG59XG4vKipcbiAqIERlc2NyaWJlcyB0aGUgY3Jvc3Mtb3JpZ2luIGFjY2VzcyBjb25maWd1cmF0aW9uIGZvciBvYmplY3RzIGluIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0VuYWJsaW5nIENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9jb3JzLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcnNDb25maWd1cmF0aW9uIHtcbi8qKlxuICogQSBzZXQgb2Ygb3JpZ2lucyBhbmQgbWV0aG9kcyAoY3Jvc3Mtb3JpZ2luIGFjY2VzcyB0aGF0IHlvdSB3YW50IHRvIGFsbG93KS4gWW91IGNhbiBhZGQgdXAgdG8gMTAwIHJ1bGVzIHRvIHRoZSBjb25maWd1cmF0aW9uLlxuICovXG5Db3JzUnVsZXM6IENvcnNSdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgY3Jvc3Mtb3JpZ2luIGFjY2VzcyBydWxlIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcnNSdWxlIHtcbi8qKlxuICogSGVhZGVycyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGBgQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzYGAgaGVhZGVyLiBUaGVzZSBoZWFkZXJzIGFyZSBhbGxvd2VkIGluIGEgcHJlZmxpZ2h0IE9QVElPTlMgcmVxdWVzdC4gSW4gcmVzcG9uc2UgdG8gYW55IHByZWZsaWdodCBPUFRJT05TIHJlcXVlc3QsIEFtYXpvbiBTMyByZXR1cm5zIGFueSByZXF1ZXN0ZWQgaGVhZGVycyB0aGF0IGFyZSBhbGxvd2VkLlxuICovXG5BbGxvd2VkSGVhZGVycz86IHN0cmluZ1tdXG4vKipcbiAqIEFuIEhUVFAgbWV0aG9kIHRoYXQgeW91IGFsbG93IHRoZSBvcmlnaW4gdG8gcnVuLlxuICogICpBbGxvd2VkIHZhbHVlcyo6IGBgR0VUYGAgfCBgYFBVVGBgIHwgYGBIRUFEYGAgfCBgYFBPU1RgYCB8IGBgREVMRVRFYGBcbiAqL1xuQWxsb3dlZE1ldGhvZHM6IChcIkdFVFwiIHwgXCJQVVRcIiB8IFwiSEVBRFwiIHwgXCJQT1NUXCIgfCBcIkRFTEVURVwiKVtdXG4vKipcbiAqIE9uZSBvciBtb3JlIG9yaWdpbnMgeW91IHdhbnQgY3VzdG9tZXJzIHRvIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBidWNrZXQgZnJvbS5cbiAqL1xuQWxsb3dlZE9yaWdpbnM6IHN0cmluZ1tdXG4vKipcbiAqIE9uZSBvciBtb3JlIGhlYWRlcnMgaW4gdGhlIHJlc3BvbnNlIHRoYXQgeW91IHdhbnQgY3VzdG9tZXJzIHRvIGJlIGFibGUgdG8gYWNjZXNzIGZyb20gdGhlaXIgYXBwbGljYXRpb25zIChmb3IgZXhhbXBsZSwgZnJvbSBhIEphdmFTY3JpcHQgYGBYTUxIdHRwUmVxdWVzdGBgIG9iamVjdCkuXG4gKi9cbkV4cG9zZWRIZWFkZXJzPzogc3RyaW5nW11cbi8qKlxuICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBydWxlLiBUaGUgdmFsdWUgbXVzdCBiZSBubyBtb3JlIHRoYW4gMjU1IGNoYXJhY3RlcnMuXG4gKi9cbklkPzogc3RyaW5nXG4vKipcbiAqIFRoZSB0aW1lIGluIHNlY29uZHMgdGhhdCB5b3VyIGJyb3dzZXIgaXMgdG8gY2FjaGUgdGhlIHByZWZsaWdodCByZXNwb25zZSBmb3IgdGhlIHNwZWNpZmllZCByZXNvdXJjZS5cbiAqL1xuTWF4QWdlPzogbnVtYmVyXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgUzMgSW50ZWxsaWdlbnQtVGllcmluZyBjb25maWd1cmF0aW9uIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LlxuICogIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgUzMgSW50ZWxsaWdlbnQtVGllcmluZyBzdG9yYWdlIGNsYXNzLCBzZWUgW1N0b3JhZ2UgY2xhc3MgZm9yIGF1dG9tYXRpY2FsbHkgb3B0aW1pemluZyBmcmVxdWVudGx5IGFuZCBpbmZyZXF1ZW50bHkgYWNjZXNzZWQgb2JqZWN0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvc3RvcmFnZS1jbGFzcy1pbnRyby5odG1sI3NjLWR5bmFtaWMtZGF0YS1hY2Nlc3MpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgSUQgdXNlZCB0byBpZGVudGlmeSB0aGUgUzMgSW50ZWxsaWdlbnQtVGllcmluZyBjb25maWd1cmF0aW9uLlxuICovXG5JZDogc3RyaW5nXG4vKipcbiAqIEFuIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBzdGF0dXMgb2YgdGhlIGNvbmZpZ3VyYXRpb24uXG4gKi9cblN0YXR1czogKFwiRGlzYWJsZWRcIiB8IFwiRW5hYmxlZFwiKVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3IgYSBrZXktdmFsdWUgcGFpci5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG4vKipcbiAqIFNwZWNpZmllcyBhIGxpc3Qgb2YgUzMgSW50ZWxsaWdlbnQtVGllcmluZyBzdG9yYWdlIGNsYXNzIHRpZXJzIGluIHRoZSBjb25maWd1cmF0aW9uLiBBdCBsZWFzdCBvbmUgdGllciBtdXN0IGJlIGRlZmluZWQgaW4gdGhlIGxpc3QuIEF0IG1vc3QsIHlvdSBjYW4gc3BlY2lmeSB0d28gdGllcnMgaW4gdGhlIGxpc3QsIG9uZSBmb3IgZWFjaCBhdmFpbGFibGUgQWNjZXNzVGllcjogYGBBUkNISVZFX0FDQ0VTU2BgIGFuZCBgYERFRVBfQVJDSElWRV9BQ0NFU1NgYC5cbiAqICAgWW91IG9ubHkgbmVlZCBJbnRlbGxpZ2VudCBUaWVyaW5nIENvbmZpZ3VyYXRpb24gZW5hYmxlZCBvbiBhIGJ1Y2tldCBpZiB5b3Ugd2FudCB0byBhdXRvbWF0aWNhbGx5IG1vdmUgb2JqZWN0cyBzdG9yZWQgaW4gdGhlIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcyB0byBBcmNoaXZlIEFjY2VzcyBvciBEZWVwIEFyY2hpdmUgQWNjZXNzIHRpZXJzLlxuICovXG5UaWVyaW5nczogVGllcmluZ1tdXG59XG4vKipcbiAqIFRoZSBTMyBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UgY2xhc3MgaXMgZGVzaWduZWQgdG8gb3B0aW1pemUgc3RvcmFnZSBjb3N0cyBieSBhdXRvbWF0aWNhbGx5IG1vdmluZyBkYXRhIHRvIHRoZSBtb3N0IGNvc3QtZWZmZWN0aXZlIHN0b3JhZ2UgYWNjZXNzIHRpZXIsIHdpdGhvdXQgYWRkaXRpb25hbCBvcGVyYXRpb25hbCBvdmVyaGVhZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUaWVyaW5nIHtcbi8qKlxuICogUzMgSW50ZWxsaWdlbnQtVGllcmluZyBhY2Nlc3MgdGllci4gU2VlIFtTdG9yYWdlIGNsYXNzIGZvciBhdXRvbWF0aWNhbGx5IG9wdGltaXppbmcgZnJlcXVlbnRseSBhbmQgaW5mcmVxdWVudGx5IGFjY2Vzc2VkIG9iamVjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3N0b3JhZ2UtY2xhc3MtaW50cm8uaHRtbCNzYy1keW5hbWljLWRhdGEtYWNjZXNzKSBmb3IgYSBsaXN0IG9mIGFjY2VzcyB0aWVycyBpbiB0aGUgUzMgSW50ZWxsaWdlbnQtVGllcmluZyBzdG9yYWdlIGNsYXNzLlxuICovXG5BY2Nlc3NUaWVyOiAoXCJBUkNISVZFX0FDQ0VTU1wiIHwgXCJERUVQX0FSQ0hJVkVfQUNDRVNTXCIpXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgZGF5cyBvZiBubyBhY2Nlc3MgYWZ0ZXIgd2hpY2ggYW4gb2JqZWN0IHdpbGwgYmUgZWxpZ2libGUgdG8gYmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRpZXIuIFRoZSBtaW5pbXVtIG51bWJlciBvZiBkYXlzIHNwZWNpZmllZCBmb3IgQXJjaGl2ZSBBY2Nlc3MgdGllciBtdXN0IGJlIGF0IGxlYXN0IDkwIGRheXMgYW5kIERlZXAgQXJjaGl2ZSBBY2Nlc3MgdGllciBtdXN0IGJlIGF0IGxlYXN0IDE4MCBkYXlzLiBUaGUgbWF4aW11bSBjYW4gYmUgdXAgdG8gMiB5ZWFycyAoNzMwIGRheXMpLlxuICovXG5EYXlzOiBudW1iZXJcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBTMyBJbnZlbnRvcnkgY29uZmlndXJhdGlvbiBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbR0VUIEJ1Y2tldCBpbnZlbnRvcnldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvQVBJL1JFU1RCdWNrZXRHRVRJbnZlbnRvcnlDb25maWcuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgQVBJIFJlZmVyZW5jZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52ZW50b3J5Q29uZmlndXJhdGlvbiB7XG5EZXN0aW5hdGlvbjogRGVzdGluYXRpb24xXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBpbnZlbnRvcnkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4gSWYgc2V0IHRvIGBgVHJ1ZWBgLCBhbiBpbnZlbnRvcnkgbGlzdCBpcyBnZW5lcmF0ZWQuIElmIHNldCB0byBgYEZhbHNlYGAsIG5vIGludmVudG9yeSBsaXN0IGlzIGdlbmVyYXRlZC5cbiAqL1xuRW5hYmxlZDogYm9vbGVhblxuLyoqXG4gKiBUaGUgSUQgdXNlZCB0byBpZGVudGlmeSB0aGUgaW52ZW50b3J5IGNvbmZpZ3VyYXRpb24uXG4gKi9cbklkOiBzdHJpbmdcbi8qKlxuICogT2JqZWN0IHZlcnNpb25zIHRvIGluY2x1ZGUgaW4gdGhlIGludmVudG9yeSBsaXN0LiBJZiBzZXQgdG8gYGBBbGxgYCwgdGhlIGxpc3QgaW5jbHVkZXMgYWxsIHRoZSBvYmplY3QgdmVyc2lvbnMsIHdoaWNoIGFkZHMgdGhlIHZlcnNpb24tcmVsYXRlZCBmaWVsZHMgYGBWZXJzaW9uSWRgYCwgYGBJc0xhdGVzdGBgLCBhbmQgYGBEZWxldGVNYXJrZXJgYCB0byB0aGUgbGlzdC4gSWYgc2V0IHRvIGBgQ3VycmVudGBgLCB0aGUgbGlzdCBkb2VzIG5vdCBjb250YWluIHRoZXNlIHZlcnNpb24tcmVsYXRlZCBmaWVsZHMuXG4gKi9cbkluY2x1ZGVkT2JqZWN0VmVyc2lvbnM6IChcIkFsbFwiIHwgXCJDdXJyZW50XCIpXG4vKipcbiAqIENvbnRhaW5zIHRoZSBvcHRpb25hbCBmaWVsZHMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGludmVudG9yeSByZXN1bHRzLlxuICovXG5PcHRpb25hbEZpZWxkcz86IChcIlNpemVcIiB8IFwiTGFzdE1vZGlmaWVkRGF0ZVwiIHwgXCJTdG9yYWdlQ2xhc3NcIiB8IFwiRVRhZ1wiIHwgXCJJc011bHRpcGFydFVwbG9hZGVkXCIgfCBcIlJlcGxpY2F0aW9uU3RhdHVzXCIgfCBcIkVuY3J5cHRpb25TdGF0dXNcIiB8IFwiT2JqZWN0TG9ja1JldGFpblVudGlsRGF0ZVwiIHwgXCJPYmplY3RMb2NrTW9kZVwiIHwgXCJPYmplY3RMb2NrTGVnYWxIb2xkU3RhdHVzXCIgfCBcIkludGVsbGlnZW50VGllcmluZ0FjY2Vzc1RpZXJcIiB8IFwiQnVja2V0S2V5U3RhdHVzXCIgfCBcIkNoZWNrc3VtQWxnb3JpdGhtXCIgfCBcIk9iamVjdEFjY2Vzc0NvbnRyb2xMaXN0XCIgfCBcIk9iamVjdE93bmVyXCIgfCBcIkxpZmVjeWNsZUV4cGlyYXRpb25EYXRlXCIpW11cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBpbnZlbnRvcnkgZmlsdGVyIHByZWZpeC5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgc2NoZWR1bGUgZm9yIGdlbmVyYXRpbmcgaW52ZW50b3J5IHJlc3VsdHMuXG4gKi9cblNjaGVkdWxlRnJlcXVlbmN5OiAoXCJEYWlseVwiIHwgXCJXZWVrbHlcIilcbn1cbi8qKlxuICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdG8gcHVibGlzaCB0aGUgaW52ZW50b3J5IHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdGluYXRpb24xIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBidWNrZXQgdG8gd2hpY2ggZGF0YSBpcyBleHBvcnRlZC5cbiAqL1xuQnVja2V0QXJuOiBzdHJpbmdcbi8qKlxuICogVGhlIGFjY291bnQgSUQgdGhhdCBvd25zIHRoZSBkZXN0aW5hdGlvbiBTMyBidWNrZXQuIElmIG5vIGFjY291bnQgSUQgaXMgcHJvdmlkZWQsIHRoZSBvd25lciBpcyBub3QgdmFsaWRhdGVkIGJlZm9yZSBleHBvcnRpbmcgZGF0YS5cbiAqICAgIEFsdGhvdWdoIHRoaXMgdmFsdWUgaXMgb3B0aW9uYWwsIHdlIHN0cm9uZ2x5IHJlY29tbWVuZCB0aGF0IHlvdSBzZXQgaXQgdG8gaGVscCBwcmV2ZW50IHByb2JsZW1zIGlmIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQgb3duZXJzaGlwIGNoYW5nZXMuXG4gKi9cbkJ1Y2tldEFjY291bnRJZD86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGZpbGUgZm9ybWF0IHVzZWQgd2hlbiBleHBvcnRpbmcgZGF0YSB0byBBbWF6b24gUzMuXG4gKiAgKkFsbG93ZWQgdmFsdWVzKjogYGBDU1ZgYCB8IGBgT1JDYGAgfCBgYFBhcnF1ZXRgYFxuICovXG5Gb3JtYXQ6IChcIkNTVlwiIHwgXCJPUkNcIiB8IFwiUGFycXVldFwiKVxuLyoqXG4gKiBUaGUgcHJlZml4IHRvIHVzZSB3aGVuIGV4cG9ydGluZyBkYXRhLiBUaGUgcHJlZml4IGlzIHByZXBlbmRlZCB0byBhbGwgcmVzdWx0cy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gZm9yIG9iamVjdHMgaW4gYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbT2JqZWN0IExpZmVjeWNsZSBNYW5hZ2VtZW50XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9vYmplY3QtbGlmZWN5Y2xlLW1nbXQuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIEEgbGlmZWN5Y2xlIHJ1bGUgZm9yIGluZGl2aWR1YWwgb2JqZWN0cyBpbiBhbiBBbWF6b24gUzMgYnVja2V0LlxuICovXG5SdWxlczogUnVsZVtdXG4vKipcbiAqIEluZGljYXRlcyB3aGljaCBkZWZhdWx0IG1pbmltdW0gb2JqZWN0IHNpemUgYmVoYXZpb3IgaXMgYXBwbGllZCB0byB0aGUgbGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24uXG4gKiAgIFRoaXMgcGFyYW1ldGVyIGFwcGxpZXMgdG8gZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMgb25seS4gSXQgaXNuJ3Qgc3VwcG9ydGVkIGZvciBkaXJlY3RvcnkgYnVja2V0IGxpZmVjeWNsZSBjb25maWd1cmF0aW9ucy5cbiAqICAgICsgIGBgYWxsX3N0b3JhZ2VfY2xhc3Nlc18xMjhLYGAgLSBPYmplY3RzIHNtYWxsZXIgdGhhbiAxMjggS0Igd2lsbCBub3QgdHJhbnNpdGlvbiB0byBhbnkgc3RvcmFnZSBjbGFzcyBieSBkZWZhdWx0LlxuICogICArICBgYHZhcmllc19ieV9zdG9yYWdlX2NsYXNzYGAgLSBPYmplY3RzIHNtYWxsZXIgdGhhbiAxMjggS0Igd2lsbCB0cmFuc2l0aW9uIHRvIEdsYWNpZXIgRmxleGlibGUgUmV0cmlldmFsIG9yIEdsYWNpZXIgRGVlcCBBcmNoaXZlIHN0b3JhZ2UgY2xhc3Nlcy4gQnkgZGVmYXVsdCwgYWxsIG90aGVyIHN0b3JhZ2UgY2xhc3NlcyB3aWxsIHByZXZlbnQgdHJhbnNpdGlvbnMgc21hbGxlciB0aGFuIDEyOCBLQi4gXG4gKiAgIFxuICogIFRvIGN1c3RvbWl6ZSB0aGUgbWluaW11bSBvYmplY3Qgc2l6ZSBmb3IgYW55IHRyYW5zaXRpb24geW91IGNhbiBhZGQgYSBmaWx0ZXIgdGhhdCBzcGVjaWZpZXMgYSBjdXN0b20gYGBPYmplY3RTaXplR3JlYXRlclRoYW5gYCBvciBgYE9iamVjdFNpemVMZXNzVGhhbmBgIGluIHRoZSBib2R5IG9mIHlvdXIgdHJhbnNpdGlvbiBydWxlLiBDdXN0b20gZmlsdGVycyBhbHdheXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIGRlZmF1bHQgdHJhbnNpdGlvbiBiZWhhdmlvci5cbiAqL1xuVHJhbnNpdGlvbkRlZmF1bHRNaW5pbXVtT2JqZWN0U2l6ZT86IChcInZhcmllc19ieV9zdG9yYWdlX2NsYXNzXCIgfCBcImFsbF9zdG9yYWdlX2NsYXNzZXNfMTI4S1wiKVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgbGlmZWN5Y2xlIHJ1bGVzIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtQdXQgQnVja2V0IExpZmVjeWNsZSBDb25maWd1cmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0UFVUbGlmZWN5Y2xlLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICogIFlvdSBtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczogYGBBYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWRgYCwgYGBFeHBpcmF0aW9uRGF0ZWBgLCBgYEV4cGlyYXRpb25JbkRheXNgYCwgYGBOb25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb25JbkRheXNgYCwgYGBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25gYCwgYGBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25zYGAsIGBgVHJhbnNpdGlvbmBgLCBvciBgYFRyYW5zaXRpb25zYGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZSB7XG5BYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWQ/OiBBYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWRcbi8qKlxuICogSW5kaWNhdGVzIHdoZW4gb2JqZWN0cyBhcmUgZGVsZXRlZCBmcm9tIEFtYXpvbiBTMyBhbmQgQW1hem9uIFMzIEdsYWNpZXIuIFRoZSBkYXRlIHZhbHVlIG11c3QgYmUgaW4gSVNPIDg2MDEgZm9ybWF0LiBUaGUgdGltZSBpcyBhbHdheXMgbWlkbmlnaHQgVVRDLiBJZiB5b3Ugc3BlY2lmeSBhbiBleHBpcmF0aW9uIGFuZCB0cmFuc2l0aW9uIHRpbWUsIHlvdSBtdXN0IHVzZSB0aGUgc2FtZSB0aW1lIHVuaXQgZm9yIGJvdGggcHJvcGVydGllcyAoZWl0aGVyIGluIGRheXMgb3IgYnkgZGF0ZSkuIFRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBhbHNvIGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS5cbiAqL1xuRXhwaXJhdGlvbkRhdGU/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciBjcmVhdGlvbiB3aGVuIG9iamVjdHMgYXJlIGRlbGV0ZWQgZnJvbSBBbWF6b24gUzMgYW5kIEFtYXpvbiBTMyBHbGFjaWVyLiBJZiB5b3Ugc3BlY2lmeSBhbiBleHBpcmF0aW9uIGFuZCB0cmFuc2l0aW9uIHRpbWUsIHlvdSBtdXN0IHVzZSB0aGUgc2FtZSB0aW1lIHVuaXQgZm9yIGJvdGggcHJvcGVydGllcyAoZWl0aGVyIGluIGRheXMgb3IgYnkgZGF0ZSkuIFRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBhbHNvIGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS5cbiAqL1xuRXhwaXJhdGlvbkluRGF5cz86IG51bWJlclxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBBbWF6b24gUzMgd2lsbCByZW1vdmUgYSBkZWxldGUgbWFya2VyIHdpdGhvdXQgYW55IG5vbmN1cnJlbnQgdmVyc2lvbnMuIElmIHNldCB0byB0cnVlLCB0aGUgZGVsZXRlIG1hcmtlciB3aWxsIGJlIHJlbW92ZWQgaWYgdGhlcmUgYXJlIG5vIG5vbmN1cnJlbnQgdmVyc2lvbnMuIFRoaXMgY2Fubm90IGJlIHNwZWNpZmllZCB3aXRoIGBgRXhwaXJhdGlvbkluRGF5c2BgLCBgYEV4cGlyYXRpb25EYXRlYGAsIG9yIGBgVGFnRmlsdGVyc2BgLlxuICovXG5FeHBpcmVkT2JqZWN0RGVsZXRlTWFya2VyPzogYm9vbGVhblxuLyoqXG4gKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGUuIFRoZSB2YWx1ZSBjYW4ndCBiZSBsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycy5cbiAqL1xuSWQ/OiBzdHJpbmdcbi8qKlxuICogKERlcHJlY2F0ZWQuKSBGb3IgYnVja2V0cyB3aXRoIHZlcnNpb25pbmcgZW5hYmxlZCAob3Igc3VzcGVuZGVkKSwgc3BlY2lmaWVzIHRoZSB0aW1lLCBpbiBkYXlzLCBiZXR3ZWVuIHdoZW4gYSBuZXcgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IGlzIHVwbG9hZGVkIHRvIHRoZSBidWNrZXQgYW5kIHdoZW4gb2xkIHZlcnNpb25zIG9mIHRoZSBvYmplY3QgZXhwaXJlLiBXaGVuIG9iamVjdCB2ZXJzaW9ucyBleHBpcmUsIEFtYXpvbiBTMyBwZXJtYW5lbnRseSBkZWxldGVzIHRoZW0uIElmIHlvdSBzcGVjaWZ5IGEgdHJhbnNpdGlvbiBhbmQgZXhwaXJhdGlvbiB0aW1lLCB0aGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLlxuICovXG5Ob25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb25JbkRheXM/OiBudW1iZXJcbk5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbj86IE5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvblxuTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uPzogTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uXG4vKipcbiAqIEZvciBidWNrZXRzIHdpdGggdmVyc2lvbmluZyBlbmFibGVkIChvciBzdXNwZW5kZWQpLCBvbmUgb3IgbW9yZSB0cmFuc2l0aW9uIHJ1bGVzIHRoYXQgc3BlY2lmeSB3aGVuIG5vbi1jdXJyZW50IG9iamVjdHMgdHJhbnNpdGlvbiB0byBhIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB5b3Ugc3BlY2lmeSBhIHRyYW5zaXRpb24gYW5kIGV4cGlyYXRpb24gdGltZSwgdGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS4gSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25gYCBwcm9wZXJ0eS5cbiAqL1xuTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9ucz86IE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbjFbXVxuLyoqXG4gKiBPYmplY3Qga2V5IHByZWZpeCB0aGF0IGlkZW50aWZpZXMgb25lIG9yIG1vcmUgb2JqZWN0cyB0byB3aGljaCB0aGlzIHJ1bGUgYXBwbGllcy5cbiAqICAgUmVwbGFjZW1lbnQgbXVzdCBiZSBtYWRlIGZvciBvYmplY3Qga2V5cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyBjYXJyaWFnZSByZXR1cm5zKSB3aGVuIHVzaW5nIFhNTCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbWE1MIHJlbGF0ZWQgb2JqZWN0IGtleSBjb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LWtleXMuaHRtbCNvYmplY3Qta2V5LXhtbC1yZWxhdGVkLWNvbnN0cmFpbnRzKS5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIElmIGBgRW5hYmxlZGBgLCB0aGUgcnVsZSBpcyBjdXJyZW50bHkgYmVpbmcgYXBwbGllZC4gSWYgYGBEaXNhYmxlZGBgLCB0aGUgcnVsZSBpcyBub3QgY3VycmVudGx5IGJlaW5nIGFwcGxpZWQuXG4gKi9cblN0YXR1czogKFwiRW5hYmxlZFwiIHwgXCJEaXNhYmxlZFwiKVxuLyoqXG4gKiBUYWdzIHRvIHVzZSB0byBpZGVudGlmeSBhIHN1YnNldCBvZiBvYmplY3RzIHRvIHdoaWNoIHRoZSBsaWZlY3ljbGUgcnVsZSBhcHBsaWVzLlxuICovXG5UYWdGaWx0ZXJzPzogVGFnRmlsdGVyW11cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBtaW5pbXVtIG9iamVjdCBzaXplIGluIGJ5dGVzIGZvciB0aGlzIHJ1bGUgdG8gYXBwbHkgdG8uIE9iamVjdHMgbXVzdCBiZSBsYXJnZXIgdGhhbiB0aGlzIHZhbHVlIGluIGJ5dGVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBzaXplIGJhc2VkIHJ1bGVzLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIHVzaW5nIHNpemUtYmFzZWQgcnVsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2xpZmVjeWNsZS1jb25maWd1cmF0aW9uLWV4YW1wbGVzLmh0bWwjbGMtc2l6ZS1ydWxlcykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk9iamVjdFNpemVHcmVhdGVyVGhhbj86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gb2JqZWN0IHNpemUgaW4gYnl0ZXMgZm9yIHRoaXMgcnVsZSB0byBhcHBseSB0by4gT2JqZWN0cyBtdXN0IGJlIHNtYWxsZXIgdGhhbiB0aGlzIHZhbHVlIGluIGJ5dGVzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBzaXplZCBiYXNlZCBydWxlcywgc2VlIFtMaWZlY3ljbGUgY29uZmlndXJhdGlvbiB1c2luZyBzaXplLWJhc2VkIHJ1bGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9saWZlY3ljbGUtY29uZmlndXJhdGlvbi1leGFtcGxlcy5odG1sI2xjLXNpemUtcnVsZXMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5PYmplY3RTaXplTGVzc1RoYW4/OiBzdHJpbmdcblRyYW5zaXRpb24/OiBUcmFuc2l0aW9uXG4vKipcbiAqIE9uZSBvciBtb3JlIHRyYW5zaXRpb24gcnVsZXMgdGhhdCBzcGVjaWZ5IHdoZW4gYW4gb2JqZWN0IHRyYW5zaXRpb25zIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHlvdSBzcGVjaWZ5IGFuIGV4cGlyYXRpb24gYW5kIHRyYW5zaXRpb24gdGltZSwgeW91IG11c3QgdXNlIHRoZSBzYW1lIHRpbWUgdW5pdCBmb3IgYm90aCBwcm9wZXJ0aWVzIChlaXRoZXIgaW4gZGF5cyBvciBieSBkYXRlKS4gVGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGFsc28gYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYFRyYW5zaXRpb25gYCBwcm9wZXJ0eS5cbiAqL1xuVHJhbnNpdGlvbnM/OiBUcmFuc2l0aW9uMVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIGxpZmVjeWNsZSBydWxlIHRoYXQgc3RvcHMgaW5jb21wbGV0ZSBtdWx0aXBhcnQgdXBsb2FkcyB0byBhbiBBbWF6b24gUzMgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFib3J0SW5jb21wbGV0ZU11bHRpcGFydFVwbG9hZCB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggQW1hem9uIFMzIHN0b3BzIGFuIGluY29tcGxldGUgbXVsdGlwYXJ0IHVwbG9hZC5cbiAqL1xuRGF5c0FmdGVySW5pdGlhdGlvbjogbnVtYmVyXG59XG4vKipcbiAqIFNwZWNpZmllcyB3aGVuIG5vbmN1cnJlbnQgb2JqZWN0IHZlcnNpb25zIGV4cGlyZS4gVXBvbiBleHBpcmF0aW9uLCBTMyBwZXJtYW5lbnRseSBkZWxldGVzIHRoZSBub25jdXJyZW50IG9iamVjdCB2ZXJzaW9ucy4gWW91IHNldCB0aGlzIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uIGFjdGlvbiBvbiBhIGJ1Y2tldCB0aGF0IGhhcyB2ZXJzaW9uaW5nIGVuYWJsZWQgKG9yIHN1c3BlbmRlZCkgdG8gcmVxdWVzdCB0aGF0IFMzIGRlbGV0ZSBub25jdXJyZW50IG9iamVjdCB2ZXJzaW9ucyBhdCBhIHNwZWNpZmljIHBlcmlvZCBpbiB0aGUgb2JqZWN0J3MgbGlmZXRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGF5cyBhbiBvYmplY3QgaXMgbm9uY3VycmVudCBiZWZvcmUgUzMgY2FuIHBlcmZvcm0gdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5vbmN1cnJlbnQgZGF5cyBjYWxjdWxhdGlvbnMsIHNlZSBbSG93IEFtYXpvbiBTMyBDYWxjdWxhdGVzIFdoZW4gYW4gT2JqZWN0IEJlY2FtZSBOb25jdXJyZW50XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCNub24tY3VycmVudC1kYXlzLWNhbGN1bGF0aW9ucykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5vbmN1cnJlbnREYXlzOiBudW1iZXJcbi8qKlxuICogU3BlY2lmaWVzIGhvdyBtYW55IG5vbmN1cnJlbnQgdmVyc2lvbnMgUzMgd2lsbCByZXRhaW4uIElmIHRoZXJlIGFyZSB0aGlzIG1hbnkgbW9yZSByZWNlbnQgbm9uY3VycmVudCB2ZXJzaW9ucywgUzMgd2lsbCB0YWtlIHRoZSBhc3NvY2lhdGVkIGFjdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgbm9uY3VycmVudCB2ZXJzaW9ucywgc2VlIFtMaWZlY3ljbGUgY29uZmlndXJhdGlvbiBlbGVtZW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvaW50cm8tbGlmZWN5Y2xlLXJ1bGVzLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5OZXdlck5vbmN1cnJlbnRWZXJzaW9ucz86IG51bWJlclxufVxuLyoqXG4gKiAoRGVwcmVjYXRlZC4pIEZvciBidWNrZXRzIHdpdGggdmVyc2lvbmluZyBlbmFibGVkIChvciBzdXNwZW5kZWQpLCBzcGVjaWZpZXMgd2hlbiBub24tY3VycmVudCBvYmplY3RzIHRyYW5zaXRpb24gdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgeW91IHNwZWNpZnkgYSB0cmFuc2l0aW9uIGFuZCBleHBpcmF0aW9uIHRpbWUsIHRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uc2BgIHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbiB7XG4vKipcbiAqIFRoZSBjbGFzcyBvZiBzdG9yYWdlIHVzZWQgdG8gc3RvcmUgdGhlIG9iamVjdC5cbiAqL1xuU3RvcmFnZUNsYXNzOiAoXCJERUVQX0FSQ0hJVkVcIiB8IFwiR0xBQ0lFUlwiIHwgXCJHbGFjaWVyXCIgfCBcIkdMQUNJRVJfSVJcIiB8IFwiSU5URUxMSUdFTlRfVElFUklOR1wiIHwgXCJPTkVaT05FX0lBXCIgfCBcIlNUQU5EQVJEX0lBXCIpXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgYW4gb2JqZWN0IGlzIG5vbmN1cnJlbnQgYmVmb3JlIEFtYXpvbiBTMyBjYW4gcGVyZm9ybSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24uIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbm9uY3VycmVudCBkYXlzIGNhbGN1bGF0aW9ucywgc2VlIFtIb3cgQW1hem9uIFMzIENhbGN1bGF0ZXMgSG93IExvbmcgYW4gT2JqZWN0IEhhcyBCZWVuIE5vbmN1cnJlbnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2ludHJvLWxpZmVjeWNsZS1ydWxlcy5odG1sI25vbi1jdXJyZW50LWRheXMtY2FsY3VsYXRpb25zKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuVHJhbnNpdGlvbkluRGF5czogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyBob3cgbWFueSBub25jdXJyZW50IHZlcnNpb25zIFMzIHdpbGwgcmV0YWluLiBJZiB0aGVyZSBhcmUgdGhpcyBtYW55IG1vcmUgcmVjZW50IG5vbmN1cnJlbnQgdmVyc2lvbnMsIFMzIHdpbGwgdGFrZSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG5vbmN1cnJlbnQgdmVyc2lvbnMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gZWxlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2ludHJvLWxpZmVjeWNsZS1ydWxlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuTmV3ZXJOb25jdXJyZW50VmVyc2lvbnM/OiBudW1iZXJcbn1cbi8qKlxuICogQ29udGFpbmVyIGZvciB0aGUgdHJhbnNpdGlvbiBydWxlIHRoYXQgZGVzY3JpYmVzIHdoZW4gbm9uY3VycmVudCBvYmplY3RzIHRyYW5zaXRpb24gdG8gdGhlIGBgU1RBTkRBUkRfSUFgYCwgYGBPTkVaT05FX0lBYGAsIGBgSU5URUxMSUdFTlRfVElFUklOR2BgLCBgYEdMQUNJRVJfSVJgYCwgYGBHTEFDSUVSYGAsIG9yIGBgREVFUF9BUkNISVZFYGAgc3RvcmFnZSBjbGFzcy4gSWYgeW91ciBidWNrZXQgaXMgdmVyc2lvbmluZy1lbmFibGVkIChvciB2ZXJzaW9uaW5nIGlzIHN1c3BlbmRlZCksIHlvdSBjYW4gc2V0IHRoaXMgYWN0aW9uIHRvIHJlcXVlc3QgdGhhdCBBbWF6b24gUzMgdHJhbnNpdGlvbiBub25jdXJyZW50IG9iamVjdCB2ZXJzaW9ucyB0byB0aGUgYGBTVEFOREFSRF9JQWBgLCBgYE9ORVpPTkVfSUFgYCwgYGBJTlRFTExJR0VOVF9USUVSSU5HYGAsIGBgR0xBQ0lFUl9JUmBgLCBgYEdMQUNJRVJgYCwgb3IgYGBERUVQX0FSQ0hJVkVgYCBzdG9yYWdlIGNsYXNzIGF0IGEgc3BlY2lmaWMgcGVyaW9kIGluIHRoZSBvYmplY3QncyBsaWZldGltZS4gSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb25zYGAgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uMSB7XG4vKipcbiAqIFRoZSBjbGFzcyBvZiBzdG9yYWdlIHVzZWQgdG8gc3RvcmUgdGhlIG9iamVjdC5cbiAqL1xuU3RvcmFnZUNsYXNzOiAoXCJERUVQX0FSQ0hJVkVcIiB8IFwiR0xBQ0lFUlwiIHwgXCJHbGFjaWVyXCIgfCBcIkdMQUNJRVJfSVJcIiB8IFwiSU5URUxMSUdFTlRfVElFUklOR1wiIHwgXCJPTkVaT05FX0lBXCIgfCBcIlNUQU5EQVJEX0lBXCIpXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgYW4gb2JqZWN0IGlzIG5vbmN1cnJlbnQgYmVmb3JlIEFtYXpvbiBTMyBjYW4gcGVyZm9ybSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24uIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbm9uY3VycmVudCBkYXlzIGNhbGN1bGF0aW9ucywgc2VlIFtIb3cgQW1hem9uIFMzIENhbGN1bGF0ZXMgSG93IExvbmcgYW4gT2JqZWN0IEhhcyBCZWVuIE5vbmN1cnJlbnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2ludHJvLWxpZmVjeWNsZS1ydWxlcy5odG1sI25vbi1jdXJyZW50LWRheXMtY2FsY3VsYXRpb25zKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuVHJhbnNpdGlvbkluRGF5czogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyBob3cgbWFueSBub25jdXJyZW50IHZlcnNpb25zIFMzIHdpbGwgcmV0YWluLiBJZiB0aGVyZSBhcmUgdGhpcyBtYW55IG1vcmUgcmVjZW50IG5vbmN1cnJlbnQgdmVyc2lvbnMsIFMzIHdpbGwgdGFrZSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG5vbmN1cnJlbnQgdmVyc2lvbnMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gZWxlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2ludHJvLWxpZmVjeWNsZS1ydWxlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuTmV3ZXJOb25jdXJyZW50VmVyc2lvbnM/OiBudW1iZXJcbn1cbi8qKlxuICogKERlcHJlY2F0ZWQuKSBTcGVjaWZpZXMgd2hlbiBhbiBvYmplY3QgdHJhbnNpdGlvbnMgdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgeW91IHNwZWNpZnkgYW4gZXhwaXJhdGlvbiBhbmQgdHJhbnNpdGlvbiB0aW1lLCB5b3UgbXVzdCB1c2UgdGhlIHNhbWUgdGltZSB1bml0IGZvciBib3RoIHByb3BlcnRpZXMgKGVpdGhlciBpbiBkYXlzIG9yIGJ5IGRhdGUpLiBUaGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYWxzbyBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgVHJhbnNpdGlvbnNgYCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2l0aW9uIHtcbi8qKlxuICogVGhlIHN0b3JhZ2UgY2xhc3MgdG8gd2hpY2ggeW91IHdhbnQgdGhlIG9iamVjdCB0byB0cmFuc2l0aW9uLlxuICovXG5TdG9yYWdlQ2xhc3M6IChcIkRFRVBfQVJDSElWRVwiIHwgXCJHTEFDSUVSXCIgfCBcIkdsYWNpZXJcIiB8IFwiR0xBQ0lFUl9JUlwiIHwgXCJJTlRFTExJR0VOVF9USUVSSU5HXCIgfCBcIk9ORVpPTkVfSUFcIiB8IFwiU1RBTkRBUkRfSUFcIilcbi8qKlxuICogSW5kaWNhdGVzIHdoZW4gb2JqZWN0cyBhcmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gVGhlIGRhdGUgdmFsdWUgbXVzdCBiZSBpbiBJU08gODYwMSBmb3JtYXQuIFRoZSB0aW1lIGlzIGFsd2F5cyBtaWRuaWdodCBVVEMuXG4gKi9cblRyYW5zaXRpb25EYXRlPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgY3JlYXRpb24gd2hlbiBvYmplY3RzIGFyZSB0cmFuc2l0aW9uZWQgdG8gdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MgaXMgYGBJTlRFTExJR0VOVF9USUVSSU5HYGAsIGBgR0xBQ0lFUl9JUmBgLCBgYEdMQUNJRVJgYCwgb3IgYGBERUVQX0FSQ0hJVkVgYCwgdmFsaWQgdmFsdWVzIGFyZSBgYDBgYCBvciBwb3NpdGl2ZSBpbnRlZ2Vycy4gSWYgdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzIGlzIGBgU1RBTkRBUkRfSUFgYCBvciBgYE9ORVpPTkVfSUFgYCwgdmFsaWQgdmFsdWVzIGFyZSBwb3NpdGl2ZSBpbnRlZ2VycyBncmVhdGVyIHRoYW4gYGAzMGBgLiBCZSBhd2FyZSB0aGF0IHNvbWUgc3RvcmFnZSBjbGFzc2VzIGhhdmUgYSBtaW5pbXVtIHN0b3JhZ2UgZHVyYXRpb24gYW5kIHRoYXQgeW91J3JlIGNoYXJnZWQgZm9yIHRyYW5zaXRpb25pbmcgb2JqZWN0cyBiZWZvcmUgdGhlaXIgbWluaW11bSBzdG9yYWdlIGR1cmF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25zdHJhaW50cyBhbmQgY29uc2lkZXJhdGlvbnMgZm9yIHRyYW5zaXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9saWZlY3ljbGUtdHJhbnNpdGlvbi1nZW5lcmFsLWNvbnNpZGVyYXRpb25zLmh0bWwjbGlmZWN5Y2xlLWNvbmZpZ3VyYXRpb24tY29uc3RyYWludHMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5UcmFuc2l0aW9uSW5EYXlzPzogbnVtYmVyXG59XG4vKipcbiAqIFNwZWNpZmllcyB3aGVuIGFuIG9iamVjdCB0cmFuc2l0aW9ucyB0byBhIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBBbWF6b24gUzMgbGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gcnVsZXMsIHNlZSBbVHJhbnNpdGlvbmluZyBPYmplY3RzIFVzaW5nIEFtYXpvbiBTMyBMaWZlY3ljbGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2xpZmVjeWNsZS10cmFuc2l0aW9uLWdlbmVyYWwtY29uc2lkZXJhdGlvbnMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNpdGlvbjEge1xuLyoqXG4gKiBUaGUgc3RvcmFnZSBjbGFzcyB0byB3aGljaCB5b3Ugd2FudCB0aGUgb2JqZWN0IHRvIHRyYW5zaXRpb24uXG4gKi9cblN0b3JhZ2VDbGFzczogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR2xhY2llclwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJTVEFOREFSRF9JQVwiKVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hlbiBvYmplY3RzIGFyZSB0cmFuc2l0aW9uZWQgdG8gdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBUaGUgZGF0ZSB2YWx1ZSBtdXN0IGJlIGluIElTTyA4NjAxIGZvcm1hdC4gVGhlIHRpbWUgaXMgYWx3YXlzIG1pZG5pZ2h0IFVUQy5cbiAqL1xuVHJhbnNpdGlvbkRhdGU/OiBzdHJpbmdcbi8qKlxuICogSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciBjcmVhdGlvbiB3aGVuIG9iamVjdHMgYXJlIHRyYW5zaXRpb25lZCB0byB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcyBpcyBgYElOVEVMTElHRU5UX1RJRVJJTkdgYCwgYGBHTEFDSUVSX0lSYGAsIGBgR0xBQ0lFUmBgLCBvciBgYERFRVBfQVJDSElWRWBgLCB2YWxpZCB2YWx1ZXMgYXJlIGBgMGBgIG9yIHBvc2l0aXZlIGludGVnZXJzLiBJZiB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MgaXMgYGBTVEFOREFSRF9JQWBgIG9yIGBgT05FWk9ORV9JQWBgLCB2YWxpZCB2YWx1ZXMgYXJlIHBvc2l0aXZlIGludGVnZXJzIGdyZWF0ZXIgdGhhbiBgYDMwYGAuIEJlIGF3YXJlIHRoYXQgc29tZSBzdG9yYWdlIGNsYXNzZXMgaGF2ZSBhIG1pbmltdW0gc3RvcmFnZSBkdXJhdGlvbiBhbmQgdGhhdCB5b3UncmUgY2hhcmdlZCBmb3IgdHJhbnNpdGlvbmluZyBvYmplY3RzIGJlZm9yZSB0aGVpciBtaW5pbXVtIHN0b3JhZ2UgZHVyYXRpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbnN0cmFpbnRzIGFuZCBjb25zaWRlcmF0aW9ucyBmb3IgdHJhbnNpdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2xpZmVjeWNsZS10cmFuc2l0aW9uLWdlbmVyYWwtY29uc2lkZXJhdGlvbnMuaHRtbCNsaWZlY3ljbGUtY29uZmlndXJhdGlvbi1jb25zdHJhaW50cykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblRyYW5zaXRpb25JbkRheXM/OiBudW1iZXJcbn1cbi8qKlxuICogU2V0dGluZ3MgdGhhdCBkZWZpbmUgd2hlcmUgbG9ncyBhcmUgc3RvcmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dpbmdDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGJ1Y2tldCB3aGVyZSBBbWF6b24gUzMgc2hvdWxkIHN0b3JlIHNlcnZlciBhY2Nlc3MgbG9nIGZpbGVzLiBZb3UgY2FuIHN0b3JlIGxvZyBmaWxlcyBpbiBhbnkgYnVja2V0IHRoYXQgeW91IG93bi4gQnkgZGVmYXVsdCwgbG9ncyBhcmUgc3RvcmVkIGluIHRoZSBidWNrZXQgd2hlcmUgdGhlIGBgTG9nZ2luZ0NvbmZpZ3VyYXRpb25gYCBwcm9wZXJ0eSBpcyBkZWZpbmVkLlxuICovXG5EZXN0aW5hdGlvbkJ1Y2tldE5hbWU/OiBzdHJpbmdcbi8qKlxuICogQSBwcmVmaXggZm9yIGFsbCBsb2cgb2JqZWN0IGtleXMuIElmIHlvdSBzdG9yZSBsb2cgZmlsZXMgZnJvbSBtdWx0aXBsZSBBbWF6b24gUzMgYnVja2V0cyBpbiBhIHNpbmdsZSBidWNrZXQsIHlvdSBjYW4gdXNlIGEgcHJlZml4IHRvIGRpc3Rpbmd1aXNoIHdoaWNoIGxvZyBmaWxlcyBjYW1lIGZyb20gd2hpY2ggYnVja2V0LlxuICovXG5Mb2dGaWxlUHJlZml4Pzogc3RyaW5nXG5UYXJnZXRPYmplY3RLZXlGb3JtYXQ/OiBUYXJnZXRPYmplY3RLZXlGb3JtYXRcbn1cbi8qKlxuICogQW1hem9uIFMzIGtleXMgZm9yIGxvZyBvYmplY3RzIGFyZSBwYXJ0aXRpb25lZCBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAqICAgYGBbRGVzdGluYXRpb25QcmVmaXhdW1NvdXJjZUFjY291bnRJZF0vW1NvdXJjZVJlZ2lvbl0vW1NvdXJjZUJ1Y2tldF0vW1lZWVldL1tNTV0vW0REXS9bWVlZWV0tW01NXS1bRERdLVtoaF0tW21tXS1bc3NdLVtVbmlxdWVTdHJpbmddYGAgXG4gKiAgUGFydGl0aW9uZWRQcmVmaXggZGVmYXVsdHMgdG8gRXZlbnRUaW1lIGRlbGl2ZXJ5IHdoZW4gc2VydmVyIGFjY2VzcyBsb2dzIGFyZSBkZWxpdmVyZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFydGl0aW9uZWRQcmVmaXgge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHBhcnRpdGlvbiBkYXRlIHNvdXJjZSBmb3IgdGhlIHBhcnRpdGlvbmVkIHByZWZpeC4gYGBQYXJ0aXRpb25EYXRlU291cmNlYGAgY2FuIGJlIGBgRXZlbnRUaW1lYGAgb3IgYGBEZWxpdmVyeVRpbWVgYC5cbiAqICBGb3IgYGBEZWxpdmVyeVRpbWVgYCwgdGhlIHRpbWUgaW4gdGhlIGxvZyBmaWxlIG5hbWVzIGNvcnJlc3BvbmRzIHRvIHRoZSBkZWxpdmVyeSB0aW1lIGZvciB0aGUgbG9nIGZpbGVzLiBcbiAqICAgRm9yIGBgRXZlbnRUaW1lYGAsIFRoZSBsb2dzIGRlbGl2ZXJlZCBhcmUgZm9yIGEgc3BlY2lmaWMgZGF5IG9ubHkuIFRoZSB5ZWFyLCBtb250aCwgYW5kIGRheSBjb3JyZXNwb25kIHRvIHRoZSBkYXkgb24gd2hpY2ggdGhlIGV2ZW50IG9jY3VycmVkLCBhbmQgdGhlIGhvdXIsIG1pbnV0ZXMgYW5kIHNlY29uZHMgYXJlIHNldCB0byAwMCBpbiB0aGUga2V5LlxuICovXG5QYXJ0aXRpb25EYXRlU291cmNlPzogKFwiRXZlbnRUaW1lXCIgfCBcIkRlbGl2ZXJ5VGltZVwiKVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBtZXRyaWNzIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDbG91ZFdhdGNoIHJlcXVlc3QgbWV0cmljcyAoc3BlY2lmaWVkIGJ5IHRoZSBtZXRyaWNzIGNvbmZpZ3VyYXRpb24gSUQpIGZyb20gYW4gQW1hem9uIFMzIGJ1Y2tldC4gSWYgeW91J3JlIHVwZGF0aW5nIGFuIGV4aXN0aW5nIG1ldHJpY3MgY29uZmlndXJhdGlvbiwgbm90ZSB0aGF0IHRoaXMgaXMgYSBmdWxsIHJlcGxhY2VtZW50IG9mIHRoZSBleGlzdGluZyBtZXRyaWNzIGNvbmZpZ3VyYXRpb24uIElmIHlvdSBkb24ndCBpbmNsdWRlIHRoZSBlbGVtZW50cyB5b3Ugd2FudCB0byBrZWVwLCB0aGV5IGFyZSBlcmFzZWQuIEZvciBleGFtcGxlcywgc2VlIFtBV1M6OlMzOjpCdWNrZXRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLWJ1Y2tldC5odG1sI2F3cy1wcm9wZXJ0aWVzLXMzLWJ1Y2tldC0tZXhhbXBsZXMpLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtQVVQgQnVja2V0IG1ldHJpY3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvQVBJL1JFU1RCdWNrZXRQVVRNZXRyaWNDb25maWd1cmF0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIGFjY2VzcyBwb2ludCB0aGF0IHdhcyB1c2VkIHdoaWxlIHBlcmZvcm1pbmcgb3BlcmF0aW9ucyBvbiB0aGUgb2JqZWN0LiBUaGUgbWV0cmljcyBjb25maWd1cmF0aW9uIG9ubHkgaW5jbHVkZXMgb2JqZWN0cyB0aGF0IG1lZXQgdGhlIGZpbHRlcidzIGNyaXRlcmlhLlxuICovXG5BY2Nlc3NQb2ludEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSUQgdXNlZCB0byBpZGVudGlmeSB0aGUgbWV0cmljcyBjb25maWd1cmF0aW9uLiBUaGlzIGNhbiBiZSBhbnkgdmFsdWUgeW91IGNob29zZSB0aGF0IGhlbHBzIHlvdSBpZGVudGlmeSB5b3VyIG1ldHJpY3MgY29uZmlndXJhdGlvbi5cbiAqL1xuSWQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgcHJlZml4IHRoYXQgYW4gb2JqZWN0IG11c3QgaGF2ZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbWV0cmljcyByZXN1bHRzLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIGEgbGlzdCBvZiB0YWcgZmlsdGVycyB0byB1c2UgYXMgYSBtZXRyaWNzIGNvbmZpZ3VyYXRpb24gZmlsdGVyLiBUaGUgbWV0cmljcyBjb25maWd1cmF0aW9uIGluY2x1ZGVzIG9ubHkgb2JqZWN0cyB0aGF0IG1lZXQgdGhlIGZpbHRlcidzIGNyaXRlcmlhLlxuICovXG5UYWdGaWx0ZXJzPzogVGFnRmlsdGVyW11cbn1cbi8qKlxuICogVGhlIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24gb2YgYW4gUzMgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbiB7XG5TM1RhYmxlc0Rlc3RpbmF0aW9uOiBTM1RhYmxlc0Rlc3RpbmF0aW9uXG59XG4vKipcbiAqIFRoZSBkZXN0aW5hdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uIFRoZSBkZXN0aW5hdGlvbiB0YWJsZSBidWNrZXQgbXVzdCBiZSBpbiB0aGUgc2FtZSBSZWdpb24gYW5kIEFXUy1hY2NvdW50IGFzIHRoZSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0LiBUaGUgc3BlY2lmaWVkIG1ldGFkYXRhIHRhYmxlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBgYGF3c19zM19tZXRhZGF0YWBgIG5hbWVzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzVGFibGVzRGVzdGluYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9yIHRoZSB0YWJsZSBidWNrZXQgdGhhdCdzIHNwZWNpZmllZCBhcyB0aGUgZGVzdGluYXRpb24gaW4gdGhlIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uIFRoZSBkZXN0aW5hdGlvbiB0YWJsZSBidWNrZXQgbXVzdCBiZSBpbiB0aGUgc2FtZSBSZWdpb24gYW5kIEFXUy1hY2NvdW50IGFzIHRoZSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0LlxuICovXG5UYWJsZUJ1Y2tldEFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIGZvciB0aGUgbWV0YWRhdGEgdGFibGUgaW4geW91ciBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgc3BlY2lmaWVkIG1ldGFkYXRhIHRhYmxlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBgYGF3c19zM19tZXRhZGF0YWBgIG5hbWVzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0LlxuICovXG5UYWJsZU5hbWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFibGUgYnVja2V0IG5hbWVzcGFjZSBmb3IgdGhlIG1ldGFkYXRhIHRhYmxlIGluIHlvdXIgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbi4gVGhpcyB2YWx1ZSBpcyBhbHdheXMgYGBhd3NfczNfbWV0YWRhdGFgYC5cbiAqL1xuVGFibGVOYW1lc3BhY2U/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciB0aGUgbWV0YWRhdGEgdGFibGUgaW4gdGhlIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uIFRoZSBzcGVjaWZpZWQgbWV0YWRhdGEgdGFibGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGBgYXdzX3MzX21ldGFkYXRhYGAgbmFtZXNwYWNlIGluIHRoZSBkZXN0aW5hdGlvbiB0YWJsZSBidWNrZXQuXG4gKi9cblRhYmxlQXJuPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBTMyBNZXRhZGF0YSBjb25maWd1cmF0aW9uIGZvciBhIGdlbmVyYWwgcHVycG9zZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFDb25maWd1cmF0aW9uIHtcbkRlc3RpbmF0aW9uPzogTWV0YWRhdGFEZXN0aW5hdGlvblxuSm91cm5hbFRhYmxlQ29uZmlndXJhdGlvbjogSm91cm5hbFRhYmxlQ29uZmlndXJhdGlvblxuSW52ZW50b3J5VGFibGVDb25maWd1cmF0aW9uPzogSW52ZW50b3J5VGFibGVDb25maWd1cmF0aW9uXG59XG4vKipcbiAqIFRoZSBkZXN0aW5hdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIFMzIE1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFEZXN0aW5hdGlvbiB7XG4vKipcbiAqIFRoZSB0eXBlIG9mIHRoZSB0YWJsZSBidWNrZXQgd2hlcmUgdGhlIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24gaXMgc3RvcmVkLiBUaGUgYGBhd3NgYCB2YWx1ZSBpbmRpY2F0ZXMgYW4gQVdTIG1hbmFnZWQgdGFibGUgYnVja2V0LCBhbmQgdGhlIGBgY3VzdG9tZXJgYCB2YWx1ZSBpbmRpY2F0ZXMgYSBjdXN0b21lci1tYW5hZ2VkIHRhYmxlIGJ1Y2tldC4gVjIgbWV0YWRhdGEgY29uZmlndXJhdGlvbnMgYXJlIHN0b3JlZCBpbiBBV1MgbWFuYWdlZCB0YWJsZSBidWNrZXRzLCBhbmQgVjEgbWV0YWRhdGEgY29uZmlndXJhdGlvbnMgYXJlIHN0b3JlZCBpbiBjdXN0b21lci1tYW5hZ2VkIHRhYmxlIGJ1Y2tldHMuXG4gKi9cblRhYmxlQnVja2V0VHlwZTogKFwiYXdzXCIgfCBcImN1c3RvbWVyXCIpXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgdGFibGUgYnVja2V0IHdoZXJlIHRoZSBtZXRhZGF0YSBjb25maWd1cmF0aW9uIGlzIHN0b3JlZC5cbiAqL1xuVGFibGVCdWNrZXRBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIG5hbWVzcGFjZSBpbiB0aGUgdGFibGUgYnVja2V0IHdoZXJlIHRoZSBtZXRhZGF0YSB0YWJsZXMgZm9yIGEgbWV0YWRhdGEgY29uZmlndXJhdGlvbiBhcmUgc3RvcmVkLlxuICovXG5UYWJsZU5hbWVzcGFjZT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgam91cm5hbCB0YWJsZSBjb25maWd1cmF0aW9uIGZvciBhIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSm91cm5hbFRhYmxlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBqb3VybmFsIHRhYmxlLlxuICovXG5UYWJsZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciB0aGUgam91cm5hbCB0YWJsZS5cbiAqL1xuVGFibGVBcm4/OiBzdHJpbmdcblJlY29yZEV4cGlyYXRpb246IFJlY29yZEV4cGlyYXRpb25cbkVuY3J5cHRpb25Db25maWd1cmF0aW9uPzogTWV0YWRhdGFUYWJsZUVuY3J5cHRpb25Db25maWd1cmF0aW9uXG59XG4vKipcbiAqIFRoZSBqb3VybmFsIHRhYmxlIHJlY29yZCBleHBpcmF0aW9uIHNldHRpbmdzIGZvciB0aGUgam91cm5hbCB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRFeHBpcmF0aW9uIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgam91cm5hbCB0YWJsZSByZWNvcmQgZXhwaXJhdGlvbiBpcyBlbmFibGVkIG9yIGRpc2FibGVkLlxuICovXG5FeHBpcmF0aW9uOiAoXCJFTkFCTEVEXCIgfCBcIkRJU0FCTEVEXCIpXG4vKipcbiAqIElmIHlvdSBlbmFibGUgam91cm5hbCB0YWJsZSByZWNvcmQgZXhwaXJhdGlvbiwgeW91IGNhbiBzZXQgdGhlIG51bWJlciBvZiBkYXlzIHRvIHJldGFpbiB5b3VyIGpvdXJuYWwgdGFibGUgcmVjb3Jkcy4gSm91cm5hbCB0YWJsZSByZWNvcmRzIG11c3QgYmUgcmV0YWluZWQgZm9yIGEgbWluaW11bSBvZiA3IGRheXMuIFRvIHNldCB0aGlzIHZhbHVlLCBzcGVjaWZ5IGFueSB3aG9sZSBudW1iZXIgZnJvbSBgYDdgYCB0byBgYDIxNDc0ODM2NDdgYC4gRm9yIGV4YW1wbGUsIHRvIHJldGFpbiB5b3VyIGpvdXJuYWwgdGFibGUgcmVjb3JkcyBmb3Igb25lIHllYXIsIHNldCB0aGlzIHZhbHVlIHRvIGBgMzY1YGAuXG4gKi9cbkRheXM/OiBudW1iZXJcbn1cbi8qKlxuICogVGhlIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIGpvdXJuYWwgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFUYWJsZUVuY3J5cHRpb25Db25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIGVuY3J5cHRpb24gdHlwZSBzcGVjaWZpZWQgZm9yIGEgbWV0YWRhdGEgdGFibGUuIFRvIHNwZWNpZnkgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEtNU2xvbmcgKEtNUykga2V5cyAoU1NFLUtNUyksIHVzZSB0aGUgYGBhd3M6a21zYGAgdmFsdWUuIFRvIHNwZWNpZnkgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEFtYXpvbiBTMyBtYW5hZ2VkIGtleXMgKFNTRS1TMyksIHVzZSB0aGUgYGBBRVMyNTZgYCB2YWx1ZS5cbiAqL1xuU3NlQWxnb3JpdGhtOiAoXCJhd3M6a21zXCIgfCBcIkFFUzI1NlwiKVxuLyoqXG4gKiBJZiBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggS01TbG9uZyAoS01TKSBrZXlzIChTU0UtS01TKSBpcyBzcGVjaWZpZWQsIHlvdSBtdXN0IGFsc28gc3BlY2lmeSB0aGUgS01TIGtleSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKS4gWW91IG11c3Qgc3BlY2lmeSBhIGN1c3RvbWVyLW1hbmFnZWQgS01TIGtleSB0aGF0J3MgbG9jYXRlZCBpbiB0aGUgc2FtZSBSZWdpb24gYXMgdGhlIGdlbmVyYWwgcHVycG9zZSBidWNrZXQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbi5cbiAqL1xuS21zS2V5QXJuPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBpbnZlbnRvcnkgdGFibGUgY29uZmlndXJhdGlvbiBmb3IgYSBtZXRhZGF0YSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludmVudG9yeVRhYmxlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBpbnZlbnRvcnkgdGFibGUuXG4gKi9cblRhYmxlTmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9yIHRoZSBpbnZlbnRvcnkgdGFibGUuXG4gKi9cblRhYmxlQXJuPzogc3RyaW5nXG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIHN0YXRlIG9mIHRoZSBpbnZlbnRvcnkgdGFibGUsIGluZGljYXRpbmcgd2hldGhlciB0aGUgaW52ZW50b3J5IHRhYmxlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuXG4gKi9cbkNvbmZpZ3VyYXRpb25TdGF0ZTogKFwiRU5BQkxFRFwiIHwgXCJESVNBQkxFRFwiKVxuRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24/OiBNZXRhZGF0YVRhYmxlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24xXG59XG4vKipcbiAqIFRoZSBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnZlbnRvcnkgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFUYWJsZUVuY3J5cHRpb25Db25maWd1cmF0aW9uMSB7XG4vKipcbiAqIFRoZSBlbmNyeXB0aW9uIHR5cGUgc3BlY2lmaWVkIGZvciBhIG1ldGFkYXRhIHRhYmxlLiBUbyBzcGVjaWZ5IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBLTVNsb25nIChLTVMpIGtleXMgKFNTRS1LTVMpLCB1c2UgdGhlIGBgYXdzOmttc2BgIHZhbHVlLiBUbyBzcGVjaWZ5IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBBbWF6b24gUzMgbWFuYWdlZCBrZXlzIChTU0UtUzMpLCB1c2UgdGhlIGBgQUVTMjU2YGAgdmFsdWUuXG4gKi9cblNzZUFsZ29yaXRobTogKFwiYXdzOmttc1wiIHwgXCJBRVMyNTZcIilcbi8qKlxuICogSWYgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEtNU2xvbmcgKEtNUykga2V5cyAoU1NFLUtNUykgaXMgc3BlY2lmaWVkLCB5b3UgbXVzdCBhbHNvIHNwZWNpZnkgdGhlIEtNUyBrZXkgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikuIFlvdSBtdXN0IHNwZWNpZnkgYSBjdXN0b21lci1tYW5hZ2VkIEtNUyBrZXkgdGhhdCdzIGxvY2F0ZWQgaW4gdGhlIHNhbWUgUmVnaW9uIGFzIHRoZSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0IHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbkttc0tleUFybj86IHN0cmluZ1xufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHRoYXQgZGVmaW5lcyBob3cgQW1hem9uIFMzIGhhbmRsZXMgYnVja2V0IG5vdGlmaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbiB7XG5FdmVudEJyaWRnZUNvbmZpZ3VyYXRpb24/OiBFdmVudEJyaWRnZUNvbmZpZ3VyYXRpb25cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBMQU1sb25nIGZ1bmN0aW9ucyB0byBpbnZva2UgYW5kIHRoZSBldmVudHMgZm9yIHdoaWNoIHRvIGludm9rZSB0aGVtLlxuICovXG5MYW1iZGFDb25maWd1cmF0aW9ucz86IExhbWJkYUNvbmZpZ3VyYXRpb25bXVxuLyoqXG4gKiBUaGUgQW1hem9uIFNpbXBsZSBRdWV1ZSBTZXJ2aWNlIHF1ZXVlcyB0byBwdWJsaXNoIG1lc3NhZ2VzIHRvIGFuZCB0aGUgZXZlbnRzIGZvciB3aGljaCB0byBwdWJsaXNoIG1lc3NhZ2VzLlxuICovXG5RdWV1ZUNvbmZpZ3VyYXRpb25zPzogUXVldWVDb25maWd1cmF0aW9uW11cbi8qKlxuICogVGhlIHRvcGljIHRvIHdoaWNoIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgYW5kIHRoZSBldmVudHMgZm9yIHdoaWNoIG5vdGlmaWNhdGlvbnMgYXJlIGdlbmVyYXRlZC5cbiAqL1xuVG9waWNDb25maWd1cmF0aW9ucz86IFRvcGljQ29uZmlndXJhdGlvbltdXG59XG4vKipcbiAqIEVuYWJsZXMgZGVsaXZlcnkgb2YgZXZlbnRzIHRvIEFtYXpvbiBFdmVudEJyaWRnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudEJyaWRnZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBFbmFibGVzIGRlbGl2ZXJ5IG9mIGV2ZW50cyB0byBBbWF6b24gRXZlbnRCcmlkZ2UuXG4gKi9cbkV2ZW50QnJpZGdlRW5hYmxlZDogKGJvb2xlYW4gJiBzdHJpbmcpXG59XG4vKipcbiAqIERlc2NyaWJlcyB0aGUgTEFNbG9uZyBmdW5jdGlvbnMgdG8gaW52b2tlIGFuZCB0aGUgZXZlbnRzIGZvciB3aGljaCB0byBpbnZva2UgdGhlbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBTMyBidWNrZXQgZXZlbnQgZm9yIHdoaWNoIHRvIGludm9rZSB0aGUgTEFNbG9uZyBmdW5jdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3VwcG9ydGVkIEV2ZW50IFR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Ob3RpZmljYXRpb25Ib3dUby5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuRXZlbnQ6IHN0cmluZ1xuRmlsdGVyPzogTm90aWZpY2F0aW9uRmlsdGVyXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgTEFNbG9uZyBmdW5jdGlvbiB0aGF0IEFtYXpvbiBTMyBpbnZva2VzIHdoZW4gdGhlIHNwZWNpZmllZCBldmVudCB0eXBlIG9jY3Vycy5cbiAqL1xuRnVuY3Rpb246IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgZmlsdGVyaW5nIHJ1bGVzIHRoYXQgZGV0ZXJtaW5lIHdoaWNoIG9iamVjdHMgaW52b2tlIHRoZSBBV1MgTGFtYmRhIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBjcmVhdGUgYSBmaWx0ZXIgc28gdGhhdCBvbmx5IGltYWdlIGZpbGVzIHdpdGggYSBgYC5qcGdgYCBleHRlbnNpb24gaW52b2tlIHRoZSBmdW5jdGlvbiB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSBBbWF6b24gUzMgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkZpbHRlciB7XG5TM0tleTogUzNLZXlGaWx0ZXJcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggYW5kIHN1ZmZpeCBmaWx0ZXJpbmcgcnVsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUzNLZXlGaWx0ZXIge1xuLyoqXG4gKiBBIGxpc3Qgb2YgY29udGFpbmVycyBmb3IgdGhlIGtleS12YWx1ZSBwYWlyIHRoYXQgZGVmaW5lcyB0aGUgY3JpdGVyaWEgZm9yIHRoZSBmaWx0ZXIgcnVsZS5cbiAqL1xuUnVsZXM6IEZpbHRlclJ1bGVbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIEFtYXpvbiBTMyBvYmplY3Qga2V5IG5hbWUgdG8gZmlsdGVyIG9uLiBBbiBvYmplY3Qga2V5IG5hbWUgaXMgdGhlIG5hbWUgYXNzaWduZWQgdG8gYW4gb2JqZWN0IGluIHlvdXIgQW1hem9uIFMzIGJ1Y2tldC4gWW91IHNwZWNpZnkgd2hldGhlciB0byBmaWx0ZXIgb24gdGhlIHN1ZmZpeCBvciBwcmVmaXggb2YgdGhlIG9iamVjdCBrZXkgbmFtZS4gQSBwcmVmaXggaXMgYSBzcGVjaWZpYyBzdHJpbmcgb2YgY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIG9iamVjdCBrZXkgbmFtZSwgd2hpY2ggeW91IGNhbiB1c2UgdG8gb3JnYW5pemUgb2JqZWN0cy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gc3RhcnQgdGhlIGtleSBuYW1lcyBvZiByZWxhdGVkIG9iamVjdHMgd2l0aCBhIHByZWZpeCwgc3VjaCBhcyBgYDIwMjMtYGAgb3IgYGBlbmdpbmVlcmluZy9gYC4gVGhlbiwgeW91IGNhbiB1c2UgYGBGaWx0ZXJSdWxlYGAgdG8gZmluZCBvYmplY3RzIGluIGEgYnVja2V0IHdpdGgga2V5IG5hbWVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBwcmVmaXguIEEgc3VmZml4IGlzIHNpbWlsYXIgdG8gYSBwcmVmaXgsIGJ1dCBpdCBpcyBhdCB0aGUgZW5kIG9mIHRoZSBvYmplY3Qga2V5IG5hbWUgaW5zdGVhZCBvZiBhdCB0aGUgYmVnaW5uaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclJ1bGUge1xuLyoqXG4gKiBUaGUgb2JqZWN0IGtleSBuYW1lIHByZWZpeCBvciBzdWZmaXggaWRlbnRpZnlpbmcgb25lIG9yIG1vcmUgb2JqZWN0cyB0byB3aGljaCB0aGUgZmlsdGVyaW5nIHJ1bGUgYXBwbGllcy4gVGhlIG1heGltdW0gbGVuZ3RoIGlzIDEsMDI0IGNoYXJhY3RlcnMuIE92ZXJsYXBwaW5nIHByZWZpeGVzIGFuZCBzdWZmaXhlcyBhcmUgbm90IHN1cHBvcnRlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uZmlndXJpbmcgRXZlbnQgTm90aWZpY2F0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvTm90aWZpY2F0aW9uSG93VG8uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5hbWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgdGhhdCB0aGUgZmlsdGVyIHNlYXJjaGVzIGZvciBpbiBvYmplY3Qga2V5IG5hbWVzLlxuICovXG5WYWx1ZTogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY29uZmlndXJhdGlvbiBmb3IgcHVibGlzaGluZyBtZXNzYWdlcyB0byBhbiBBbWF6b24gU2ltcGxlIFF1ZXVlIFNlcnZpY2UgKEFtYXpvbiBTUVMpIHF1ZXVlIHdoZW4gQW1hem9uIFMzIGRldGVjdHMgc3BlY2lmaWVkIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWV1ZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFMzIGJ1Y2tldCBldmVudCBhYm91dCB3aGljaCB5b3Ugd2FudCB0byBwdWJsaXNoIG1lc3NhZ2VzIHRvIEFtYXpvbiBTUVMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1N1cHBvcnRlZCBFdmVudCBUeXBlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvTm90aWZpY2F0aW9uSG93VG8uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbkV2ZW50OiBzdHJpbmdcbkZpbHRlcj86IE5vdGlmaWNhdGlvbkZpbHRlcjFcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBbWF6b24gU1FTIHF1ZXVlIHRvIHdoaWNoIEFtYXpvbiBTMyBwdWJsaXNoZXMgYSBtZXNzYWdlIHdoZW4gaXQgZGV0ZWN0cyBldmVudHMgb2YgdGhlIHNwZWNpZmllZCB0eXBlLiBGSUZPIHF1ZXVlcyBhcmUgbm90IGFsbG93ZWQgd2hlbiBlbmFibGluZyBhbiBTUVMgcXVldWUgYXMgdGhlIGV2ZW50IG5vdGlmaWNhdGlvbiBkZXN0aW5hdGlvbi5cbiAqL1xuUXVldWU6IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgZmlsdGVyaW5nIHJ1bGVzIHRoYXQgZGV0ZXJtaW5lIHdoaWNoIG9iamVjdHMgdHJpZ2dlciBub3RpZmljYXRpb25zLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBjcmVhdGUgYSBmaWx0ZXIgc28gdGhhdCBBbWF6b24gUzMgc2VuZHMgbm90aWZpY2F0aW9ucyBvbmx5IHdoZW4gaW1hZ2UgZmlsZXMgd2l0aCBhIGBgLmpwZ2BgIGV4dGVuc2lvbiBhcmUgYWRkZWQgdG8gdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uZmlndXJpbmcgZXZlbnQgbm90aWZpY2F0aW9ucyB1c2luZyBvYmplY3Qga2V5IG5hbWUgZmlsdGVyaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXItZ3VpZGUvbm90aWZpY2F0aW9uLWhvdy10by1maWx0ZXJpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uRmlsdGVyMSB7XG5TM0tleTogUzNLZXlGaWx0ZXJcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIHNwZWNpZnlpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHB1YmxpY2F0aW9uIG9mIG1lc3NhZ2VzIHRvIGFuIEFtYXpvbiBTaW1wbGUgTm90aWZpY2F0aW9uIFNlcnZpY2UgKEFtYXpvbiBTTlMpIHRvcGljIHdoZW4gQW1hem9uIFMzIGRldGVjdHMgc3BlY2lmaWVkIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb3BpY0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFMzIGJ1Y2tldCBldmVudCBhYm91dCB3aGljaCB0byBzZW5kIG5vdGlmaWNhdGlvbnMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1N1cHBvcnRlZCBFdmVudCBUeXBlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvTm90aWZpY2F0aW9uSG93VG8uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbkV2ZW50OiBzdHJpbmdcbkZpbHRlcj86IE5vdGlmaWNhdGlvbkZpbHRlcjJcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBbWF6b24gU05TIHRvcGljIHRvIHdoaWNoIEFtYXpvbiBTMyBwdWJsaXNoZXMgYSBtZXNzYWdlIHdoZW4gaXQgZGV0ZWN0cyBldmVudHMgb2YgdGhlIHNwZWNpZmllZCB0eXBlLlxuICovXG5Ub3BpYzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBmaWx0ZXJpbmcgcnVsZXMgdGhhdCBkZXRlcm1pbmUgZm9yIHdoaWNoIG9iamVjdHMgdG8gc2VuZCBub3RpZmljYXRpb25zLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBjcmVhdGUgYSBmaWx0ZXIgc28gdGhhdCBBbWF6b24gUzMgc2VuZHMgbm90aWZpY2F0aW9ucyBvbmx5IHdoZW4gaW1hZ2UgZmlsZXMgd2l0aCBhIGBgLmpwZ2BgIGV4dGVuc2lvbiBhcmUgYWRkZWQgdG8gdGhlIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25GaWx0ZXIyIHtcblMzS2V5OiBTM0tleUZpbHRlclxufVxuLyoqXG4gKiBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBkaXJlY3RvcnkgYnVja2V0cy5cbiAqICAgUGxhY2VzIGFuIE9iamVjdCBMb2NrIGNvbmZpZ3VyYXRpb24gb24gdGhlIHNwZWNpZmllZCBidWNrZXQuIFRoZSBydWxlIHNwZWNpZmllZCBpbiB0aGUgT2JqZWN0IExvY2sgY29uZmlndXJhdGlvbiB3aWxsIGJlIGFwcGxpZWQgYnkgZGVmYXVsdCB0byBldmVyeSBuZXcgb2JqZWN0IHBsYWNlZCBpbiB0aGUgc3BlY2lmaWVkIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbTG9ja2luZyBPYmplY3RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9vYmplY3QtbG9jay5odG1sKS4gXG4gKiAgICArICBUaGUgYGBEZWZhdWx0UmV0ZW50aW9uYGAgc2V0dGluZ3MgcmVxdWlyZSBib3RoIGEgbW9kZSBhbmQgYSBwZXJpb2QuXG4gKiAgICsgIFRoZSBgYERlZmF1bHRSZXRlbnRpb25gYCBwZXJpb2QgY2FuIGJlIGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAgYnV0IHlvdSBtdXN0IHNlbGVjdCBvbmUuIFlvdSBjYW5ub3Qgc3BlY2lmeSBgYERheXNgYCBhbmQgYGBZZWFyc2BgIGF0IHRoZSBzYW1lIHRpbWUuXG4gKiAgICsgIFlvdSBjYW4gZW5hYmxlIE9iamVjdCBMb2NrIGZvciBuZXcgb3IgZXhpc3RpbmcgYnVja2V0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uZmlndXJpbmcgT2JqZWN0IExvY2tdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1sb2NrLWNvbmZpZ3VyZS5odG1sKS5cbiAqICAgXG4gKiAgICBZb3UgbXVzdCBVUkwgZW5jb2RlIGFueSBzaWduZWQgaGVhZGVyIHZhbHVlcyB0aGF0IGNvbnRhaW4gc3BhY2VzLiBGb3IgZXhhbXBsZSwgaWYgeW91ciBoZWFkZXIgdmFsdWUgaXMgYGBteSBmaWxlLnR4dGBgLCBjb250YWluaW5nIHR3byBzcGFjZXMgYWZ0ZXIgYGBteWBgLCB5b3UgbXVzdCBVUkwgZW5jb2RlIHRoaXMgdmFsdWUgdG8gYGBteSUyMCUyMGZpbGUudHh0YGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0TG9ja0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGJ1Y2tldCBoYXMgYW4gT2JqZWN0IExvY2sgY29uZmlndXJhdGlvbiBlbmFibGVkLiBFbmFibGUgYGBPYmplY3RMb2NrRW5hYmxlZGBgIHdoZW4geW91IGFwcGx5IGBgT2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25gYCB0byBhIGJ1Y2tldC5cbiAqL1xuT2JqZWN0TG9ja0VuYWJsZWQ/OiBcIkVuYWJsZWRcIlxuUnVsZT86IE9iamVjdExvY2tSdWxlXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgT2JqZWN0IExvY2sgcnVsZSBmb3IgdGhlIHNwZWNpZmllZCBvYmplY3QuIEVuYWJsZSB0aGlzIHJ1bGUgd2hlbiB5b3UgYXBwbHkgYGBPYmplY3RMb2NrQ29uZmlndXJhdGlvbmBgIHRvIGEgYnVja2V0LiBJZiBPYmplY3QgTG9jayBpcyB0dXJuZWQgb24sIGJ1Y2tldCBzZXR0aW5ncyByZXF1aXJlIGJvdGggYGBNb2RlYGAgYW5kIGEgcGVyaW9kIG9mIGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAuIFlvdSBjYW5ub3Qgc3BlY2lmeSBgYERheXNgYCBhbmQgYGBZZWFyc2BgIGF0IHRoZSBzYW1lIHRpbWUuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW09iamVjdExvY2tSdWxlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zMy1idWNrZXQtb2JqZWN0bG9ja3J1bGUuaHRtbCkgYW5kIFtEZWZhdWx0UmV0ZW50aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zMy1idWNrZXQtZGVmYXVsdHJldGVudGlvbi5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYmplY3RMb2NrUnVsZSB7XG5EZWZhdWx0UmV0ZW50aW9uPzogRGVmYXVsdFJldGVudGlvblxufVxuLyoqXG4gKiBUaGUgZGVmYXVsdCBPYmplY3QgTG9jayByZXRlbnRpb24gbW9kZSBhbmQgcGVyaW9kIHRoYXQgeW91IHdhbnQgdG8gYXBwbHkgdG8gbmV3IG9iamVjdHMgcGxhY2VkIGluIHRoZSBzcGVjaWZpZWQgYnVja2V0LiBJZiBPYmplY3QgTG9jayBpcyB0dXJuZWQgb24sIGJ1Y2tldCBzZXR0aW5ncyByZXF1aXJlIGJvdGggYGBNb2RlYGAgYW5kIGEgcGVyaW9kIG9mIGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAuIFlvdSBjYW5ub3Qgc3BlY2lmeSBgYERheXNgYCBhbmQgYGBZZWFyc2BgIGF0IHRoZSBzYW1lIHRpbWUuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGFsbG93YWJsZSB2YWx1ZXMgZm9yIG1vZGUgYW5kIHBlcmlvZCwgc2VlIFtEZWZhdWx0UmV0ZW50aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zMy1idWNrZXQtZGVmYXVsdHJldGVudGlvbi5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0UmV0ZW50aW9uIHtcbi8qKlxuICogVGhlIG51bWJlciBvZiB5ZWFycyB0aGF0IHlvdSB3YW50IHRvIHNwZWNpZnkgZm9yIHRoZSBkZWZhdWx0IHJldGVudGlvbiBwZXJpb2QuIElmIE9iamVjdCBMb2NrIGlzIHR1cm5lZCBvbiwgeW91IG11c3Qgc3BlY2lmeSBgYE1vZGVgYCBhbmQgc3BlY2lmeSBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgLlxuICovXG5ZZWFycz86IG51bWJlclxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGRheXMgdGhhdCB5b3Ugd2FudCB0byBzcGVjaWZ5IGZvciB0aGUgZGVmYXVsdCByZXRlbnRpb24gcGVyaW9kLiBJZiBPYmplY3QgTG9jayBpcyB0dXJuZWQgb24sIHlvdSBtdXN0IHNwZWNpZnkgYGBNb2RlYGAgYW5kIHNwZWNpZnkgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC5cbiAqL1xuRGF5cz86IG51bWJlclxuLyoqXG4gKiBUaGUgZGVmYXVsdCBPYmplY3QgTG9jayByZXRlbnRpb24gbW9kZSB5b3Ugd2FudCB0byBhcHBseSB0byBuZXcgb2JqZWN0cyBwbGFjZWQgaW4gdGhlIHNwZWNpZmllZCBidWNrZXQuIElmIE9iamVjdCBMb2NrIGlzIHR1cm5lZCBvbiwgeW91IG11c3Qgc3BlY2lmeSBgYE1vZGVgYCBhbmQgc3BlY2lmeSBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgLlxuICovXG5Nb2RlPzogKFwiQ09NUExJQU5DRVwiIHwgXCJHT1ZFUk5BTkNFXCIpXG59XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gdGhhdCBkZWZpbmVzIGhvdyBBbWF6b24gUzMgaGFuZGxlcyBPYmplY3QgT3duZXJzaGlwIHJ1bGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE93bmVyc2hpcENvbnRyb2xzIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBjb250YWluZXIgZWxlbWVudCBmb3IgT2JqZWN0IE93bmVyc2hpcCBydWxlcy5cbiAqL1xuUnVsZXM6IE93bmVyc2hpcENvbnRyb2xzUnVsZVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyBhbiBPYmplY3QgT3duZXJzaGlwIHJ1bGUuXG4gKiAgUzMgT2JqZWN0IE93bmVyc2hpcCBpcyBhbiBBbWF6b24gUzMgYnVja2V0LWxldmVsIHNldHRpbmcgdGhhdCB5b3UgY2FuIHVzZSB0byBkaXNhYmxlIGFjY2VzcyBjb250cm9sIGxpc3RzIChBQ0xzKSBhbmQgdGFrZSBvd25lcnNoaXAgb2YgZXZlcnkgb2JqZWN0IGluIHlvdXIgYnVja2V0LCBzaW1wbGlmeWluZyBhY2Nlc3MgbWFuYWdlbWVudCBmb3IgZGF0YSBzdG9yZWQgaW4gQW1hem9uIFMzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb250cm9sbGluZyBvd25lcnNoaXAgb2Ygb2JqZWN0cyBhbmQgZGlzYWJsaW5nIEFDTHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2Fib3V0LW9iamVjdC1vd25lcnNoaXAuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3duZXJzaGlwQ29udHJvbHNSdWxlIHtcbi8qKlxuICogU3BlY2lmaWVzIGFuIG9iamVjdCBvd25lcnNoaXAgcnVsZS5cbiAqL1xuT2JqZWN0T3duZXJzaGlwPzogKFwiT2JqZWN0V3JpdGVyXCIgfCBcIkJ1Y2tldE93bmVyUHJlZmVycmVkXCIgfCBcIkJ1Y2tldE93bmVyRW5mb3JjZWRcIilcbn1cbi8qKlxuICogQ29uZmlndXJhdGlvbiB0aGF0IGRlZmluZXMgaG93IEFtYXpvbiBTMyBoYW5kbGVzIHB1YmxpYyBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHNob3VsZCBibG9jayBwdWJsaWMgYWNjZXNzIGNvbnRyb2wgbGlzdHMgKEFDTHMpIGZvciB0aGlzIGJ1Y2tldCBhbmQgb2JqZWN0cyBpbiB0aGlzIGJ1Y2tldC4gU2V0dGluZyB0aGlzIGVsZW1lbnQgdG8gYGBUUlVFYGAgY2F1c2VzIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3I6XG4gKiAgICsgIFBVVCBCdWNrZXQgQUNMIGFuZCBQVVQgT2JqZWN0IEFDTCBjYWxscyBmYWlsIGlmIHRoZSBzcGVjaWZpZWQgQUNMIGlzIHB1YmxpYy5cbiAqICAgKyAgUFVUIE9iamVjdCBjYWxscyBmYWlsIGlmIHRoZSByZXF1ZXN0IGluY2x1ZGVzIGEgcHVibGljIEFDTC5cbiAqICAgKyAgUFVUIEJ1Y2tldCBjYWxscyBmYWlsIGlmIHRoZSByZXF1ZXN0IGluY2x1ZGVzIGEgcHVibGljIEFDTC5cbiAqICAgXG4gKiAgRW5hYmxpbmcgdGhpcyBzZXR0aW5nIGRvZXNuJ3QgYWZmZWN0IGV4aXN0aW5nIHBvbGljaWVzIG9yIEFDTHMuXG4gKi9cbkJsb2NrUHVibGljQWNscz86IGJvb2xlYW5cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHNob3VsZCBibG9jayBwdWJsaWMgYnVja2V0IHBvbGljaWVzIGZvciB0aGlzIGJ1Y2tldC4gU2V0dGluZyB0aGlzIGVsZW1lbnQgdG8gYGBUUlVFYGAgY2F1c2VzIEFtYXpvbiBTMyB0byByZWplY3QgY2FsbHMgdG8gUFVUIEJ1Y2tldCBwb2xpY3kgaWYgdGhlIHNwZWNpZmllZCBidWNrZXQgcG9saWN5IGFsbG93cyBwdWJsaWMgYWNjZXNzLiBcbiAqICBFbmFibGluZyB0aGlzIHNldHRpbmcgZG9lc24ndCBhZmZlY3QgZXhpc3RpbmcgYnVja2V0IHBvbGljaWVzLlxuICovXG5CbG9ja1B1YmxpY1BvbGljeT86IGJvb2xlYW5cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHNob3VsZCBpZ25vcmUgcHVibGljIEFDTHMgZm9yIHRoaXMgYnVja2V0IGFuZCBvYmplY3RzIGluIHRoaXMgYnVja2V0LiBTZXR0aW5nIHRoaXMgZWxlbWVudCB0byBgYFRSVUVgYCBjYXVzZXMgQW1hem9uIFMzIHRvIGlnbm9yZSBhbGwgcHVibGljIEFDTHMgb24gdGhpcyBidWNrZXQgYW5kIG9iamVjdHMgaW4gdGhpcyBidWNrZXQuXG4gKiAgRW5hYmxpbmcgdGhpcyBzZXR0aW5nIGRvZXNuJ3QgYWZmZWN0IHRoZSBwZXJzaXN0ZW5jZSBvZiBhbnkgZXhpc3RpbmcgQUNMcyBhbmQgZG9lc24ndCBwcmV2ZW50IG5ldyBwdWJsaWMgQUNMcyBmcm9tIGJlaW5nIHNldC5cbiAqL1xuSWdub3JlUHVibGljQWNscz86IGJvb2xlYW5cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHNob3VsZCByZXN0cmljdCBwdWJsaWMgYnVja2V0IHBvbGljaWVzIGZvciB0aGlzIGJ1Y2tldC4gU2V0dGluZyB0aGlzIGVsZW1lbnQgdG8gYGBUUlVFYGAgcmVzdHJpY3RzIGFjY2VzcyB0byB0aGlzIGJ1Y2tldCB0byBvbmx5IEFXUy1zZXJ2aWNlIHByaW5jaXBhbHMgYW5kIGF1dGhvcml6ZWQgdXNlcnMgd2l0aGluIHRoaXMgYWNjb3VudCBpZiB0aGUgYnVja2V0IGhhcyBhIHB1YmxpYyBwb2xpY3kuXG4gKiAgRW5hYmxpbmcgdGhpcyBzZXR0aW5nIGRvZXNuJ3QgYWZmZWN0IHByZXZpb3VzbHkgc3RvcmVkIGJ1Y2tldCBwb2xpY2llcywgZXhjZXB0IHRoYXQgcHVibGljIGFuZCBjcm9zcy1hY2NvdW50IGFjY2VzcyB3aXRoaW4gYW55IHB1YmxpYyBidWNrZXQgcG9saWN5LCBpbmNsdWRpbmcgbm9uLXB1YmxpYyBkZWxlZ2F0aW9uIHRvIHNwZWNpZmljIGFjY291bnRzLCBpcyBibG9ja2VkLlxuICovXG5SZXN0cmljdFB1YmxpY0J1Y2tldHM/OiBib29sZWFuXG59XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHJlcGxpY2F0aW5nIG9iamVjdHMgaW4gYW4gUzMgYnVja2V0LiBUbyBlbmFibGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IGFsc28gZW5hYmxlIHZlcnNpb25pbmcgYnkgdXNpbmcgdGhlIGBgVmVyc2lvbmluZ0NvbmZpZ3VyYXRpb25gYCBwcm9wZXJ0eS5cbiAqICBBbWF6b24gUzMgY2FuIHN0b3JlIHJlcGxpY2F0ZWQgb2JqZWN0cyBpbiBhIHNpbmdsZSBkZXN0aW5hdGlvbiBidWNrZXQgb3IgbXVsdGlwbGUgZGVzdGluYXRpb24gYnVja2V0cy4gVGhlIGRlc3RpbmF0aW9uIGJ1Y2tldCBvciBidWNrZXRzIG11c3QgYWxyZWFkeSBleGlzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvbkNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIElBTWxvbmcgKElBTSkgcm9sZSB0aGF0IEFtYXpvbiBTMyBhc3N1bWVzIHdoZW4gcmVwbGljYXRpbmcgb2JqZWN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSG93IHRvIFNldCBVcCBSZXBsaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvcmVwbGljYXRpb24taG93LXNldHVwLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5Sb2xlOiBzdHJpbmdcbi8qKlxuICogQSBjb250YWluZXIgZm9yIG9uZSBvciBtb3JlIHJlcGxpY2F0aW9uIHJ1bGVzLiBBIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBydWxlIGFuZCBjYW4gY29udGFpbiBhIG1heGltdW0gb2YgMSwwMDAgcnVsZXMuXG4gKi9cblJ1bGVzOiBSZXBsaWNhdGlvblJ1bGVbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hpY2ggQW1hem9uIFMzIG9iamVjdHMgdG8gcmVwbGljYXRlIGFuZCB3aGVyZSB0byBzdG9yZSB0aGUgcmVwbGljYXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25SdWxlIHtcbkRlbGV0ZU1hcmtlclJlcGxpY2F0aW9uPzogRGVsZXRlTWFya2VyUmVwbGljYXRpb25cbkRlc3RpbmF0aW9uOiBSZXBsaWNhdGlvbkRlc3RpbmF0aW9uXG5GaWx0ZXI/OiBSZXBsaWNhdGlvblJ1bGVGaWx0ZXJcbi8qKlxuICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGUuIFRoZSBtYXhpbXVtIHZhbHVlIGlzIDI1NSBjaGFyYWN0ZXJzLiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhIHZhbHVlLCBBV1MgQ2xvdWRGb3JtYXRpb24gZ2VuZXJhdGVzIGEgcmFuZG9tIElELiBXaGVuIHVzaW5nIGEgVjIgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiB0aGlzIHByb3BlcnR5IGlzIGNhcGl0YWxpemVkIGFzIFwiSURcIi5cbiAqL1xuSWQ/OiBzdHJpbmdcbi8qKlxuICogQW4gb2JqZWN0IGtleSBuYW1lIHByZWZpeCB0aGF0IGlkZW50aWZpZXMgdGhlIG9iamVjdCBvciBvYmplY3RzIHRvIHdoaWNoIHRoZSBydWxlIGFwcGxpZXMuIFRoZSBtYXhpbXVtIHByZWZpeCBsZW5ndGggaXMgMSwwMjQgY2hhcmFjdGVycy4gVG8gaW5jbHVkZSBhbGwgb2JqZWN0cyBpbiBhIGJ1Y2tldCwgc3BlY2lmeSBhbiBlbXB0eSBzdHJpbmcuIFRvIGZpbHRlciB1c2luZyBhIFYxIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIGFkZCB0aGUgYGBQcmVmaXhgYCBkaXJlY3RseSBhcyBhIGNoaWxkIGVsZW1lbnQgb2YgdGhlIGBgUnVsZWBgIGVsZW1lbnQuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgcHJpb3JpdHkgaW5kaWNhdGVzIHdoaWNoIHJ1bGUgaGFzIHByZWNlZGVuY2Ugd2hlbmV2ZXIgdHdvIG9yIG1vcmUgcmVwbGljYXRpb24gcnVsZXMgY29uZmxpY3QuIEFtYXpvbiBTMyB3aWxsIGF0dGVtcHQgdG8gcmVwbGljYXRlIG9iamVjdHMgYWNjb3JkaW5nIHRvIGFsbCByZXBsaWNhdGlvbiBydWxlcy4gSG93ZXZlciwgaWYgdGhlcmUgYXJlIHR3byBvciBtb3JlIHJ1bGVzIHdpdGggdGhlIHNhbWUgZGVzdGluYXRpb24gYnVja2V0LCB0aGVuIG9iamVjdHMgd2lsbCBiZSByZXBsaWNhdGVkIGFjY29yZGluZyB0byB0aGUgcnVsZSB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5LiBUaGUgaGlnaGVyIHRoZSBudW1iZXIsIHRoZSBoaWdoZXIgdGhlIHByaW9yaXR5LiBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtSZXBsaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvcmVwbGljYXRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblByaW9yaXR5PzogbnVtYmVyXG5Tb3VyY2VTZWxlY3Rpb25Dcml0ZXJpYT86IFNvdXJjZVNlbGVjdGlvbkNyaXRlcmlhXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBydWxlIGlzIGVuYWJsZWQuXG4gKi9cblN0YXR1czogKFwiRGlzYWJsZWRcIiB8IFwiRW5hYmxlZFwiKVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgcmVwbGljYXRlcyBkZWxldGUgbWFya2Vycy4gSWYgeW91IHNwZWNpZnkgYSBgYEZpbHRlcmBgIGluIHlvdXIgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiwgeW91IG11c3QgYWxzbyBpbmNsdWRlIGEgYGBEZWxldGVNYXJrZXJSZXBsaWNhdGlvbmBgIGVsZW1lbnQuIElmIHlvdXIgYGBGaWx0ZXJgYCBpbmNsdWRlcyBhIGBgVGFnYGAgZWxlbWVudCwgdGhlIGBgRGVsZXRlTWFya2VyUmVwbGljYXRpb25gYGBgU3RhdHVzYGAgbXVzdCBiZSBzZXQgdG8gRGlzYWJsZWQsIGJlY2F1c2UgQW1hem9uIFMzIGRvZXMgbm90IHN1cHBvcnQgcmVwbGljYXRpbmcgZGVsZXRlIG1hcmtlcnMgZm9yIHRhZy1iYXNlZCBydWxlcy4gRm9yIGFuIGV4YW1wbGUgY29uZmlndXJhdGlvbiwgc2VlIFtCYXNpYyBSdWxlIENvbmZpZ3VyYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3JlcGxpY2F0aW9uLWFkZC1jb25maWcuaHRtbCNyZXBsaWNhdGlvbi1jb25maWctbWluLXJ1bGUtY29uZmlnKS4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZGVsZXRlIG1hcmtlciByZXBsaWNhdGlvbiwgc2VlIFtCYXNpYyBSdWxlIENvbmZpZ3VyYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2RlbGV0ZS1tYXJrZXItcmVwbGljYXRpb24uaHRtbCkuIFxuICogICBJZiB5b3UgYXJlIHVzaW5nIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGUgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiwgQW1hem9uIFMzIGhhbmRsZXMgcmVwbGljYXRpb24gb2YgZGVsZXRlIG1hcmtlcnMgZGlmZmVyZW50bHkuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0JhY2t3YXJkIENvbXBhdGliaWxpdHldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3JlcGxpY2F0aW9uLWFkZC1jb25maWcuaHRtbCNyZXBsaWNhdGlvbi1iYWNrd2FyZC1jb21wYXQtY29uc2lkZXJhdGlvbnMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlbGV0ZU1hcmtlclJlcGxpY2F0aW9uIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmVwbGljYXRlIGRlbGV0ZSBtYXJrZXJzLlxuICovXG5TdGF0dXM/OiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG59XG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVwbGljYXRpb24gZGVzdGluYXRpb24gYW5kIGl0cyBjb25maWd1cmF0aW9ucyBpbmNsdWRpbmcgZW5hYmxpbmcgdGhlIFMzIFJlcGxpY2F0aW9uIFRpbWUgQ29udHJvbCAoUzMgUlRDKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvbkRlc3RpbmF0aW9uIHtcbkFjY2Vzc0NvbnRyb2xUcmFuc2xhdGlvbj86IEFjY2Vzc0NvbnRyb2xUcmFuc2xhdGlvblxuLyoqXG4gKiBEZXN0aW5hdGlvbiBidWNrZXQgb3duZXIgYWNjb3VudCBJRC4gSW4gYSBjcm9zcy1hY2NvdW50IHNjZW5hcmlvLCBpZiB5b3UgZGlyZWN0IEFtYXpvbiBTMyB0byBjaGFuZ2UgcmVwbGljYSBvd25lcnNoaXAgdG8gdGhlIEFXUy1hY2NvdW50IHRoYXQgb3ducyB0aGUgZGVzdGluYXRpb24gYnVja2V0IGJ5IHNwZWNpZnlpbmcgdGhlIGBgQWNjZXNzQ29udHJvbFRyYW5zbGF0aW9uYGAgcHJvcGVydHksIHRoaXMgaXMgdGhlIGFjY291bnQgSUQgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldCBvd25lci4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ3Jvc3MtUmVnaW9uIFJlcGxpY2F0aW9uIEFkZGl0aW9uYWwgQ29uZmlndXJhdGlvbjogQ2hhbmdlIFJlcGxpY2EgT3duZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2Nyci1jaGFuZ2Utb3duZXIuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKiAgSWYgeW91IHNwZWNpZnkgdGhlIGBgQWNjZXNzQ29udHJvbFRyYW5zbGF0aW9uYGAgcHJvcGVydHksIHRoZSBgYEFjY291bnRgYCBwcm9wZXJ0eSBpcyByZXF1aXJlZC5cbiAqL1xuQWNjb3VudD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGJ1Y2tldCB3aGVyZSB5b3Ugd2FudCBBbWF6b24gUzMgdG8gc3RvcmUgdGhlIHJlc3VsdHMuXG4gKi9cbkJ1Y2tldDogc3RyaW5nXG5FbmNyeXB0aW9uQ29uZmlndXJhdGlvbj86IEVuY3J5cHRpb25Db25maWd1cmF0aW9uXG5NZXRyaWNzPzogTWV0cmljc1xuUmVwbGljYXRpb25UaW1lPzogUmVwbGljYXRpb25UaW1lXG4vKipcbiAqIFRoZSBzdG9yYWdlIGNsYXNzIHRvIHVzZSB3aGVuIHJlcGxpY2F0aW5nIG9iamVjdHMsIHN1Y2ggYXMgUzMgU3RhbmRhcmQgb3IgcmVkdWNlZCByZWR1bmRhbmN5LiBCeSBkZWZhdWx0LCBBbWF6b24gUzMgdXNlcyB0aGUgc3RvcmFnZSBjbGFzcyBvZiB0aGUgc291cmNlIG9iamVjdCB0byBjcmVhdGUgdGhlIG9iamVjdCByZXBsaWNhLiBcbiAqICBGb3IgdmFsaWQgdmFsdWVzLCBzZWUgdGhlIGBgU3RvcmFnZUNsYXNzYGAgZWxlbWVudCBvZiB0aGUgW1BVVCBCdWNrZXQgcmVwbGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvQVBJL1JFU1RCdWNrZXRQVVRyZXBsaWNhdGlvbi5odG1sKSBhY3Rpb24gaW4gdGhlICpBbWF6b24gUzMgQVBJIFJlZmVyZW5jZSouXG4gKiAgYGBGU1hfT1BFTlpGU2BgIGlzIG5vdCBhbiBhY2NlcHRlZCB2YWx1ZSB3aGVuIHJlcGxpY2F0aW5nIG9iamVjdHMuXG4gKi9cblN0b3JhZ2VDbGFzcz86IChcIkRFRVBfQVJDSElWRVwiIHwgXCJHTEFDSUVSXCIgfCBcIkdMQUNJRVJfSVJcIiB8IFwiSU5URUxMSUdFTlRfVElFUklOR1wiIHwgXCJPTkVaT05FX0lBXCIgfCBcIlJFRFVDRURfUkVEVU5EQU5DWVwiIHwgXCJTVEFOREFSRFwiIHwgXCJTVEFOREFSRF9JQVwiKVxufVxuLyoqXG4gKiBTcGVjaWZ5IHRoaXMgb25seSBpbiBhIGNyb3NzLWFjY291bnQgc2NlbmFyaW8gKHdoZXJlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYnVja2V0IG93bmVycyBhcmUgbm90IHRoZSBzYW1lKSwgYW5kIHlvdSB3YW50IHRvIGNoYW5nZSByZXBsaWNhIG93bmVyc2hpcCB0byB0aGUgQVdTLWFjY291bnQgdGhhdCBvd25zIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQuIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiwgdGhlIHJlcGxpY2FzIGFyZSBvd25lZCBieSBzYW1lIEFXUy1hY2NvdW50IHRoYXQgb3ducyB0aGUgc291cmNlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2Nlc3NDb250cm9sVHJhbnNsYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHJlcGxpY2Egb3duZXJzaGlwLiBGb3IgZGVmYXVsdCBhbmQgdmFsaWQgdmFsdWVzLCBzZWUgW1BVVCBidWNrZXQgcmVwbGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvQVBJL1JFU1RCdWNrZXRQVVRyZXBsaWNhdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuT3duZXI6IFwiRGVzdGluYXRpb25cIlxufVxuLyoqXG4gKiBTcGVjaWZpZXMgZW5jcnlwdGlvbi1yZWxhdGVkIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRpb25Db25maWd1cmF0aW9uIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBJRCAoS2V5IEFSTiBvciBBbGlhcyBBUk4pIG9mIHRoZSBjdXN0b21lciBtYW5hZ2VkIEFXUyBLTVMga2V5IHN0b3JlZCBpbiBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSBmb3IgdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldC4gQW1hem9uIFMzIHVzZXMgdGhpcyBrZXkgdG8gZW5jcnlwdCByZXBsaWNhIG9iamVjdHMuIEFtYXpvbiBTMyBvbmx5IHN1cHBvcnRzIHN5bW1ldHJpYyBlbmNyeXB0aW9uIEtNUyBrZXlzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBc3ltbWV0cmljIGtleXMgaW4gS01TXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vL2ttcy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvc3ltbWV0cmljLWFzeW1tZXRyaWMuaHRtbCkgaW4gdGhlICpLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIERldmVsb3BlciBHdWlkZSouXG4gKi9cblJlcGxpY2FLbXNLZXlJRDogc3RyaW5nXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHNwZWNpZnlpbmcgcmVwbGljYXRpb24gbWV0cmljcy1yZWxhdGVkIHNldHRpbmdzIGVuYWJsaW5nIHJlcGxpY2F0aW9uIG1ldHJpY3MgYW5kIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNzIHtcbkV2ZW50VGhyZXNob2xkPzogUmVwbGljYXRpb25UaW1lVmFsdWVcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHJlcGxpY2F0aW9uIG1ldHJpY3MgYXJlIGVuYWJsZWQuXG4gKi9cblN0YXR1czogKFwiRGlzYWJsZWRcIiB8IFwiRW5hYmxlZFwiKVxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBzcGVjaWZ5aW5nIHRoZSB0aW1lIHRocmVzaG9sZCBmb3IgZW1pdHRpbmcgdGhlIGBgczM6UmVwbGljYXRpb246T3BlcmF0aW9uTWlzc2VkVGhyZXNob2xkYGAgZXZlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25UaW1lVmFsdWUge1xuLyoqXG4gKiBDb250YWlucyBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcgdGltZSBpbiBtaW51dGVzLiBcbiAqICAgVmFsaWQgdmFsdWU6IDE1XG4gKi9cbk1pbnV0ZXM6IG51bWJlclxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBzcGVjaWZ5aW5nIFMzIFJlcGxpY2F0aW9uIFRpbWUgQ29udHJvbCAoUzMgUlRDKSwgaW5jbHVkaW5nIHdoZXRoZXIgUzMgUlRDIGlzIGVuYWJsZWQgYW5kIHRoZSB0aW1lIHdoZW4gYWxsIG9iamVjdHMgYW5kIG9wZXJhdGlvbnMgb24gb2JqZWN0cyBtdXN0IGJlIHJlcGxpY2F0ZWQuIE11c3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYSBgYE1ldHJpY3NgYCBibG9jay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblRpbWUge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgcmVwbGljYXRpb24gdGltZSBpcyBlbmFibGVkLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcblRpbWU6IFJlcGxpY2F0aW9uVGltZVZhbHVlMVxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBzcGVjaWZ5aW5nIHRoZSB0aW1lIGJ5IHdoaWNoIHJlcGxpY2F0aW9uIHNob3VsZCBiZSBjb21wbGV0ZSBmb3IgYWxsIG9iamVjdHMgYW5kIG9wZXJhdGlvbnMgb24gb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblRpbWVWYWx1ZTEge1xuLyoqXG4gKiBDb250YWlucyBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcgdGltZSBpbiBtaW51dGVzLiBcbiAqICAgVmFsaWQgdmFsdWU6IDE1XG4gKi9cbk1pbnV0ZXM6IG51bWJlclxufVxuLyoqXG4gKiBBIGZpbHRlciB0aGF0IGlkZW50aWZpZXMgdGhlIHN1YnNldCBvZiBvYmplY3RzIHRvIHdoaWNoIHRoZSByZXBsaWNhdGlvbiBydWxlIGFwcGxpZXMuIEEgYGBGaWx0ZXJgYCBtdXN0IHNwZWNpZnkgZXhhY3RseSBvbmUgYGBQcmVmaXhgYCwgYGBUYWdGaWx0ZXJgYCwgb3IgYW4gYGBBbmRgYCBjaGlsZCBlbGVtZW50LiBUaGUgdXNlIG9mIHRoZSBmaWx0ZXIgZmllbGQgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBhIFYyIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24uIFRoaXMgZmllbGQgaXNuJ3Qgc3VwcG9ydGVkIGluIGEgVjEgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbi5cbiAqICAgVjEgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiBvbmx5IHN1cHBvcnRzIGZpbHRlcmluZyBieSBrZXkgcHJlZml4LiBUbyBmaWx0ZXIgdXNpbmcgYSBWMSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCBhZGQgdGhlIGBgUHJlZml4YGAgZGlyZWN0bHkgYXMgYSBjaGlsZCBlbGVtZW50IG9mIHRoZSBgYFJ1bGVgYCBlbGVtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uUnVsZUZpbHRlciB7XG5BbmQ/OiBSZXBsaWNhdGlvblJ1bGVBbmRPcGVyYXRvclxuLyoqXG4gKiBBbiBvYmplY3Qga2V5IG5hbWUgcHJlZml4IHRoYXQgaWRlbnRpZmllcyB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJ1bGUgYXBwbGllcy5cbiAqICAgUmVwbGFjZW1lbnQgbXVzdCBiZSBtYWRlIGZvciBvYmplY3Qga2V5cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyBjYXJyaWFnZSByZXR1cm5zKSB3aGVuIHVzaW5nIFhNTCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbWE1MIHJlbGF0ZWQgb2JqZWN0IGtleSBjb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LWtleXMuaHRtbCNvYmplY3Qta2V5LXhtbC1yZWxhdGVkLWNvbnN0cmFpbnRzKS5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG5UYWdGaWx0ZXI/OiBUYWdGaWx0ZXIxXG59XG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBzcGVjaWZ5aW5nIHJ1bGUgZmlsdGVycy4gVGhlIGZpbHRlcnMgZGV0ZXJtaW5lIHRoZSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLiBUaGlzIGVsZW1lbnQgaXMgcmVxdWlyZWQgb25seSBpZiB5b3Ugc3BlY2lmeSBtb3JlIHRoYW4gb25lIGZpbHRlci4gRm9yIGV4YW1wbGU6IFxuICogICArICBJZiB5b3Ugc3BlY2lmeSBib3RoIGEgYGBQcmVmaXhgYCBhbmQgYSBgYFRhZ0ZpbHRlcmBgLCB3cmFwIHRoZXNlIGZpbHRlcnMgaW4gYW4gYGBBbmRgYCB0YWcuXG4gKiAgICsgIElmIHlvdSBzcGVjaWZ5IGEgZmlsdGVyIGJhc2VkIG9uIG11bHRpcGxlIHRhZ3MsIHdyYXAgdGhlIGBgVGFnRmlsdGVyYGAgZWxlbWVudHMgaW4gYW4gYGBBbmRgYCB0YWcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25SdWxlQW5kT3BlcmF0b3Ige1xuLyoqXG4gKiBBbiBvYmplY3Qga2V5IG5hbWUgcHJlZml4IHRoYXQgaWRlbnRpZmllcyB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJ1bGUgYXBwbGllcy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIEFuIGFycmF5IG9mIHRhZ3MgY29udGFpbmluZyBrZXkgYW5kIHZhbHVlIHBhaXJzLlxuICovXG5UYWdGaWx0ZXJzPzogVGFnRmlsdGVyW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRhZ3MgdG8gdXNlIHRvIGlkZW50aWZ5IGEgc3Vic2V0IG9mIG9iamVjdHMgZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NhdGVnb3JpemluZyB5b3VyIHN0b3JhZ2UgdXNpbmcgdGFnc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LXRhZ2dpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gU2ltcGxlIFN0b3JhZ2UgU2VydmljZSBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWdGaWx0ZXIxIHtcbi8qKlxuICogVGhlIHRhZyB2YWx1ZS5cbiAqL1xuVmFsdWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFnIGtleS5cbiAqL1xuS2V5OiBzdHJpbmdcbn1cbi8qKlxuICogQSBjb250YWluZXIgdGhhdCBkZXNjcmliZXMgYWRkaXRpb25hbCBmaWx0ZXJzIGZvciBpZGVudGlmeWluZyB0aGUgc291cmNlIG9iamVjdHMgdGhhdCB5b3Ugd2FudCB0byByZXBsaWNhdGUuIFlvdSBjYW4gY2hvb3NlIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSByZXBsaWNhdGlvbiBvZiB0aGVzZSBvYmplY3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZVNlbGVjdGlvbkNyaXRlcmlhIHtcblJlcGxpY2FNb2RpZmljYXRpb25zPzogUmVwbGljYU1vZGlmaWNhdGlvbnNcblNzZUttc0VuY3J5cHRlZE9iamVjdHM/OiBTc2VLbXNFbmNyeXB0ZWRPYmplY3RzXG59XG4vKipcbiAqIEEgZmlsdGVyIHRoYXQgeW91IGNhbiBzcGVjaWZ5IGZvciBzZWxlY3Rpb24gZm9yIG1vZGlmaWNhdGlvbnMgb24gcmVwbGljYXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYU1vZGlmaWNhdGlvbnMge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgcmVwbGljYXRlcyBtb2RpZmljYXRpb25zIG9uIHJlcGxpY2FzLlxuICogICpBbGxvd2VkIHZhbHVlcyo6IGBgRW5hYmxlZGBgIHwgYGBEaXNhYmxlZGBgXG4gKi9cblN0YXR1czogKFwiRW5hYmxlZFwiIHwgXCJEaXNhYmxlZFwiKVxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3IgZmlsdGVyIGluZm9ybWF0aW9uIGZvciB0aGUgc2VsZWN0aW9uIG9mIEFtYXpvbiBTMyBvYmplY3RzIGVuY3J5cHRlZCB3aXRoIEFXUyBLTVMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3NlS21zRW5jcnlwdGVkT2JqZWN0cyB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyByZXBsaWNhdGVzIG9iamVjdHMgY3JlYXRlZCB3aXRoIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdXNpbmcgYW4gQVdTIEtNUyBrZXkgc3RvcmVkIGluIEFXUyBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbn1cbi8qKlxuICogQSBjb250YWluZXIgb2YgYSBrZXkgdmFsdWUgbmFtZSBwYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIE5hbWUgb2YgdGhlIG9iamVjdCBrZXkuXG4gKi9cbktleTogc3RyaW5nXG4vKipcbiAqIFZhbHVlIG9mIHRoZSB0YWcuXG4gKi9cblZhbHVlOiBzdHJpbmdcbn1cbi8qKlxuICogRW5hYmxlcyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBhbGwgb2JqZWN0cyBpbiB0aGlzIGJ1Y2tldC4gWW91IG1pZ2h0IGVuYWJsZSB2ZXJzaW9uaW5nIHRvIHByZXZlbnQgb2JqZWN0cyBmcm9tIGJlaW5nIGRlbGV0ZWQgb3Igb3ZlcndyaXR0ZW4gYnkgbWlzdGFrZSBvciB0byBhcmNoaXZlIG9iamVjdHMgc28gdGhhdCB5b3UgY2FuIHJldHJpZXZlIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoZW0uXG4gKiAgIFdoZW4geW91IGVuYWJsZSB2ZXJzaW9uaW5nIG9uIGEgYnVja2V0IGZvciB0aGUgZmlyc3QgdGltZSwgaXQgbWlnaHQgdGFrZSBhIHNob3J0IGFtb3VudCBvZiB0aW1lIGZvciB0aGUgY2hhbmdlIHRvIGJlIGZ1bGx5IHByb3BhZ2F0ZWQuIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB3YWl0IGZvciAxNSBtaW51dGVzIGFmdGVyIGVuYWJsaW5nIHZlcnNpb25pbmcgYmVmb3JlIGlzc3Vpbmcgd3JpdGUgb3BlcmF0aW9ucyAoYGBQVVRgYCBvciBgYERFTEVURWBgKSBvbiBvYmplY3RzIGluIHRoZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbmluZ0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgdmVyc2lvbmluZyBzdGF0ZSBvZiB0aGUgYnVja2V0LlxuICovXG5TdGF0dXM6IChcIkVuYWJsZWRcIiB8IFwiU3VzcGVuZGVkXCIpXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIHVzZWQgdG8gY29uZmlndXJlIHRoZSBidWNrZXQgYXMgYSBzdGF0aWMgd2Vic2l0ZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSG9zdGluZyBXZWJzaXRlcyBvbiBBbWF6b24gUzNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L1dlYnNpdGVIb3N0aW5nLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYnNpdGVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGVycm9yIGRvY3VtZW50IGZvciB0aGUgd2Vic2l0ZS5cbiAqL1xuRXJyb3JEb2N1bWVudD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgaW5kZXggZG9jdW1lbnQgZm9yIHRoZSB3ZWJzaXRlLlxuICovXG5JbmRleERvY3VtZW50Pzogc3RyaW5nXG4vKipcbiAqIFJ1bGVzIHRoYXQgZGVmaW5lIHdoZW4gYSByZWRpcmVjdCBpcyBhcHBsaWVkIGFuZCB0aGUgcmVkaXJlY3QgYmVoYXZpb3IuXG4gKi9cblJvdXRpbmdSdWxlcz86IFJvdXRpbmdSdWxlW11cblJlZGlyZWN0QWxsUmVxdWVzdHNUbz86IFJlZGlyZWN0QWxsUmVxdWVzdHNUb1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHJlZGlyZWN0IGJlaGF2aW9yIGFuZCB3aGVuIGEgcmVkaXJlY3QgaXMgYXBwbGllZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcm91dGluZyBydWxlcywgc2VlIFtDb25maWd1cmluZyBhZHZhbmNlZCBjb25kaXRpb25hbCByZWRpcmVjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2hvdy10by1wYWdlLXJlZGlyZWN0Lmh0bWwjYWR2YW5jZWQtY29uZGl0aW9uYWwtcmVkaXJlY3RzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5nUnVsZSB7XG5SZWRpcmVjdFJ1bGU6IFJlZGlyZWN0UnVsZVxuUm91dGluZ1J1bGVDb25kaXRpb24/OiBSb3V0aW5nUnVsZUNvbmRpdGlvblxufVxuLyoqXG4gKiBDb250YWluZXIgZm9yIHJlZGlyZWN0IGluZm9ybWF0aW9uLiBZb3UgY2FuIHJlZGlyZWN0IHJlcXVlc3RzIHRvIGFub3RoZXIgaG9zdCwgdG8gYW5vdGhlciBwYWdlLCBvciB3aXRoIGFub3RoZXIgcHJvdG9jb2wuIEluIHRoZSBldmVudCBvZiBhbiBlcnJvciwgeW91IGNhbiBzcGVjaWZ5IGEgZGlmZmVyZW50IGVycm9yIGNvZGUgdG8gcmV0dXJuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0UnVsZSB7XG4vKipcbiAqIFRoZSBob3N0IG5hbWUgdG8gdXNlIGluIHRoZSByZWRpcmVjdCByZXF1ZXN0LlxuICovXG5Ib3N0TmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSFRUUCByZWRpcmVjdCBjb2RlIHRvIHVzZSBvbiB0aGUgcmVzcG9uc2UuIE5vdCByZXF1aXJlZCBpZiBvbmUgb2YgdGhlIHNpYmxpbmdzIGlzIHByZXNlbnQuXG4gKi9cbkh0dHBSZWRpcmVjdENvZGU/OiBzdHJpbmdcbi8qKlxuICogUHJvdG9jb2wgdG8gdXNlIHdoZW4gcmVkaXJlY3RpbmcgcmVxdWVzdHMuIFRoZSBkZWZhdWx0IGlzIHRoZSBwcm90b2NvbCB0aGF0IGlzIHVzZWQgaW4gdGhlIG9yaWdpbmFsIHJlcXVlc3QuXG4gKi9cblByb3RvY29sPzogKFwiaHR0cFwiIHwgXCJodHRwc1wiKVxuLyoqXG4gKiBUaGUgb2JqZWN0IGtleSBwcmVmaXggdG8gdXNlIGluIHRoZSByZWRpcmVjdCByZXF1ZXN0LiBGb3IgZXhhbXBsZSwgdG8gcmVkaXJlY3QgcmVxdWVzdHMgZm9yIGFsbCBwYWdlcyB3aXRoIHByZWZpeCBgYGRvY3MvYGAgKG9iamVjdHMgaW4gdGhlIGBgZG9jcy9gYCBmb2xkZXIpIHRvIGBgZG9jdW1lbnRzL2BgLCB5b3UgY2FuIHNldCBhIGNvbmRpdGlvbiBibG9jayB3aXRoIGBgS2V5UHJlZml4RXF1YWxzYGAgc2V0IHRvIGBgZG9jcy9gYCBhbmQgaW4gdGhlIFJlZGlyZWN0IHNldCBgYFJlcGxhY2VLZXlQcmVmaXhXaXRoYGAgdG8gYGAvZG9jdW1lbnRzYGAuIE5vdCByZXF1aXJlZCBpZiBvbmUgb2YgdGhlIHNpYmxpbmdzIGlzIHByZXNlbnQuIENhbiBiZSBwcmVzZW50IG9ubHkgaWYgYGBSZXBsYWNlS2V5V2l0aGBgIGlzIG5vdCBwcm92aWRlZC5cbiAqICAgUmVwbGFjZW1lbnQgbXVzdCBiZSBtYWRlIGZvciBvYmplY3Qga2V5cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyBjYXJyaWFnZSByZXR1cm5zKSB3aGVuIHVzaW5nIFhNTCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbWE1MIHJlbGF0ZWQgb2JqZWN0IGtleSBjb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LWtleXMuaHRtbCNvYmplY3Qta2V5LXhtbC1yZWxhdGVkLWNvbnN0cmFpbnRzKS5cbiAqL1xuUmVwbGFjZUtleVByZWZpeFdpdGg/OiBzdHJpbmdcbi8qKlxuICogVGhlIHNwZWNpZmljIG9iamVjdCBrZXkgdG8gdXNlIGluIHRoZSByZWRpcmVjdCByZXF1ZXN0LiBGb3IgZXhhbXBsZSwgcmVkaXJlY3QgcmVxdWVzdCB0byBgYGVycm9yLmh0bWxgYC4gTm90IHJlcXVpcmVkIGlmIG9uZSBvZiB0aGUgc2libGluZ3MgaXMgcHJlc2VudC4gQ2FuIGJlIHByZXNlbnQgb25seSBpZiBgYFJlcGxhY2VLZXlQcmVmaXhXaXRoYGAgaXMgbm90IHByb3ZpZGVkLlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5SZXBsYWNlS2V5V2l0aD86IHN0cmluZ1xufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3IgZGVzY3JpYmluZyBhIGNvbmRpdGlvbiB0aGF0IG11c3QgYmUgbWV0IGZvciB0aGUgc3BlY2lmaWVkIHJlZGlyZWN0IHRvIGFwcGx5LiBGb3IgZXhhbXBsZSwgMS4gSWYgcmVxdWVzdCBpcyBmb3IgcGFnZXMgaW4gdGhlIGBgL2RvY3NgYCBmb2xkZXIsIHJlZGlyZWN0IHRvIHRoZSBgYC9kb2N1bWVudHNgYCBmb2xkZXIuIDIuIElmIHJlcXVlc3QgcmVzdWx0cyBpbiBIVFRQIGVycm9yIDR4eCwgcmVkaXJlY3QgcmVxdWVzdCB0byBhbm90aGVyIGhvc3Qgd2hlcmUgeW91IG1pZ2h0IHByb2Nlc3MgdGhlIGVycm9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRpbmdSdWxlQ29uZGl0aW9uIHtcbi8qKlxuICogVGhlIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggd2hlbiB0aGUgcmVkaXJlY3QgaXMgYXBwbGllZC4gRm9yIGV4YW1wbGUsIHRvIHJlZGlyZWN0IHJlcXVlc3RzIGZvciBgYEV4YW1wbGVQYWdlLmh0bWxgYCwgdGhlIGtleSBwcmVmaXggd2lsbCBiZSBgYEV4YW1wbGVQYWdlLmh0bWxgYC4gVG8gcmVkaXJlY3QgcmVxdWVzdCBmb3IgYWxsIHBhZ2VzIHdpdGggdGhlIHByZWZpeCBgYGRvY3MvYGAsIHRoZSBrZXkgcHJlZml4IHdpbGwgYmUgYGBkb2NzL2BgLCB3aGljaCBpZGVudGlmaWVzIGFsbCBvYmplY3RzIGluIHRoZSBkb2NzLyBmb2xkZXIuXG4gKiAgUmVxdWlyZWQgd2hlbiB0aGUgcGFyZW50IGVsZW1lbnQgYGBDb25kaXRpb25gYCBpcyBzcGVjaWZpZWQgYW5kIHNpYmxpbmcgYGBIdHRwRXJyb3JDb2RlUmV0dXJuZWRFcXVhbHNgYCBpcyBub3Qgc3BlY2lmaWVkLiBJZiBib3RoIGNvbmRpdGlvbnMgYXJlIHNwZWNpZmllZCwgYm90aCBtdXN0IGJlIHRydWUgZm9yIHRoZSByZWRpcmVjdCB0byBiZSBhcHBsaWVkLlxuICovXG5LZXlQcmVmaXhFcXVhbHM/OiBzdHJpbmdcbi8qKlxuICogVGhlIEhUVFAgZXJyb3IgY29kZSB3aGVuIHRoZSByZWRpcmVjdCBpcyBhcHBsaWVkLiBJbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IsIGlmIHRoZSBlcnJvciBjb2RlIGVxdWFscyB0aGlzIHZhbHVlLCB0aGVuIHRoZSBzcGVjaWZpZWQgcmVkaXJlY3QgaXMgYXBwbGllZC5cbiAqICBSZXF1aXJlZCB3aGVuIHBhcmVudCBlbGVtZW50IGBgQ29uZGl0aW9uYGAgaXMgc3BlY2lmaWVkIGFuZCBzaWJsaW5nIGBgS2V5UHJlZml4RXF1YWxzYGAgaXMgbm90IHNwZWNpZmllZC4gSWYgYm90aCBhcmUgc3BlY2lmaWVkLCB0aGVuIGJvdGggbXVzdCBiZSB0cnVlIGZvciB0aGUgcmVkaXJlY3QgdG8gYmUgYXBwbGllZC5cbiAqL1xuSHR0cEVycm9yQ29kZVJldHVybmVkRXF1YWxzPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSByZWRpcmVjdCBiZWhhdmlvciBmb3IgZXZlcnkgcmVxdWVzdCB0byB0aGlzIGJ1Y2tldCdzIHdlYnNpdGUgZW5kcG9pbnQuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIHlvdSBjYW4ndCBzcGVjaWZ5IGFueSBvdGhlciBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdEFsbFJlcXVlc3RzVG8ge1xuLyoqXG4gKiBOYW1lIG9mIHRoZSBob3N0IHdoZXJlIHJlcXVlc3RzIGFyZSByZWRpcmVjdGVkLlxuICovXG5Ib3N0TmFtZTogc3RyaW5nXG4vKipcbiAqIFByb3RvY29sIHRvIHVzZSB3aGVuIHJlZGlyZWN0aW5nIHJlcXVlc3RzLiBUaGUgZGVmYXVsdCBpcyB0aGUgcHJvdG9jb2wgdGhhdCBpcyB1c2VkIGluIHRoZSBvcmlnaW5hbCByZXF1ZXN0LlxuICovXG5Qcm90b2NvbD86IChcImh0dHBcIiB8IFwiaHR0cHNcIilcbn1cbiJdfQ==
|