@horietakehiro/aws-cdk-utul 0.41.4 → 0.41.6
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-amazonmq-broker.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-amazonmq-broker.js +1 -1
- package/lib/types/cfn-resource-types/aws-billing-billingview.d.ts +62 -0
- package/lib/types/cfn-resource-types/aws-billing-billingview.js +3 -0
- package/lib/types/cfn-resource-types/aws-connect-evaluationform.d.ts +0 -3
- package/lib/types/cfn-resource-types/aws-connect-evaluationform.js +1 -1
- package/lib/types/cfn-resource-types/aws-connect-instance.d.ts +25 -0
- package/lib/types/cfn-resource-types/aws-connect-instance.js +1 -1
- package/lib/types/cfn-resource-types/aws-docdb-dbcluster.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-docdb-dbcluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-dynamodb-table.d.ts +4 -2
- package/lib/types/cfn-resource-types/aws-dynamodb-table.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-customergateway.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-customergateway.js +1 -1
- package/lib/types/cfn-resource-types/aws-ec2-vpnconnection.d.ts +2 -2
- package/lib/types/cfn-resource-types/aws-ec2-vpnconnection.js +1 -1
- package/lib/types/cfn-resource-types/aws-ecs-service.d.ts +29 -0
- package/lib/types/cfn-resource-types/aws-ecs-service.js +1 -1
- package/lib/types/cfn-resource-types/aws-eks-addon.d.ts +20 -20
- package/lib/types/cfn-resource-types/aws-eks-addon.js +1 -1
- package/lib/types/cfn-resource-types/aws-events-eventbus.d.ts +31 -18
- package/lib/types/cfn-resource-types/aws-events-eventbus.js +1 -1
- package/lib/types/cfn-resource-types/aws-guardduty-ipset.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-guardduty-ipset.js +1 -1
- package/lib/types/cfn-resource-types/aws-guardduty-threatintelset.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-guardduty-threatintelset.js +1 -1
- package/lib/types/cfn-resource-types/aws-kinesisfirehose-deliverystream.d.ts +15 -0
- package/lib/types/cfn-resource-types/aws-kinesisfirehose-deliverystream.js +1 -1
- package/lib/types/cfn-resource-types/aws-mediapackagev2-originendpoint.d.ts +132 -45
- package/lib/types/cfn-resource-types/aws-mediapackagev2-originendpoint.js +1 -1
- package/lib/types/cfn-resource-types/aws-networkmanager-vpcattachment.d.ts +58 -58
- package/lib/types/cfn-resource-types/aws-networkmanager-vpcattachment.js +1 -1
- package/lib/types/cfn-resource-types/aws-rds-dbcluster.d.ts +1 -0
- package/lib/types/cfn-resource-types/aws-rds-dbcluster.js +1 -1
- package/lib/types/cfn-resource-types/aws-rds-dbinstance.d.ts +1 -3
- package/lib/types/cfn-resource-types/aws-rds-dbinstance.js +1 -1
- package/lib/types/cfn-resource-types/aws-redshift-clustersubnetgroup.d.ts +1 -1
- package/lib/types/cfn-resource-types/aws-redshift-clustersubnetgroup.js +1 -1
- package/lib/types/cfn-resource-types/aws-s3-bucket.d.ts +107 -15
- package/lib/types/cfn-resource-types/aws-s3-bucket.js +1 -1
- package/lib/types/cfn-resource-types/aws-s3express-directorybucket.d.ts +5 -0
- package/lib/types/cfn-resource-types/aws-s3express-directorybucket.js +1 -1
- package/lib/types/cfn-resource-types/aws-s3tables-tablepolicy.d.ts +32 -0
- package/lib/types/cfn-resource-types/aws-s3tables-tablepolicy.js +3 -0
- package/lib/types/cfn-resource-types/aws-sagemaker-domain.d.ts +6 -2
- package/lib/types/cfn-resource-types/aws-sagemaker-domain.js +1 -1
- package/lib/types/cfn-resource-types/aws-sagemaker-project.d.ts +88 -35
- package/lib/types/cfn-resource-types/aws-sagemaker-project.js +1 -1
- package/lib/types/cfn-resource-types/aws-transfer-connector.d.ts +4 -0
- package/lib/types/cfn-resource-types/aws-transfer-connector.js +1 -1
- package/lib/types/cfn-resource-types/aws-transfer-server.d.ts +2 -0
- package/lib/types/cfn-resource-types/aws-transfer-server.js +1 -1
- package/lib/types/cfn-resource-types/aws-wisdom-quickresponse.d.ts +106 -0
- package/lib/types/cfn-resource-types/aws-wisdom-quickresponse.js +3 -0
- package/lib/types/cfn-resource-types.d.ts +6 -0
- package/lib/types/cfn-resource-types.js +33 -27
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXMzLWJ1Y2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1zMy1idWNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQW1hem9uIFMzIGtleSBmb3JtYXQgZm9yIGxvZyBvYmplY3RzLiBPbmx5IG9uZSBmb3JtYXQsIGVpdGhlciBQYXJ0aXRpb25lZFByZWZpeCBvciBTaW1wbGVQcmVmaXgsIGlzIGFsbG93ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFRhcmdldE9iamVjdEtleUZvcm1hdCA9ICh7XG4vKipcbiAqIFRoaXMgZm9ybWF0IGRlZmF1bHRzIHRoZSBwcmVmaXggdG8gdGhlIGdpdmVuIGxvZyBmaWxlIHByZWZpeCBmb3IgZGVsaXZlcmluZyBzZXJ2ZXIgYWNjZXNzIGxvZyBmaWxlLlxuICovXG5TaW1wbGVQcmVmaXg6IHtcblxufVxufSB8IHtcblBhcnRpdGlvbmVkUHJlZml4OiBQYXJ0aXRpb25lZFByZWZpeFxufSlcblxuLyoqXG4gKiBUaGUgYGBBV1M6OlMzOjpCdWNrZXRgYCByZXNvdXJjZSBjcmVhdGVzIGFuIEFtYXpvbiBTMyBidWNrZXQgaW4gdGhlIHNhbWUgQVdTIFJlZ2lvbiB3aGVyZSB5b3UgY3JlYXRlIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gKiAgVG8gY29udHJvbCBob3cgQVdTIENsb3VkRm9ybWF0aW9uIGhhbmRsZXMgdGhlIGJ1Y2tldCB3aGVuIHRoZSBzdGFjayBpcyBkZWxldGVkLCB5b3UgY2FuIHNldCBhIGRlbGV0aW9uIHBvbGljeSBmb3IgeW91ciBidWNrZXQuIFlvdSBjYW4gY2hvb3NlIHRvICpyZXRhaW4qIHRoZSBidWNrZXQgb3IgdG8gKmRlbGV0ZSogdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRGVsZXRpb25Qb2xpY3kgQXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtYXR0cmlidXRlLWRlbGV0aW9ucG9saWN5Lmh0bWwpLlxuICogICBZb3UgY2FuIG9ubHkgZGVsZXRlIGVtcHR5IGJ1Y2tldHMuIERlbGV0aW9uIGZhaWxzIGZvciBidWNrZXRzIHRoYXQgaGF2ZSBjb250ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX1MzX0JVQ0tFVCB7XG5BY2NlbGVyYXRlQ29uZmlndXJhdGlvbj86IEFjY2VsZXJhdGVDb25maWd1cmF0aW9uXG4vKipcbiAqIFRoaXMgaXMgYSBsZWdhY3kgcHJvcGVydHksIGFuZCBpdCBpcyBub3QgcmVjb21tZW5kZWQgZm9yIG1vc3QgdXNlIGNhc2VzLiBBIG1ham9yaXR5IG9mIG1vZGVybiB1c2UgY2FzZXMgaW4gQW1hem9uIFMzIG5vIGxvbmdlciByZXF1aXJlIHRoZSB1c2Ugb2YgQUNMcywgYW5kIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBrZWVwIEFDTHMgZGlzYWJsZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbnRyb2xsaW5nIG9iamVjdCBvd25lcnNoaXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS8vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9hYm91dC1vYmplY3Qtb3duZXJzaGlwLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICogICBBIGNhbm5lZCBhY2Nlc3MgY29udHJvbCBsaXN0IChBQ0wpIHRoYXQgZ3JhbnRzIHByZWRlZmluZWQgcGVybWlzc2lvbnMgdG8gdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY2FubmVkIEFDTHMsIHNlZSBbQ2FubmVkIEFDTF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYWNsLW92ZXJ2aWV3Lmh0bWwjY2FubmVkLWFjbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKiAgIFMzIGJ1Y2tldHMgYXJlIGNyZWF0ZWQgd2l0aCBBQ0xzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRoZXJlZm9yZSwgdW5sZXNzIHlvdSBleHBsaWNpdGx5IHNldCB0aGUgW0FXUzo6UzM6Ok93bmVyc2hpcENvbnRyb2xzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LW93bmVyc2hpcGNvbnRyb2xzLmh0bWwpIHByb3BlcnR5IHRvIGVuYWJsZSBBQ0xzLCB5b3VyIHJlc291cmNlIHdpbGwgZmFpbCB0byBkZXBsb3kgd2l0aCBhbnkgdmFsdWUgb3RoZXIgdGhhbiBQcml2YXRlLiBVc2UgY2FzZXMgcmVxdWlyaW5nIEFDTHMgYXJlIHVuY29tbW9uLlxuICogICBUaGUgbWFqb3JpdHkgb2YgYWNjZXNzIGNvbnRyb2wgY29uZmlndXJhdGlvbnMgY2FuIGJlIHN1Y2Nlc3NmdWxseSBhbmQgbW9yZSBlYXNpbHkgYWNoaWV2ZWQgd2l0aCBidWNrZXQgcG9saWNpZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FXUzo6UzM6OkJ1Y2tldFBvbGljeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLXBvbGljeS5odG1sKS4gRm9yIGV4YW1wbGVzIG9mIGNvbW1vbiBwb2xpY3kgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBTMyBTZXJ2ZXIgQWNjZXNzIExvZ3MgYnVja2V0cyBhbmQgbW9yZSwgc2VlIFtCdWNrZXQgcG9saWN5IGV4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9leGFtcGxlLWJ1Y2tldC1wb2xpY2llcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuQWNjZXNzQ29udHJvbD86IChcIkF1dGhlbnRpY2F0ZWRSZWFkXCIgfCBcIkF3c0V4ZWNSZWFkXCIgfCBcIkJ1Y2tldE93bmVyRnVsbENvbnRyb2xcIiB8IFwiQnVja2V0T3duZXJSZWFkXCIgfCBcIkxvZ0RlbGl2ZXJ5V3JpdGVcIiB8IFwiUHJpdmF0ZVwiIHwgXCJQdWJsaWNSZWFkXCIgfCBcIlB1YmxpY1JlYWRXcml0ZVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGFueSBhbmFseXNlcyBmb3IgdGhlIGFuYWx5dGljcyBmaWx0ZXIgb2YgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuQW5hbHl0aWNzQ29uZmlndXJhdGlvbnM/OiBBbmFseXRpY3NDb25maWd1cmF0aW9uW11cbkJ1Y2tldEVuY3J5cHRpb24/OiBCdWNrZXRFbmNyeXB0aW9uXG4vKipcbiAqIEEgbmFtZSBmb3IgdGhlIGJ1Y2tldC4gSWYgeW91IGRvbid0IHNwZWNpZnkgYSBuYW1lLCBBV1MgQ2xvdWRGb3JtYXRpb24gZ2VuZXJhdGVzIGEgdW5pcXVlIElEIGFuZCB1c2VzIHRoYXQgSUQgZm9yIHRoZSBidWNrZXQgbmFtZS4gVGhlIGJ1Y2tldCBuYW1lIG11c3QgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBwZXJpb2RzICguKSwgYW5kIGRhc2hlcyAoLSkgYW5kIG11c3QgZm9sbG93IFtBbWF6b24gUzMgYnVja2V0IHJlc3RyaWN0aW9ucyBhbmQgbGltaXRhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L0J1Y2tldFJlc3RyaWN0aW9ucy5odG1sKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUnVsZXMgZm9yIG5hbWluZyBBbWF6b24gUzMgYnVja2V0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvYnVja2V0bmFtaW5ncnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouIFxuICogICBJZiB5b3Ugc3BlY2lmeSBhIG5hbWUsIHlvdSBjYW4ndCBwZXJmb3JtIHVwZGF0ZXMgdGhhdCByZXF1aXJlIHJlcGxhY2VtZW50IG9mIHRoaXMgcmVzb3VyY2UuIFlvdSBjYW4gcGVyZm9ybSB1cGRhdGVzIHRoYXQgcmVxdWlyZSBubyBvciBzb21lIGludGVycnVwdGlvbi4gSWYgeW91IG5lZWQgdG8gcmVwbGFjZSB0aGUgcmVzb3VyY2UsIHNwZWNpZnkgYSBuZXcgbmFtZS5cbiAqL1xuQnVja2V0TmFtZT86IHN0cmluZ1xuQ29yc0NvbmZpZ3VyYXRpb24/OiBDb3JzQ29uZmlndXJhdGlvblxuLyoqXG4gKiBEZWZpbmVzIGhvdyBBbWF6b24gUzMgaGFuZGxlcyBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UuXG4gKi9cbkludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25zPzogSW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbltdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgaW52ZW50b3J5IGNvbmZpZ3VyYXRpb24gZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dFVCBCdWNrZXQgaW52ZW50b3J5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0R0VUSW52ZW50b3J5Q29uZmlnLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5JbnZlbnRvcnlDb25maWd1cmF0aW9ucz86IEludmVudG9yeUNvbmZpZ3VyYXRpb25bXVxuTGlmZWN5Y2xlQ29uZmlndXJhdGlvbj86IExpZmVjeWNsZUNvbmZpZ3VyYXRpb25cbkxvZ2dpbmdDb25maWd1cmF0aW9uPzogTG9nZ2luZ0NvbmZpZ3VyYXRpb25cbi8qKlxuICogU3BlY2lmaWVzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZvciB0aGUgQ2xvdWRXYXRjaCByZXF1ZXN0IG1ldHJpY3MgKHNwZWNpZmllZCBieSB0aGUgbWV0cmljcyBjb25maWd1cmF0aW9uIElEKSBmcm9tIGFuIEFtYXpvbiBTMyBidWNrZXQuIElmIHlvdSdyZSB1cGRhdGluZyBhbiBleGlzdGluZyBtZXRyaWNzIGNvbmZpZ3VyYXRpb24sIG5vdGUgdGhhdCB0aGlzIGlzIGEgZnVsbCByZXBsYWNlbWVudCBvZiB0aGUgZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLiBJZiB5b3UgZG9uJ3QgaW5jbHVkZSB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8ga2VlcCwgdGhleSBhcmUgZXJhc2VkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVE1ldHJpY0NvbmZpZ3VyYXRpb24uaHRtbCkuXG4gKi9cbk1ldHJpY3NDb25maWd1cmF0aW9ucz86IE1ldHJpY3NDb25maWd1cmF0aW9uW11cbk1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uPzogTWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb25cbk5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb24/OiBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uXG5PYmplY3RMb2NrQ29uZmlndXJhdGlvbj86IE9iamVjdExvY2tDb25maWd1cmF0aW9uXG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgYnVja2V0IGhhcyBhbiBPYmplY3QgTG9jayBjb25maWd1cmF0aW9uIGVuYWJsZWQuIEVuYWJsZSBgYE9iamVjdExvY2tFbmFibGVkYGAgd2hlbiB5b3UgYXBwbHkgYGBPYmplY3RMb2NrQ29uZmlndXJhdGlvbmBgIHRvIGEgYnVja2V0LlxuICovXG5PYmplY3RMb2NrRW5hYmxlZD86IGJvb2xlYW5cbk93bmVyc2hpcENvbnRyb2xzPzogT3duZXJzaGlwQ29udHJvbHNcblB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbj86IFB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvblxuUmVwbGljYXRpb25Db25maWd1cmF0aW9uPzogUmVwbGljYXRpb25Db25maWd1cmF0aW9uXG4vKipcbiAqIEFuIGFyYml0cmFyeSBzZXQgb2YgdGFncyAoa2V5LXZhbHVlIHBhaXJzKSBmb3IgdGhpcyBTMyBidWNrZXQuXG4gKi9cblRhZ3M/OiBUYWdbXVxuVmVyc2lvbmluZ0NvbmZpZ3VyYXRpb24/OiBWZXJzaW9uaW5nQ29uZmlndXJhdGlvblxuV2Vic2l0ZUNvbmZpZ3VyYXRpb24/OiBXZWJzaXRlQ29uZmlndXJhdGlvblxuQXJuPzogc3RyaW5nXG5Eb21haW5OYW1lPzogc3RyaW5nXG5EdWFsU3RhY2tEb21haW5OYW1lPzogc3RyaW5nXG5SZWdpb25hbERvbWFpbk5hbWU/OiBzdHJpbmdcbldlYnNpdGVVUkw/OiBzdHJpbmdcbn1cbi8qKlxuICogQ29uZmlndXJlcyB0aGUgdHJhbnNmZXIgYWNjZWxlcmF0aW9uIHN0YXRlIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gUzMgVHJhbnNmZXIgQWNjZWxlcmF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi90cmFuc2Zlci1hY2NlbGVyYXRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWNjZWxlcmF0ZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHRyYW5zZmVyIGFjY2VsZXJhdGlvbiBzdGF0dXMgb2YgdGhlIGJ1Y2tldC5cbiAqL1xuQWNjZWxlcmF0aW9uU3RhdHVzOiAoXCJFbmFibGVkXCIgfCBcIlN1c3BlbmRlZFwiKVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGFueSBhbmFseXNlcyBmb3IgdGhlIGFuYWx5dGljcyBmaWx0ZXIgb2YgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbmFseXRpY3NDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIHRhZ3MgdG8gdXNlIHdoZW4gZXZhbHVhdGluZyBhbiBhbmFseXRpY3MgZmlsdGVyLlxuICogIFRoZSBhbmFseXRpY3Mgb25seSBpbmNsdWRlcyBvYmplY3RzIHRoYXQgbWVldCB0aGUgZmlsdGVyJ3MgY3JpdGVyaWEuIElmIG5vIGZpbHRlciBpcyBzcGVjaWZpZWQsIGFsbCBvZiB0aGUgY29udGVudHMgb2YgdGhlIGJ1Y2tldCBhcmUgaW5jbHVkZWQgaW4gdGhlIGFuYWx5c2lzLlxuICovXG5UYWdGaWx0ZXJzPzogVGFnRmlsdGVyW11cblN0b3JhZ2VDbGFzc0FuYWx5c2lzOiBTdG9yYWdlQ2xhc3NBbmFseXNpc1xuLyoqXG4gKiBUaGUgSUQgdGhhdCBpZGVudGlmaWVzIHRoZSBhbmFseXRpY3MgY29uZmlndXJhdGlvbi5cbiAqL1xuSWQ6IHN0cmluZ1xuLyoqXG4gKiBUaGUgcHJlZml4IHRoYXQgYW4gb2JqZWN0IG11c3QgaGF2ZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYW5hbHl0aWNzIHJlc3VsdHMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGFncyB0byB1c2UgdG8gaWRlbnRpZnkgYSBzdWJzZXQgb2Ygb2JqZWN0cyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ2F0ZWdvcml6aW5nIHlvdXIgc3RvcmFnZSB1c2luZyB0YWdzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3QtdGFnZ2luZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTaW1wbGUgU3RvcmFnZSBTZXJ2aWNlIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0ZpbHRlciB7XG4vKipcbiAqIFRoZSB0YWcgdmFsdWUuXG4gKi9cblZhbHVlOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhZyBrZXkuXG4gKi9cbktleTogc3RyaW5nXG59XG4vKipcbiAqIENvbnRhaW5zIGRhdGEgcmVsYXRlZCB0byBhY2Nlc3MgcGF0dGVybnMgdG8gYmUgY29sbGVjdGVkIGFuZCBtYWRlIGF2YWlsYWJsZSB0byBhbmFseXplIHRoZSB0cmFkZW9mZnMgYmV0d2VlbiBkaWZmZXJlbnQgc3RvcmFnZSBjbGFzc2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VDbGFzc0FuYWx5c2lzIHtcbkRhdGFFeHBvcnQ/OiBEYXRhRXhwb3J0XG59XG4vKipcbiAqIFNwZWNpZmllcyBob3cgZGF0YSByZWxhdGVkIHRvIHRoZSBzdG9yYWdlIGNsYXNzIGFuYWx5c2lzIGZvciBhbiBBbWF6b24gUzMgYnVja2V0IHNob3VsZCBiZSBleHBvcnRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhRXhwb3J0IHtcbkRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgb3V0cHV0IHNjaGVtYSB0byB1c2Ugd2hlbiBleHBvcnRpbmcgZGF0YS4gTXVzdCBiZSBgYFZfMWBgLlxuICovXG5PdXRwdXRTY2hlbWFWZXJzaW9uOiBcIlZfMVwiXG59XG4vKipcbiAqIFRoZSBwbGFjZSB0byBzdG9yZSB0aGUgZGF0YSBmb3IgYW4gYW5hbHlzaXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdGluYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGJ1Y2tldCB0byB3aGljaCBkYXRhIGlzIGV4cG9ydGVkLlxuICovXG5CdWNrZXRBcm46IHN0cmluZ1xuLyoqXG4gKiBUaGUgYWNjb3VudCBJRCB0aGF0IG93bnMgdGhlIGRlc3RpbmF0aW9uIFMzIGJ1Y2tldC4gSWYgbm8gYWNjb3VudCBJRCBpcyBwcm92aWRlZCwgdGhlIG93bmVyIGlzIG5vdCB2YWxpZGF0ZWQgYmVmb3JlIGV4cG9ydGluZyBkYXRhLlxuICogICAgQWx0aG91Z2ggdGhpcyB2YWx1ZSBpcyBvcHRpb25hbCwgd2Ugc3Ryb25nbHkgcmVjb21tZW5kIHRoYXQgeW91IHNldCBpdCB0byBoZWxwIHByZXZlbnQgcHJvYmxlbXMgaWYgdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldCBvd25lcnNoaXAgY2hhbmdlcy5cbiAqL1xuQnVja2V0QWNjb3VudElkPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZmlsZSBmb3JtYXQgdXNlZCB3aGVuIGV4cG9ydGluZyBkYXRhIHRvIEFtYXpvbiBTMy5cbiAqICAgKkFsbG93ZWQgdmFsdWVzKjogYGBDU1ZgYCB8IGBgT1JDYGAgfCBgYFBhcnF1ZXRgYFxuICovXG5Gb3JtYXQ6IChcIkNTVlwiIHwgXCJPUkNcIiB8IFwiUGFycXVldFwiKVxuLyoqXG4gKiBUaGUgcHJlZml4IHRvIHVzZSB3aGVuIGV4cG9ydGluZyBkYXRhLiBUaGUgcHJlZml4IGlzIHByZXBlbmRlZCB0byBhbGwgcmVzdWx0cy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyBkZWZhdWx0IGVuY3J5cHRpb24gZm9yIGEgYnVja2V0IHVzaW5nIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBBbWF6b24gUzMtbWFuYWdlZCBrZXlzIChTU0UtUzMpLCBBV1MgS01TLW1hbmFnZWQga2V5cyAoU1NFLUtNUyksIG9yIGR1YWwtbGF5ZXIgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB3aXRoIEtNUy1tYW5hZ2VkIGtleXMgKERTU0UtS01TKS4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBBbWF6b24gUzMgZGVmYXVsdCBlbmNyeXB0aW9uIGZlYXR1cmUsIHNlZSBbQW1hem9uIFMzIERlZmF1bHQgRW5jcnlwdGlvbiBmb3IgUzMgQnVja2V0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYnVja2V0LWVuY3J5cHRpb24uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVja2V0RW5jcnlwdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBzZXJ2ZXItc2lkZS1lbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cblNlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogU2VydmVyU2lkZUVuY3J5cHRpb25SdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbi5cbiAqICAgICsgICAqR2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMqIC0gSWYgeW91J3JlIHNwZWNpZnlpbmcgYSBjdXN0b21lciBtYW5hZ2VkIEtNUyBrZXksIHdlIHJlY29tbWVuZCB1c2luZyBhIGZ1bGx5IHF1YWxpZmllZCBLTVMga2V5IEFSTi4gSWYgeW91IHVzZSBhIEtNUyBrZXkgYWxpYXMgaW5zdGVhZCwgdGhlbiBLTVMgcmVzb2x2ZXMgdGhlIGtleSB3aXRoaW4gdGhlIHJlcXVlc3RlcuKAmXMgYWNjb3VudC4gVGhpcyBiZWhhdmlvciBjYW4gcmVzdWx0IGluIGRhdGEgdGhhdCdzIGVuY3J5cHRlZCB3aXRoIGEgS01TIGtleSB0aGF0IGJlbG9uZ3MgdG8gdGhlIHJlcXVlc3RlciwgYW5kIG5vdCB0aGUgYnVja2V0IG93bmVyLlxuICogICArICAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFdoZW4geW91IHNwZWNpZnkgYW4gW2N1c3RvbWVyIG1hbmFnZWQga2V5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9jb25jZXB0cy5odG1sI2N1c3RvbWVyLWNtaykgZm9yIGVuY3J5cHRpb24gaW4geW91ciBkaXJlY3RvcnkgYnVja2V0LCBvbmx5IHVzZSB0aGUga2V5IElEIG9yIGtleSBBUk4uIFRoZSBrZXkgYWxpYXMgZm9ybWF0IG9mIHRoZSBLTVMga2V5IGlzbid0IHN1cHBvcnRlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJTaWRlRW5jcnlwdGlvblJ1bGUge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIHVzZSBhbiBTMyBCdWNrZXQgS2V5IHdpdGggc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB1c2luZyBLTVMgKFNTRS1LTVMpIGZvciBuZXcgb2JqZWN0cyBpbiB0aGUgYnVja2V0LiBFeGlzdGluZyBvYmplY3RzIGFyZSBub3QgYWZmZWN0ZWQuIFNldHRpbmcgdGhlIGBgQnVja2V0S2V5RW5hYmxlZGBgIGVsZW1lbnQgdG8gYGB0cnVlYGAgY2F1c2VzIEFtYXpvbiBTMyB0byB1c2UgYW4gUzMgQnVja2V0IEtleS4gQnkgZGVmYXVsdCwgUzMgQnVja2V0IEtleSBpcyBub3QgZW5hYmxlZC5cbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBbWF6b24gUzMgQnVja2V0IEtleXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2J1Y2tldC1rZXkuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbkJ1Y2tldEtleUVuYWJsZWQ/OiBib29sZWFuXG5TZXJ2ZXJTaWRlRW5jcnlwdGlvbkJ5RGVmYXVsdD86IFNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0XG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHRvIGFwcGx5IHRvIG5ldyBvYmplY3RzIGluIHRoZSBidWNrZXQuIElmIGEgUFVUIE9iamVjdCByZXF1ZXN0IGRvZXNuJ3Qgc3BlY2lmeSBhbnkgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiwgdGhpcyBkZWZhdWx0IGVuY3J5cHRpb24gd2lsbCBiZSBhcHBsaWVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0IHtcbi8qKlxuICogQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UgKEtNUykgY3VzdG9tZXIgbWFuYWdlZCBrZXkgSUQgdG8gdXNlIGZvciB0aGUgZGVmYXVsdCBlbmNyeXB0aW9uLiBcbiAqICAgICsgICAqR2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMqIC0gVGhpcyBwYXJhbWV0ZXIgaXMgYWxsb3dlZCBpZiBhbmQgb25seSBpZiBgYFNTRUFsZ29yaXRobWBgIGlzIHNldCB0byBgYGF3czprbXNgYCBvciBgYGF3czprbXM6ZHNzZWBgLlxuICogICArICAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFRoaXMgcGFyYW1ldGVyIGlzIGFsbG93ZWQgaWYgYW5kIG9ubHkgaWYgYGBTU0VBbGdvcml0aG1gYCBpcyBzZXQgdG8gYGBhd3M6a21zYGAuXG4gKiAgIFxuICogICBZb3UgY2FuIHNwZWNpZnkgdGhlIGtleSBJRCwga2V5IGFsaWFzLCBvciB0aGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEtNUyBrZXkuXG4gKiAgICsgIEtleSBJRDogYGAxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwYWJgYCBcbiAqICAgKyAgS2V5IEFSTjogYGBhcm46YXdzOmttczp1cy1lYXN0LTI6MTExMTIyMjIzMzMzOmtleS8xMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwYWJgYCBcbiAqICAgKyAgS2V5IEFsaWFzOiBgYGFsaWFzL2FsaWFzLW5hbWVgYCBcbiAqICAgXG4gKiAgSWYgeW91IGFyZSB1c2luZyBlbmNyeXB0aW9uIHdpdGggY3Jvc3MtYWNjb3VudCBvciBBV1Mgc2VydmljZSBvcGVyYXRpb25zLCB5b3UgbXVzdCB1c2UgYSBmdWxseSBxdWFsaWZpZWQgS01TIGtleSBBUk4uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzaW5nIGVuY3J5cHRpb24gZm9yIGNyb3NzLWFjY291bnQgb3BlcmF0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYnVja2V0LWVuY3J5cHRpb24uaHRtbCNidWNrZXQtZW5jcnlwdGlvbi11cGRhdGUtYnVja2V0LXBvbGljeSkuXG4gKiAgICArICAgKkdlbmVyYWwgcHVycG9zZSBidWNrZXRzKiAtIElmIHlvdSdyZSBzcGVjaWZ5aW5nIGEgY3VzdG9tZXIgbWFuYWdlZCBLTVMga2V5LCB3ZSByZWNvbW1lbmQgdXNpbmcgYSBmdWxseSBxdWFsaWZpZWQgS01TIGtleSBBUk4uIElmIHlvdSB1c2UgYSBLTVMga2V5IGFsaWFzIGluc3RlYWQsIHRoZW4gS01TIHJlc29sdmVzIHRoZSBrZXkgd2l0aGluIHRoZSByZXF1ZXN0ZXLigJlzIGFjY291bnQuIFRoaXMgYmVoYXZpb3IgY2FuIHJlc3VsdCBpbiBkYXRhIHRoYXQncyBlbmNyeXB0ZWQgd2l0aCBhIEtNUyBrZXkgdGhhdCBiZWxvbmdzIHRvIHRoZSByZXF1ZXN0ZXIsIGFuZCBub3QgdGhlIGJ1Y2tldCBvd25lci4gQWxzbywgaWYgeW91IHVzZSBhIGtleSBJRCwgeW91IGNhbiBydW4gaW50byBhIExvZ0Rlc3RpbmF0aW9uIHVuZGVsaXZlcmFibGUgZXJyb3Igd2hlbiBjcmVhdGluZyBhIFZQQyBmbG93IGxvZy4gXG4gKiAgICsgICAqRGlyZWN0b3J5IGJ1Y2tldHMqIC0gV2hlbiB5b3Ugc3BlY2lmeSBhbiBbY3VzdG9tZXIgbWFuYWdlZCBrZXldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2NvbmNlcHRzLmh0bWwjY3VzdG9tZXItY21rKSBmb3IgZW5jcnlwdGlvbiBpbiB5b3VyIGRpcmVjdG9yeSBidWNrZXQsIG9ubHkgdXNlIHRoZSBrZXkgSUQgb3Iga2V5IEFSTi4gVGhlIGtleSBhbGlhcyBmb3JtYXQgb2YgdGhlIEtNUyBrZXkgaXNuJ3Qgc3VwcG9ydGVkLlxuICogICBcbiAqICAgIEFtYXpvbiBTMyBvbmx5IHN1cHBvcnRzIHN5bW1ldHJpYyBlbmNyeXB0aW9uIEtNUyBrZXlzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtBc3ltbWV0cmljIGtleXMgaW4gS01TXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vL2ttcy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvc3ltbWV0cmljLWFzeW1tZXRyaWMuaHRtbCkgaW4gdGhlICpLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIERldmVsb3BlciBHdWlkZSouXG4gKi9cbktNU01hc3RlcktleUlEPzogc3RyaW5nXG4vKipcbiAqIFNlcnZlci1zaWRlIGVuY3J5cHRpb24gYWxnb3JpdGhtIHRvIHVzZSBmb3IgdGhlIGRlZmF1bHQgZW5jcnlwdGlvbi5cbiAqICAgRm9yIGRpcmVjdG9yeSBidWNrZXRzLCB0aGVyZSBhcmUgb25seSB0d28gc3VwcG9ydGVkIHZhbHVlcyBmb3Igc2VydmVyLXNpZGUgZW5jcnlwdGlvbjogYGBBRVMyNTZgYCBhbmQgYGBhd3M6a21zYGAuXG4gKi9cblNTRUFsZ29yaXRobTogKFwiYXdzOmttc1wiIHwgXCJBRVMyNTZcIiB8IFwiYXdzOmttczpkc3NlXCIpXG59XG4vKipcbiAqIERlc2NyaWJlcyB0aGUgY3Jvc3Mtb3JpZ2luIGFjY2VzcyBjb25maWd1cmF0aW9uIGZvciBvYmplY3RzIGluIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0VuYWJsaW5nIENyb3NzLU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9jb3JzLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcnNDb25maWd1cmF0aW9uIHtcbi8qKlxuICogQSBzZXQgb2Ygb3JpZ2lucyBhbmQgbWV0aG9kcyAoY3Jvc3Mtb3JpZ2luIGFjY2VzcyB0aGF0IHlvdSB3YW50IHRvIGFsbG93KS4gWW91IGNhbiBhZGQgdXAgdG8gMTAwIHJ1bGVzIHRvIHRoZSBjb25maWd1cmF0aW9uLlxuICovXG5Db3JzUnVsZXM6IENvcnNSdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgY3Jvc3Mtb3JpZ2luIGFjY2VzcyBydWxlIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcnNSdWxlIHtcbi8qKlxuICogSGVhZGVycyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGBgQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzYGAgaGVhZGVyLiBUaGVzZSBoZWFkZXJzIGFyZSBhbGxvd2VkIGluIGEgcHJlZmxpZ2h0IE9QVElPTlMgcmVxdWVzdC4gSW4gcmVzcG9uc2UgdG8gYW55IHByZWZsaWdodCBPUFRJT05TIHJlcXVlc3QsIEFtYXpvbiBTMyByZXR1cm5zIGFueSByZXF1ZXN0ZWQgaGVhZGVycyB0aGF0IGFyZSBhbGxvd2VkLlxuICovXG5BbGxvd2VkSGVhZGVycz86IHN0cmluZ1tdXG4vKipcbiAqIEFuIEhUVFAgbWV0aG9kIHRoYXQgeW91IGFsbG93IHRoZSBvcmlnaW4gdG8gcnVuLlxuICogICAqQWxsb3dlZCB2YWx1ZXMqOiBgYEdFVGBgIHwgYGBQVVRgYCB8IGBgSEVBRGBgIHwgYGBQT1NUYGAgfCBgYERFTEVURWBgXG4gKi9cbkFsbG93ZWRNZXRob2RzOiAoXCJHRVRcIiB8IFwiUFVUXCIgfCBcIkhFQURcIiB8IFwiUE9TVFwiIHwgXCJERUxFVEVcIilbXVxuLyoqXG4gKiBPbmUgb3IgbW9yZSBvcmlnaW5zIHlvdSB3YW50IGN1c3RvbWVycyB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgYnVja2V0IGZyb20uXG4gKi9cbkFsbG93ZWRPcmlnaW5zOiBzdHJpbmdbXVxuLyoqXG4gKiBPbmUgb3IgbW9yZSBoZWFkZXJzIGluIHRoZSByZXNwb25zZSB0aGF0IHlvdSB3YW50IGN1c3RvbWVycyB0byBiZSBhYmxlIHRvIGFjY2VzcyBmcm9tIHRoZWlyIGFwcGxpY2F0aW9ucyAoZm9yIGV4YW1wbGUsIGZyb20gYSBKYXZhU2NyaXB0IGBgWE1MSHR0cFJlcXVlc3RgYCBvYmplY3QpLlxuICovXG5FeHBvc2VkSGVhZGVycz86IHN0cmluZ1tdXG4vKipcbiAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgcnVsZS4gVGhlIHZhbHVlIG11c3QgYmUgbm8gbW9yZSB0aGFuIDI1NSBjaGFyYWN0ZXJzLlxuICovXG5JZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGltZSBpbiBzZWNvbmRzIHRoYXQgeW91ciBicm93c2VyIGlzIHRvIGNhY2hlIHRoZSBwcmVmbGlnaHQgcmVzcG9uc2UgZm9yIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UuXG4gKi9cbk1heEFnZT86IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgY29uZmlndXJhdGlvbiBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcywgc2VlIFtTdG9yYWdlIGNsYXNzIGZvciBhdXRvbWF0aWNhbGx5IG9wdGltaXppbmcgZnJlcXVlbnRseSBhbmQgaW5mcmVxdWVudGx5IGFjY2Vzc2VkIG9iamVjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3N0b3JhZ2UtY2xhc3MtaW50cm8uaHRtbCNzYy1keW5hbWljLWRhdGEtYWNjZXNzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgY29uZmlndXJhdGlvbi5cbiAqL1xuSWQ6IHN0cmluZ1xuLyoqXG4gKiBBbiBvYmplY3Qga2V5IG5hbWUgcHJlZml4IHRoYXQgaWRlbnRpZmllcyB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJ1bGUgYXBwbGllcy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgc3RhdHVzIG9mIHRoZSBjb25maWd1cmF0aW9uLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbi8qKlxuICogQSBjb250YWluZXIgZm9yIGEga2V5LXZhbHVlIHBhaXIuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBsaXN0IG9mIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcyB0aWVycyBpbiB0aGUgY29uZmlndXJhdGlvbi4gQXQgbGVhc3Qgb25lIHRpZXIgbXVzdCBiZSBkZWZpbmVkIGluIHRoZSBsaXN0LiBBdCBtb3N0LCB5b3UgY2FuIHNwZWNpZnkgdHdvIHRpZXJzIGluIHRoZSBsaXN0LCBvbmUgZm9yIGVhY2ggYXZhaWxhYmxlIEFjY2Vzc1RpZXI6IGBgQVJDSElWRV9BQ0NFU1NgYCBhbmQgYGBERUVQX0FSQ0hJVkVfQUNDRVNTYGAuXG4gKiAgIFlvdSBvbmx5IG5lZWQgSW50ZWxsaWdlbnQgVGllcmluZyBDb25maWd1cmF0aW9uIGVuYWJsZWQgb24gYSBidWNrZXQgaWYgeW91IHdhbnQgdG8gYXV0b21hdGljYWxseSBtb3ZlIG9iamVjdHMgc3RvcmVkIGluIHRoZSBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UgY2xhc3MgdG8gQXJjaGl2ZSBBY2Nlc3Mgb3IgRGVlcCBBcmNoaXZlIEFjY2VzcyB0aWVycy5cbiAqL1xuVGllcmluZ3M6IFRpZXJpbmdbXVxufVxuLyoqXG4gKiBUaGUgUzMgSW50ZWxsaWdlbnQtVGllcmluZyBzdG9yYWdlIGNsYXNzIGlzIGRlc2lnbmVkIHRvIG9wdGltaXplIHN0b3JhZ2UgY29zdHMgYnkgYXV0b21hdGljYWxseSBtb3ZpbmcgZGF0YSB0byB0aGUgbW9zdCBjb3N0LWVmZmVjdGl2ZSBzdG9yYWdlIGFjY2VzcyB0aWVyLCB3aXRob3V0IGFkZGl0aW9uYWwgb3BlcmF0aW9uYWwgb3ZlcmhlYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGllcmluZyB7XG4vKipcbiAqIFMzIEludGVsbGlnZW50LVRpZXJpbmcgYWNjZXNzIHRpZXIuIFNlZSBbU3RvcmFnZSBjbGFzcyBmb3IgYXV0b21hdGljYWxseSBvcHRpbWl6aW5nIGZyZXF1ZW50bHkgYW5kIGluZnJlcXVlbnRseSBhY2Nlc3NlZCBvYmplY3RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9zdG9yYWdlLWNsYXNzLWludHJvLmh0bWwjc2MtZHluYW1pYy1kYXRhLWFjY2VzcykgZm9yIGEgbGlzdCBvZiBhY2Nlc3MgdGllcnMgaW4gdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcy5cbiAqL1xuQWNjZXNzVGllcjogKFwiQVJDSElWRV9BQ0NFU1NcIiB8IFwiREVFUF9BUkNISVZFX0FDQ0VTU1wiKVxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGRheXMgb2Ygbm8gYWNjZXNzIGFmdGVyIHdoaWNoIGFuIG9iamVjdCB3aWxsIGJlIGVsaWdpYmxlIHRvIGJlIHRyYW5zaXRpb25lZCB0byB0aGUgY29ycmVzcG9uZGluZyB0aWVyLiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGF5cyBzcGVjaWZpZWQgZm9yIEFyY2hpdmUgQWNjZXNzIHRpZXIgbXVzdCBiZSBhdCBsZWFzdCA5MCBkYXlzIGFuZCBEZWVwIEFyY2hpdmUgQWNjZXNzIHRpZXIgbXVzdCBiZSBhdCBsZWFzdCAxODAgZGF5cy4gVGhlIG1heGltdW0gY2FuIGJlIHVwIHRvIDIgeWVhcnMgKDczMCBkYXlzKS5cbiAqL1xuRGF5czogbnVtYmVyXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgaW52ZW50b3J5IGNvbmZpZ3VyYXRpb24gZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dFVCBCdWNrZXQgaW52ZW50b3J5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0R0VUSW52ZW50b3J5Q29uZmlnLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludmVudG9yeUNvbmZpZ3VyYXRpb24ge1xuRGVzdGluYXRpb246IERlc3RpbmF0aW9uMVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgaW52ZW50b3J5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIElmIHNldCB0byBgYFRydWVgYCwgYW4gaW52ZW50b3J5IGxpc3QgaXMgZ2VuZXJhdGVkLiBJZiBzZXQgdG8gYGBGYWxzZWBgLCBubyBpbnZlbnRvcnkgbGlzdCBpcyBnZW5lcmF0ZWQuXG4gKi9cbkVuYWJsZWQ6IGJvb2xlYW5cbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGludmVudG9yeSBjb25maWd1cmF0aW9uLlxuICovXG5JZDogc3RyaW5nXG4vKipcbiAqIE9iamVjdCB2ZXJzaW9ucyB0byBpbmNsdWRlIGluIHRoZSBpbnZlbnRvcnkgbGlzdC4gSWYgc2V0IHRvIGBgQWxsYGAsIHRoZSBsaXN0IGluY2x1ZGVzIGFsbCB0aGUgb2JqZWN0IHZlcnNpb25zLCB3aGljaCBhZGRzIHRoZSB2ZXJzaW9uLXJlbGF0ZWQgZmllbGRzIGBgVmVyc2lvbklkYGAsIGBgSXNMYXRlc3RgYCwgYW5kIGBgRGVsZXRlTWFya2VyYGAgdG8gdGhlIGxpc3QuIElmIHNldCB0byBgYEN1cnJlbnRgYCwgdGhlIGxpc3QgZG9lcyBub3QgY29udGFpbiB0aGVzZSB2ZXJzaW9uLXJlbGF0ZWQgZmllbGRzLlxuICovXG5JbmNsdWRlZE9iamVjdFZlcnNpb25zOiAoXCJBbGxcIiB8IFwiQ3VycmVudFwiKVxuLyoqXG4gKiBDb250YWlucyB0aGUgb3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBpbnZlbnRvcnkgcmVzdWx0cy5cbiAqL1xuT3B0aW9uYWxGaWVsZHM/OiAoXCJTaXplXCIgfCBcIkxhc3RNb2RpZmllZERhdGVcIiB8IFwiU3RvcmFnZUNsYXNzXCIgfCBcIkVUYWdcIiB8IFwiSXNNdWx0aXBhcnRVcGxvYWRlZFwiIHwgXCJSZXBsaWNhdGlvblN0YXR1c1wiIHwgXCJFbmNyeXB0aW9uU3RhdHVzXCIgfCBcIk9iamVjdExvY2tSZXRhaW5VbnRpbERhdGVcIiB8IFwiT2JqZWN0TG9ja01vZGVcIiB8IFwiT2JqZWN0TG9ja0xlZ2FsSG9sZFN0YXR1c1wiIHwgXCJJbnRlbGxpZ2VudFRpZXJpbmdBY2Nlc3NUaWVyXCIgfCBcIkJ1Y2tldEtleVN0YXR1c1wiIHwgXCJDaGVja3N1bUFsZ29yaXRobVwiIHwgXCJPYmplY3RBY2Nlc3NDb250cm9sTGlzdFwiIHwgXCJPYmplY3RPd25lclwiKVtdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgaW52ZW50b3J5IGZpbHRlciBwcmVmaXguXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHNjaGVkdWxlIGZvciBnZW5lcmF0aW5nIGludmVudG9yeSByZXN1bHRzLlxuICovXG5TY2hlZHVsZUZyZXF1ZW5jeTogKFwiRGFpbHlcIiB8IFwiV2Vla2x5XCIpXG59XG4vKipcbiAqIENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRvIHB1Ymxpc2ggdGhlIGludmVudG9yeSByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3RpbmF0aW9uMSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYnVja2V0IHRvIHdoaWNoIGRhdGEgaXMgZXhwb3J0ZWQuXG4gKi9cbkJ1Y2tldEFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBhY2NvdW50IElEIHRoYXQgb3ducyB0aGUgZGVzdGluYXRpb24gUzMgYnVja2V0LiBJZiBubyBhY2NvdW50IElEIGlzIHByb3ZpZGVkLCB0aGUgb3duZXIgaXMgbm90IHZhbGlkYXRlZCBiZWZvcmUgZXhwb3J0aW5nIGRhdGEuXG4gKiAgICBBbHRob3VnaCB0aGlzIHZhbHVlIGlzIG9wdGlvbmFsLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3Ugc2V0IGl0IHRvIGhlbHAgcHJldmVudCBwcm9ibGVtcyBpZiB0aGUgZGVzdGluYXRpb24gYnVja2V0IG93bmVyc2hpcCBjaGFuZ2VzLlxuICovXG5CdWNrZXRBY2NvdW50SWQ/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBmaWxlIGZvcm1hdCB1c2VkIHdoZW4gZXhwb3J0aW5nIGRhdGEgdG8gQW1hem9uIFMzLlxuICogICAqQWxsb3dlZCB2YWx1ZXMqOiBgYENTVmBgIHwgYGBPUkNgYCB8IGBgUGFycXVldGBgXG4gKi9cbkZvcm1hdDogKFwiQ1NWXCIgfCBcIk9SQ1wiIHwgXCJQYXJxdWV0XCIpXG4vKipcbiAqIFRoZSBwcmVmaXggdG8gdXNlIHdoZW4gZXhwb3J0aW5nIGRhdGEuIFRoZSBwcmVmaXggaXMgcHJlcGVuZGVkIHRvIGFsbCByZXN1bHRzLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBsaWZlY3ljbGUgY29uZmlndXJhdGlvbiBmb3Igb2JqZWN0cyBpbiBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtPYmplY3QgTGlmZWN5Y2xlIE1hbmFnZW1lbnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L29iamVjdC1saWZlY3ljbGUtbWdtdC5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogQSBsaWZlY3ljbGUgcnVsZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzIGluIGFuIEFtYXpvbiBTMyBidWNrZXQuXG4gKi9cblJ1bGVzOiBSdWxlW11cbi8qKlxuICogSW5kaWNhdGVzIHdoaWNoIGRlZmF1bHQgbWluaW11bSBvYmplY3Qgc2l6ZSBiZWhhdmlvciBpcyBhcHBsaWVkIHRvIHRoZSBsaWZlY3ljbGUgY29uZmlndXJhdGlvbi5cbiAqICAgVGhpcyBwYXJhbWV0ZXIgYXBwbGllcyB0byBnZW5lcmFsIHB1cnBvc2UgYnVja2V0cyBvbmx5LiBJdCBpc24ndCBzdXBwb3J0ZWQgZm9yIGRpcmVjdG9yeSBidWNrZXQgbGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb25zLlxuICogICAgKyAgIGBgYWxsX3N0b3JhZ2VfY2xhc3Nlc18xMjhLYGAgLSBPYmplY3RzIHNtYWxsZXIgdGhhbiAxMjggS0Igd2lsbCBub3QgdHJhbnNpdGlvbiB0byBhbnkgc3RvcmFnZSBjbGFzcyBieSBkZWZhdWx0LlxuICogICArICAgYGB2YXJpZXNfYnlfc3RvcmFnZV9jbGFzc2BgIC0gT2JqZWN0cyBzbWFsbGVyIHRoYW4gMTI4IEtCIHdpbGwgdHJhbnNpdGlvbiB0byBHbGFjaWVyIEZsZXhpYmxlIFJldHJpZXZhbCBvciBHbGFjaWVyIERlZXAgQXJjaGl2ZSBzdG9yYWdlIGNsYXNzZXMuIEJ5IGRlZmF1bHQsIGFsbCBvdGhlciBzdG9yYWdlIGNsYXNzZXMgd2lsbCBwcmV2ZW50IHRyYW5zaXRpb25zIHNtYWxsZXIgdGhhbiAxMjggS0IuIFxuICogICBcbiAqICBUbyBjdXN0b21pemUgdGhlIG1pbmltdW0gb2JqZWN0IHNpemUgZm9yIGFueSB0cmFuc2l0aW9uIHlvdSBjYW4gYWRkIGEgZmlsdGVyIHRoYXQgc3BlY2lmaWVzIGEgY3VzdG9tIGBgT2JqZWN0U2l6ZUdyZWF0ZXJUaGFuYGAgb3IgYGBPYmplY3RTaXplTGVzc1RoYW5gYCBpbiB0aGUgYm9keSBvZiB5b3VyIHRyYW5zaXRpb24gcnVsZS4gQ3VzdG9tIGZpbHRlcnMgYWx3YXlzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBkZWZhdWx0IHRyYW5zaXRpb24gYmVoYXZpb3IuXG4gKi9cblRyYW5zaXRpb25EZWZhdWx0TWluaW11bU9iamVjdFNpemU/OiAoXCJ2YXJpZXNfYnlfc3RvcmFnZV9jbGFzc1wiIHwgXCJhbGxfc3RvcmFnZV9jbGFzc2VzXzEyOEtcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIGxpZmVjeWNsZSBydWxlcyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUHV0IEJ1Y2tldCBMaWZlY3ljbGUgQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVGxpZmVjeWNsZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6IGBgQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkYGAsIGBgRXhwaXJhdGlvbkRhdGVgYCwgYGBFeHBpcmF0aW9uSW5EYXlzYGAsIGBgTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uSW5EYXlzYGAsIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uYGAsIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uc2BgLCBgYFRyYW5zaXRpb25gYCwgb3IgYGBUcmFuc2l0aW9uc2BgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGUge1xuQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkPzogQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkXG4vKipcbiAqIEluZGljYXRlcyB3aGVuIG9iamVjdHMgYXJlIGRlbGV0ZWQgZnJvbSBBbWF6b24gUzMgYW5kIEFtYXpvbiBTMyBHbGFjaWVyLiBUaGUgZGF0ZSB2YWx1ZSBtdXN0IGJlIGluIElTTyA4NjAxIGZvcm1hdC4gVGhlIHRpbWUgaXMgYWx3YXlzIG1pZG5pZ2h0IFVUQy4gSWYgeW91IHNwZWNpZnkgYW4gZXhwaXJhdGlvbiBhbmQgdHJhbnNpdGlvbiB0aW1lLCB5b3UgbXVzdCB1c2UgdGhlIHNhbWUgdGltZSB1bml0IGZvciBib3RoIHByb3BlcnRpZXMgKGVpdGhlciBpbiBkYXlzIG9yIGJ5IGRhdGUpLiBUaGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYWxzbyBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuXG4gKi9cbkV4cGlyYXRpb25EYXRlPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgY3JlYXRpb24gd2hlbiBvYmplY3RzIGFyZSBkZWxldGVkIGZyb20gQW1hem9uIFMzIGFuZCBBbWF6b24gUzMgR2xhY2llci4gSWYgeW91IHNwZWNpZnkgYW4gZXhwaXJhdGlvbiBhbmQgdHJhbnNpdGlvbiB0aW1lLCB5b3UgbXVzdCB1c2UgdGhlIHNhbWUgdGltZSB1bml0IGZvciBib3RoIHByb3BlcnRpZXMgKGVpdGhlciBpbiBkYXlzIG9yIGJ5IGRhdGUpLiBUaGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYWxzbyBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuXG4gKi9cbkV4cGlyYXRpb25JbkRheXM/OiBudW1iZXJcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgQW1hem9uIFMzIHdpbGwgcmVtb3ZlIGEgZGVsZXRlIG1hcmtlciB3aXRob3V0IGFueSBub25jdXJyZW50IHZlcnNpb25zLiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGRlbGV0ZSBtYXJrZXIgd2lsbCBiZSByZW1vdmVkIGlmIHRoZXJlIGFyZSBubyBub25jdXJyZW50IHZlcnNpb25zLiBUaGlzIGNhbm5vdCBiZSBzcGVjaWZpZWQgd2l0aCBgYEV4cGlyYXRpb25JbkRheXNgYCwgYGBFeHBpcmF0aW9uRGF0ZWBgLCBvciBgYFRhZ0ZpbHRlcnNgYC5cbiAqL1xuRXhwaXJlZE9iamVjdERlbGV0ZU1hcmtlcj86IGJvb2xlYW5cbi8qKlxuICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlLiBUaGUgdmFsdWUgY2FuJ3QgYmUgbG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMuXG4gKi9cbklkPzogc3RyaW5nXG4vKipcbiAqIChEZXByZWNhdGVkLikgRm9yIGJ1Y2tldHMgd2l0aCB2ZXJzaW9uaW5nIGVuYWJsZWQgKG9yIHN1c3BlbmRlZCksIHNwZWNpZmllcyB0aGUgdGltZSwgaW4gZGF5cywgYmV0d2VlbiB3aGVuIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9iamVjdCBpcyB1cGxvYWRlZCB0byB0aGUgYnVja2V0IGFuZCB3aGVuIG9sZCB2ZXJzaW9ucyBvZiB0aGUgb2JqZWN0IGV4cGlyZS4gV2hlbiBvYmplY3QgdmVyc2lvbnMgZXhwaXJlLCBBbWF6b24gUzMgcGVybWFuZW50bHkgZGVsZXRlcyB0aGVtLiBJZiB5b3Ugc3BlY2lmeSBhIHRyYW5zaXRpb24gYW5kIGV4cGlyYXRpb24gdGltZSwgdGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS5cbiAqL1xuTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uSW5EYXlzPzogbnVtYmVyXG5Ob25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb24/OiBOb25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb25cbk5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbj86IE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvblxuLyoqXG4gKiBGb3IgYnVja2V0cyB3aXRoIHZlcnNpb25pbmcgZW5hYmxlZCAob3Igc3VzcGVuZGVkKSwgb25lIG9yIG1vcmUgdHJhbnNpdGlvbiBydWxlcyB0aGF0IHNwZWNpZnkgd2hlbiBub24tY3VycmVudCBvYmplY3RzIHRyYW5zaXRpb24gdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgeW91IHNwZWNpZnkgYSB0cmFuc2l0aW9uIGFuZCBleHBpcmF0aW9uIHRpbWUsIHRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uYGAgcHJvcGVydHkuXG4gKi9cbk5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnM/OiBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb24xW11cbi8qKlxuICogT2JqZWN0IGtleSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIG9uZSBvciBtb3JlIG9iamVjdHMgdG8gd2hpY2ggdGhpcyBydWxlIGFwcGxpZXMuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBJZiBgYEVuYWJsZWRgYCwgdGhlIHJ1bGUgaXMgY3VycmVudGx5IGJlaW5nIGFwcGxpZWQuIElmIGBgRGlzYWJsZWRgYCwgdGhlIHJ1bGUgaXMgbm90IGN1cnJlbnRseSBiZWluZyBhcHBsaWVkLlxuICovXG5TdGF0dXM6IChcIkVuYWJsZWRcIiB8IFwiRGlzYWJsZWRcIilcbi8qKlxuICogVGFncyB0byB1c2UgdG8gaWRlbnRpZnkgYSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgbGlmZWN5Y2xlIHJ1bGUgYXBwbGllcy5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbWluaW11bSBvYmplY3Qgc2l6ZSBpbiBieXRlcyBmb3IgdGhpcyBydWxlIHRvIGFwcGx5IHRvLiBPYmplY3RzIG11c3QgYmUgbGFyZ2VyIHRoYW4gdGhpcyB2YWx1ZSBpbiBieXRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc2l6ZSBiYXNlZCBydWxlcywgc2VlIFtMaWZlY3ljbGUgY29uZmlndXJhdGlvbiB1c2luZyBzaXplLWJhc2VkIHJ1bGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9saWZlY3ljbGUtY29uZmlndXJhdGlvbi1leGFtcGxlcy5odG1sI2xjLXNpemUtcnVsZXMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5PYmplY3RTaXplR3JlYXRlclRoYW4/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG9iamVjdCBzaXplIGluIGJ5dGVzIGZvciB0aGlzIHJ1bGUgdG8gYXBwbHkgdG8uIE9iamVjdHMgbXVzdCBiZSBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZSBpbiBieXRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc2l6ZWQgYmFzZWQgcnVsZXMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gdXNpbmcgc2l6ZS1iYXNlZCBydWxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvbGlmZWN5Y2xlLWNvbmZpZ3VyYXRpb24tZXhhbXBsZXMuaHRtbCNsYy1zaXplLXJ1bGVzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuT2JqZWN0U2l6ZUxlc3NUaGFuPzogc3RyaW5nXG5UcmFuc2l0aW9uPzogVHJhbnNpdGlvblxuLyoqXG4gKiBPbmUgb3IgbW9yZSB0cmFuc2l0aW9uIHJ1bGVzIHRoYXQgc3BlY2lmeSB3aGVuIGFuIG9iamVjdCB0cmFuc2l0aW9ucyB0byBhIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB5b3Ugc3BlY2lmeSBhbiBleHBpcmF0aW9uIGFuZCB0cmFuc2l0aW9uIHRpbWUsIHlvdSBtdXN0IHVzZSB0aGUgc2FtZSB0aW1lIHVuaXQgZm9yIGJvdGggcHJvcGVydGllcyAoZWl0aGVyIGluIGRheXMgb3IgYnkgZGF0ZSkuIFRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBhbHNvIGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS4gSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBUcmFuc2l0aW9uYGAgcHJvcGVydHkuXG4gKi9cblRyYW5zaXRpb25zPzogVHJhbnNpdGlvbjFbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBsaWZlY3ljbGUgcnVsZSB0aGF0IHN0b3BzIGluY29tcGxldGUgbXVsdGlwYXJ0IHVwbG9hZHMgdG8gYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWQge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIEFtYXpvbiBTMyBzdG9wcyBhbiBpbmNvbXBsZXRlIG11bHRpcGFydCB1cGxvYWQuXG4gKi9cbkRheXNBZnRlckluaXRpYXRpb246IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hlbiBub25jdXJyZW50IG9iamVjdCB2ZXJzaW9ucyBleHBpcmUuIFVwb24gZXhwaXJhdGlvbiwgUzMgcGVybWFuZW50bHkgZGVsZXRlcyB0aGUgbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMuIFlvdSBzZXQgdGhpcyBsaWZlY3ljbGUgY29uZmlndXJhdGlvbiBhY3Rpb24gb24gYSBidWNrZXQgdGhhdCBoYXMgdmVyc2lvbmluZyBlbmFibGVkIChvciBzdXNwZW5kZWQpIHRvIHJlcXVlc3QgdGhhdCBTMyBkZWxldGUgbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMgYXQgYSBzcGVjaWZpYyBwZXJpb2QgaW4gdGhlIG9iamVjdCdzIGxpZmV0aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgYW4gb2JqZWN0IGlzIG5vbmN1cnJlbnQgYmVmb3JlIFMzIGNhbiBwZXJmb3JtIHRoZSBhc3NvY2lhdGVkIGFjdGlvbi4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBub25jdXJyZW50IGRheXMgY2FsY3VsYXRpb25zLCBzZWUgW0hvdyBBbWF6b24gUzMgQ2FsY3VsYXRlcyBXaGVuIGFuIE9iamVjdCBCZWNhbWUgTm9uY3VycmVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvaW50cm8tbGlmZWN5Y2xlLXJ1bGVzLmh0bWwjbm9uLWN1cnJlbnQtZGF5cy1jYWxjdWxhdGlvbnMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5Ob25jdXJyZW50RGF5czogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyBob3cgbWFueSBub25jdXJyZW50IHZlcnNpb25zIFMzIHdpbGwgcmV0YWluLiBJZiB0aGVyZSBhcmUgdGhpcyBtYW55IG1vcmUgcmVjZW50IG5vbmN1cnJlbnQgdmVyc2lvbnMsIFMzIHdpbGwgdGFrZSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG5vbmN1cnJlbnQgdmVyc2lvbnMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gZWxlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2ludHJvLWxpZmVjeWNsZS1ydWxlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuTmV3ZXJOb25jdXJyZW50VmVyc2lvbnM/OiBudW1iZXJcbn1cbi8qKlxuICogKERlcHJlY2F0ZWQuKSBGb3IgYnVja2V0cyB3aXRoIHZlcnNpb25pbmcgZW5hYmxlZCAob3Igc3VzcGVuZGVkKSwgc3BlY2lmaWVzIHdoZW4gbm9uLWN1cnJlbnQgb2JqZWN0cyB0cmFuc2l0aW9uIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHlvdSBzcGVjaWZ5IGEgdHJhbnNpdGlvbiBhbmQgZXhwaXJhdGlvbiB0aW1lLCB0aGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnNgYCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb24ge1xuLyoqXG4gKiBUaGUgY2xhc3Mgb2Ygc3RvcmFnZSB1c2VkIHRvIHN0b3JlIHRoZSBvYmplY3QuXG4gKi9cblN0b3JhZ2VDbGFzczogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR2xhY2llclwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJTVEFOREFSRF9JQVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFuIG9iamVjdCBpcyBub25jdXJyZW50IGJlZm9yZSBBbWF6b24gUzMgY2FuIHBlcmZvcm0gdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5vbmN1cnJlbnQgZGF5cyBjYWxjdWxhdGlvbnMsIHNlZSBbSG93IEFtYXpvbiBTMyBDYWxjdWxhdGVzIEhvdyBMb25nIGFuIE9iamVjdCBIYXMgQmVlbiBOb25jdXJyZW50XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCNub24tY3VycmVudC1kYXlzLWNhbGN1bGF0aW9ucykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblRyYW5zaXRpb25JbkRheXM6IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IG1hbnkgbm9uY3VycmVudCB2ZXJzaW9ucyBTMyB3aWxsIHJldGFpbi4gSWYgdGhlcmUgYXJlIHRoaXMgbWFueSBtb3JlIHJlY2VudCBub25jdXJyZW50IHZlcnNpb25zLCBTMyB3aWxsIHRha2UgdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBub25jdXJyZW50IHZlcnNpb25zLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIGVsZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5ld2VyTm9uY3VycmVudFZlcnNpb25zPzogbnVtYmVyXG59XG4vKipcbiAqIENvbnRhaW5lciBmb3IgdGhlIHRyYW5zaXRpb24gcnVsZSB0aGF0IGRlc2NyaWJlcyB3aGVuIG5vbmN1cnJlbnQgb2JqZWN0cyB0cmFuc2l0aW9uIHRvIHRoZSBgYFNUQU5EQVJEX0lBYGAsIGBgT05FWk9ORV9JQWBgLCBgYElOVEVMTElHRU5UX1RJRVJJTkdgYCwgYGBHTEFDSUVSX0lSYGAsIGBgR0xBQ0lFUmBgLCBvciBgYERFRVBfQVJDSElWRWBgIHN0b3JhZ2UgY2xhc3MuIElmIHlvdXIgYnVja2V0IGlzIHZlcnNpb25pbmctZW5hYmxlZCAob3IgdmVyc2lvbmluZyBpcyBzdXNwZW5kZWQpLCB5b3UgY2FuIHNldCB0aGlzIGFjdGlvbiB0byByZXF1ZXN0IHRoYXQgQW1hem9uIFMzIHRyYW5zaXRpb24gbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMgdG8gdGhlIGBgU1RBTkRBUkRfSUFgYCwgYGBPTkVaT05FX0lBYGAsIGBgSU5URUxMSUdFTlRfVElFUklOR2BgLCBgYEdMQUNJRVJfSVJgYCwgYGBHTEFDSUVSYGAsIG9yIGBgREVFUF9BUkNISVZFYGAgc3RvcmFnZSBjbGFzcyBhdCBhIHNwZWNpZmljIHBlcmlvZCBpbiB0aGUgb2JqZWN0J3MgbGlmZXRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uc2BgIHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbjEge1xuLyoqXG4gKiBUaGUgY2xhc3Mgb2Ygc3RvcmFnZSB1c2VkIHRvIHN0b3JlIHRoZSBvYmplY3QuXG4gKi9cblN0b3JhZ2VDbGFzczogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR2xhY2llclwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJTVEFOREFSRF9JQVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFuIG9iamVjdCBpcyBub25jdXJyZW50IGJlZm9yZSBBbWF6b24gUzMgY2FuIHBlcmZvcm0gdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5vbmN1cnJlbnQgZGF5cyBjYWxjdWxhdGlvbnMsIHNlZSBbSG93IEFtYXpvbiBTMyBDYWxjdWxhdGVzIEhvdyBMb25nIGFuIE9iamVjdCBIYXMgQmVlbiBOb25jdXJyZW50XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCNub24tY3VycmVudC1kYXlzLWNhbGN1bGF0aW9ucykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblRyYW5zaXRpb25JbkRheXM6IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IG1hbnkgbm9uY3VycmVudCB2ZXJzaW9ucyBTMyB3aWxsIHJldGFpbi4gSWYgdGhlcmUgYXJlIHRoaXMgbWFueSBtb3JlIHJlY2VudCBub25jdXJyZW50IHZlcnNpb25zLCBTMyB3aWxsIHRha2UgdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBub25jdXJyZW50IHZlcnNpb25zLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIGVsZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5ld2VyTm9uY3VycmVudFZlcnNpb25zPzogbnVtYmVyXG59XG4vKipcbiAqIChEZXByZWNhdGVkLikgU3BlY2lmaWVzIHdoZW4gYW4gb2JqZWN0IHRyYW5zaXRpb25zIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHlvdSBzcGVjaWZ5IGFuIGV4cGlyYXRpb24gYW5kIHRyYW5zaXRpb24gdGltZSwgeW91IG11c3QgdXNlIHRoZSBzYW1lIHRpbWUgdW5pdCBmb3IgYm90aCBwcm9wZXJ0aWVzIChlaXRoZXIgaW4gZGF5cyBvciBieSBkYXRlKS4gVGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGFsc28gYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYFRyYW5zaXRpb25zYGAgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNpdGlvbiB7XG4vKipcbiAqIFRoZSBzdG9yYWdlIGNsYXNzIHRvIHdoaWNoIHlvdSB3YW50IHRoZSBvYmplY3QgdG8gdHJhbnNpdGlvbi5cbiAqL1xuU3RvcmFnZUNsYXNzOiAoXCJERUVQX0FSQ0hJVkVcIiB8IFwiR0xBQ0lFUlwiIHwgXCJHbGFjaWVyXCIgfCBcIkdMQUNJRVJfSVJcIiB8IFwiSU5URUxMSUdFTlRfVElFUklOR1wiIHwgXCJPTkVaT05FX0lBXCIgfCBcIlNUQU5EQVJEX0lBXCIpXG4vKipcbiAqIEluZGljYXRlcyB3aGVuIG9iamVjdHMgYXJlIHRyYW5zaXRpb25lZCB0byB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIFRoZSBkYXRlIHZhbHVlIG11c3QgYmUgaW4gSVNPIDg2MDEgZm9ybWF0LiBUaGUgdGltZSBpcyBhbHdheXMgbWlkbmlnaHQgVVRDLlxuICovXG5UcmFuc2l0aW9uRGF0ZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIGNyZWF0aW9uIHdoZW4gb2JqZWN0cyBhcmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzIGlzIGBgSU5URUxMSUdFTlRfVElFUklOR2BgLCBgYEdMQUNJRVJfSVJgYCwgYGBHTEFDSUVSYGAsIG9yIGBgREVFUF9BUkNISVZFYGAsIHZhbGlkIHZhbHVlcyBhcmUgYGAwYGAgb3IgcG9zaXRpdmUgaW50ZWdlcnMuIElmIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcyBpcyBgYFNUQU5EQVJEX0lBYGAgb3IgYGBPTkVaT05FX0lBYGAsIHZhbGlkIHZhbHVlcyBhcmUgcG9zaXRpdmUgaW50ZWdlcnMgZ3JlYXRlciB0aGFuIGBgMzBgYC4gQmUgYXdhcmUgdGhhdCBzb21lIHN0b3JhZ2UgY2xhc3NlcyBoYXZlIGEgbWluaW11bSBzdG9yYWdlIGR1cmF0aW9uIGFuZCB0aGF0IHlvdSdyZSBjaGFyZ2VkIGZvciB0cmFuc2l0aW9uaW5nIG9iamVjdHMgYmVmb3JlIHRoZWlyIG1pbmltdW0gc3RvcmFnZSBkdXJhdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uc3RyYWludHMgYW5kIGNvbnNpZGVyYXRpb25zIGZvciB0cmFuc2l0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvbGlmZWN5Y2xlLXRyYW5zaXRpb24tZ2VuZXJhbC1jb25zaWRlcmF0aW9ucy5odG1sI2xpZmVjeWNsZS1jb25maWd1cmF0aW9uLWNvbnN0cmFpbnRzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuVHJhbnNpdGlvbkluRGF5cz86IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hlbiBhbiBvYmplY3QgdHJhbnNpdGlvbnMgdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQW1hem9uIFMzIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uIHJ1bGVzLCBzZWUgW1RyYW5zaXRpb25pbmcgT2JqZWN0cyBVc2luZyBBbWF6b24gUzMgTGlmZWN5Y2xlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9saWZlY3ljbGUtdHJhbnNpdGlvbi1nZW5lcmFsLWNvbnNpZGVyYXRpb25zLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zaXRpb24xIHtcbi8qKlxuICogVGhlIHN0b3JhZ2UgY2xhc3MgdG8gd2hpY2ggeW91IHdhbnQgdGhlIG9iamVjdCB0byB0cmFuc2l0aW9uLlxuICovXG5TdG9yYWdlQ2xhc3M6IChcIkRFRVBfQVJDSElWRVwiIHwgXCJHTEFDSUVSXCIgfCBcIkdsYWNpZXJcIiB8IFwiR0xBQ0lFUl9JUlwiIHwgXCJJTlRFTExJR0VOVF9USUVSSU5HXCIgfCBcIk9ORVpPTkVfSUFcIiB8IFwiU1RBTkRBUkRfSUFcIilcbi8qKlxuICogSW5kaWNhdGVzIHdoZW4gb2JqZWN0cyBhcmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gVGhlIGRhdGUgdmFsdWUgbXVzdCBiZSBpbiBJU08gODYwMSBmb3JtYXQuIFRoZSB0aW1lIGlzIGFsd2F5cyBtaWRuaWdodCBVVEMuXG4gKi9cblRyYW5zaXRpb25EYXRlPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgY3JlYXRpb24gd2hlbiBvYmplY3RzIGFyZSB0cmFuc2l0aW9uZWQgdG8gdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MgaXMgYGBJTlRFTExJR0VOVF9USUVSSU5HYGAsIGBgR0xBQ0lFUl9JUmBgLCBgYEdMQUNJRVJgYCwgb3IgYGBERUVQX0FSQ0hJVkVgYCwgdmFsaWQgdmFsdWVzIGFyZSBgYDBgYCBvciBwb3NpdGl2ZSBpbnRlZ2Vycy4gSWYgdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzIGlzIGBgU1RBTkRBUkRfSUFgYCBvciBgYE9ORVpPTkVfSUFgYCwgdmFsaWQgdmFsdWVzIGFyZSBwb3NpdGl2ZSBpbnRlZ2VycyBncmVhdGVyIHRoYW4gYGAzMGBgLiBCZSBhd2FyZSB0aGF0IHNvbWUgc3RvcmFnZSBjbGFzc2VzIGhhdmUgYSBtaW5pbXVtIHN0b3JhZ2UgZHVyYXRpb24gYW5kIHRoYXQgeW91J3JlIGNoYXJnZWQgZm9yIHRyYW5zaXRpb25pbmcgb2JqZWN0cyBiZWZvcmUgdGhlaXIgbWluaW11bSBzdG9yYWdlIGR1cmF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25zdHJhaW50cyBhbmQgY29uc2lkZXJhdGlvbnMgZm9yIHRyYW5zaXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9saWZlY3ljbGUtdHJhbnNpdGlvbi1nZW5lcmFsLWNvbnNpZGVyYXRpb25zLmh0bWwjbGlmZWN5Y2xlLWNvbmZpZ3VyYXRpb24tY29uc3RyYWludHMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5UcmFuc2l0aW9uSW5EYXlzPzogbnVtYmVyXG59XG4vKipcbiAqIFNldHRpbmdzIHRoYXQgZGVmaW5lIHdoZXJlIGxvZ3MgYXJlIHN0b3JlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dnaW5nQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBidWNrZXQgd2hlcmUgQW1hem9uIFMzIHNob3VsZCBzdG9yZSBzZXJ2ZXIgYWNjZXNzIGxvZyBmaWxlcy4gWW91IGNhbiBzdG9yZSBsb2cgZmlsZXMgaW4gYW55IGJ1Y2tldCB0aGF0IHlvdSBvd24uIEJ5IGRlZmF1bHQsIGxvZ3MgYXJlIHN0b3JlZCBpbiB0aGUgYnVja2V0IHdoZXJlIHRoZSBgYExvZ2dpbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkgaXMgZGVmaW5lZC5cbiAqL1xuRGVzdGluYXRpb25CdWNrZXROYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgcHJlZml4IGZvciBhbGwgbG9nIG9iamVjdCBrZXlzLiBJZiB5b3Ugc3RvcmUgbG9nIGZpbGVzIGZyb20gbXVsdGlwbGUgQW1hem9uIFMzIGJ1Y2tldHMgaW4gYSBzaW5nbGUgYnVja2V0LCB5b3UgY2FuIHVzZSBhIHByZWZpeCB0byBkaXN0aW5ndWlzaCB3aGljaCBsb2cgZmlsZXMgY2FtZSBmcm9tIHdoaWNoIGJ1Y2tldC5cbiAqL1xuTG9nRmlsZVByZWZpeD86IHN0cmluZ1xuVGFyZ2V0T2JqZWN0S2V5Rm9ybWF0PzogVGFyZ2V0T2JqZWN0S2V5Rm9ybWF0XG59XG4vKipcbiAqIEFtYXpvbiBTMyBrZXlzIGZvciBsb2cgb2JqZWN0cyBhcmUgcGFydGl0aW9uZWQgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gKiAgIGBgW0Rlc3RpbmF0aW9uUHJlZml4XVtTb3VyY2VBY2NvdW50SWRdL1tTb3VyY2VSZWdpb25dL1tTb3VyY2VCdWNrZXRdL1tZWVlZXS9bTU1dL1tERF0vW1lZWVldLVtNTV0tW0REXS1baGhdLVttbV0tW3NzXS1bVW5pcXVlU3RyaW5nXWBgIFxuICogIFBhcnRpdGlvbmVkUHJlZml4IGRlZmF1bHRzIHRvIEV2ZW50VGltZSBkZWxpdmVyeSB3aGVuIHNlcnZlciBhY2Nlc3MgbG9ncyBhcmUgZGVsaXZlcmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpdGlvbmVkUHJlZml4IHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBwYXJ0aXRpb24gZGF0ZSBzb3VyY2UgZm9yIHRoZSBwYXJ0aXRpb25lZCBwcmVmaXguIGBgUGFydGl0aW9uRGF0ZVNvdXJjZWBgIGNhbiBiZSBgYEV2ZW50VGltZWBgIG9yIGBgRGVsaXZlcnlUaW1lYGAuXG4gKiAgRm9yIGBgRGVsaXZlcnlUaW1lYGAsIHRoZSB0aW1lIGluIHRoZSBsb2cgZmlsZSBuYW1lcyBjb3JyZXNwb25kcyB0byB0aGUgZGVsaXZlcnkgdGltZSBmb3IgdGhlIGxvZyBmaWxlcy4gXG4gKiAgIEZvciBgYEV2ZW50VGltZWBgLCBUaGUgbG9ncyBkZWxpdmVyZWQgYXJlIGZvciBhIHNwZWNpZmljIGRheSBvbmx5LiBUaGUgeWVhciwgbW9udGgsIGFuZCBkYXkgY29ycmVzcG9uZCB0byB0aGUgZGF5IG9uIHdoaWNoIHRoZSBldmVudCBvY2N1cnJlZCwgYW5kIHRoZSBob3VyLCBtaW51dGVzIGFuZCBzZWNvbmRzIGFyZSBzZXQgdG8gMDAgaW4gdGhlIGtleS5cbiAqL1xuUGFydGl0aW9uRGF0ZVNvdXJjZT86IChcIkV2ZW50VGltZVwiIHwgXCJEZWxpdmVyeVRpbWVcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZvciB0aGUgQ2xvdWRXYXRjaCByZXF1ZXN0IG1ldHJpY3MgKHNwZWNpZmllZCBieSB0aGUgbWV0cmljcyBjb25maWd1cmF0aW9uIElEKSBmcm9tIGFuIEFtYXpvbiBTMyBidWNrZXQuIElmIHlvdSdyZSB1cGRhdGluZyBhbiBleGlzdGluZyBtZXRyaWNzIGNvbmZpZ3VyYXRpb24sIG5vdGUgdGhhdCB0aGlzIGlzIGEgZnVsbCByZXBsYWNlbWVudCBvZiB0aGUgZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLiBJZiB5b3UgZG9uJ3QgaW5jbHVkZSB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8ga2VlcCwgdGhleSBhcmUgZXJhc2VkLiBGb3IgZXhhbXBsZXMsIHNlZSBbQVdTOjpTMzo6QnVja2V0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zMy1idWNrZXQuaHRtbCNhd3MtcHJvcGVydGllcy1zMy1idWNrZXQtLWV4YW1wbGVzKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUFVUIEJ1Y2tldCBtZXRyaWNzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0UFVUTWV0cmljQ29uZmlndXJhdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBhY2Nlc3MgcG9pbnQgdGhhdCB3YXMgdXNlZCB3aGlsZSBwZXJmb3JtaW5nIG9wZXJhdGlvbnMgb24gdGhlIG9iamVjdC4gVGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBvbmx5IGluY2x1ZGVzIG9iamVjdHMgdGhhdCBtZWV0IHRoZSBmaWx0ZXIncyBjcml0ZXJpYS5cbiAqL1xuQWNjZXNzUG9pbnRBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbi4gVGhpcyBjYW4gYmUgYW55IHZhbHVlIHlvdSBjaG9vc2UgdGhhdCBoZWxwcyB5b3UgaWRlbnRpZnkgeW91ciBtZXRyaWNzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbklkOiBzdHJpbmdcbi8qKlxuICogVGhlIHByZWZpeCB0aGF0IGFuIG9iamVjdCBtdXN0IGhhdmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1ldHJpY3MgcmVzdWx0cy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyBhIGxpc3Qgb2YgdGFnIGZpbHRlcnMgdG8gdXNlIGFzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZpbHRlci4gVGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBpbmNsdWRlcyBvbmx5IG9iamVjdHMgdGhhdCBtZWV0IHRoZSBmaWx0ZXIncyBjcml0ZXJpYS5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG59XG4vKipcbiAqIFRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uIG9mIGFuIFMzIGdlbmVyYWwgcHVycG9zZSBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FjY2VsZXJhdGluZyBkYXRhIGRpc2NvdmVyeSB3aXRoIFMzIE1ldGFkYXRhXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9tZXRhZGF0YS10YWJsZXMtb3ZlcnZpZXcuaHRtbCkgYW5kIFtTZXR0aW5nIHVwIHBlcm1pc3Npb25zIGZvciBjb25maWd1cmluZyBtZXRhZGF0YSB0YWJsZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL21ldGFkYXRhLXRhYmxlcy1wZXJtaXNzaW9ucy5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YVRhYmxlQ29uZmlndXJhdGlvbiB7XG5TM1RhYmxlc0Rlc3RpbmF0aW9uOiBTM1RhYmxlc0Rlc3RpbmF0aW9uXG59XG4vKipcbiAqIFRoZSBkZXN0aW5hdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uIFRoZSBkZXN0aW5hdGlvbiB0YWJsZSBidWNrZXQgbXVzdCBiZSBpbiB0aGUgc2FtZSBSZWdpb24gYW5kIEFXUy1hY2NvdW50IGFzIHRoZSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0LiBUaGUgc3BlY2lmaWVkIG1ldGFkYXRhIHRhYmxlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBgYGF3c19zM19tZXRhZGF0YWBgIG5hbWVzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzVGFibGVzRGVzdGluYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgZm9yIHRoZSB0YWJsZSBidWNrZXQgdGhhdCdzIHNwZWNpZmllZCBhcyB0aGUgZGVzdGluYXRpb24gaW4gdGhlIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uIFRoZSBkZXN0aW5hdGlvbiB0YWJsZSBidWNrZXQgbXVzdCBiZSBpbiB0aGUgc2FtZSBSZWdpb24gYW5kIEFXUy1hY2NvdW50IGFzIHRoZSBnZW5lcmFsIHB1cnBvc2UgYnVja2V0LlxuICovXG5UYWJsZUJ1Y2tldEFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIGZvciB0aGUgbWV0YWRhdGEgdGFibGUgaW4geW91ciBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgc3BlY2lmaWVkIG1ldGFkYXRhIHRhYmxlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBgYGF3c19zM19tZXRhZGF0YWBgIG5hbWVzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0LlxuICovXG5UYWJsZU5hbWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFibGUgYnVja2V0IG5hbWVzcGFjZSBmb3IgdGhlIG1ldGFkYXRhIHRhYmxlIGluIHlvdXIgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbi4gVGhpcyB2YWx1ZSBpcyBhbHdheXMgYGBhd3NfczNfbWV0YWRhdGFgYC5cbiAqL1xuVGFibGVOYW1lc3BhY2U/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciB0aGUgbWV0YWRhdGEgdGFibGUgaW4gdGhlIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uIFRoZSBzcGVjaWZpZWQgbWV0YWRhdGEgdGFibGUgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGBgYXdzX3MzX21ldGFkYXRhYGAgbmFtZXNwYWNlIGluIHRoZSBkZXN0aW5hdGlvbiB0YWJsZSBidWNrZXQuXG4gKi9cblRhYmxlQXJuPzogc3RyaW5nXG59XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gdGhhdCBkZWZpbmVzIGhvdyBBbWF6b24gUzMgaGFuZGxlcyBidWNrZXQgbm90aWZpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25Db25maWd1cmF0aW9uIHtcbkV2ZW50QnJpZGdlQ29uZmlndXJhdGlvbj86IEV2ZW50QnJpZGdlQ29uZmlndXJhdGlvblxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIExBTWxvbmcgZnVuY3Rpb25zIHRvIGludm9rZSBhbmQgdGhlIGV2ZW50cyBmb3Igd2hpY2ggdG8gaW52b2tlIHRoZW0uXG4gKi9cbkxhbWJkYUNvbmZpZ3VyYXRpb25zPzogTGFtYmRhQ29uZmlndXJhdGlvbltdXG4vKipcbiAqIFRoZSBBbWF6b24gU2ltcGxlIFF1ZXVlIFNlcnZpY2UgcXVldWVzIHRvIHB1Ymxpc2ggbWVzc2FnZXMgdG8gYW5kIHRoZSBldmVudHMgZm9yIHdoaWNoIHRvIHB1Ymxpc2ggbWVzc2FnZXMuXG4gKi9cblF1ZXVlQ29uZmlndXJhdGlvbnM/OiBRdWV1ZUNvbmZpZ3VyYXRpb25bXVxuLyoqXG4gKiBUaGUgdG9waWMgdG8gd2hpY2ggbm90aWZpY2F0aW9ucyBhcmUgc2VudCBhbmQgdGhlIGV2ZW50cyBmb3Igd2hpY2ggbm90aWZpY2F0aW9ucyBhcmUgZ2VuZXJhdGVkLlxuICovXG5Ub3BpY0NvbmZpZ3VyYXRpb25zPzogVG9waWNDb25maWd1cmF0aW9uW11cbn1cbi8qKlxuICogRW5hYmxlcyBkZWxpdmVyeSBvZiBldmVudHMgdG8gQW1hem9uIEV2ZW50QnJpZGdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QnJpZGdlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIEVuYWJsZXMgZGVsaXZlcnkgb2YgZXZlbnRzIHRvIEFtYXpvbiBFdmVudEJyaWRnZS5cbiAqL1xuRXZlbnRCcmlkZ2VFbmFibGVkOiAoYm9vbGVhbiAmIHN0cmluZylcbn1cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBMQU1sb25nIGZ1bmN0aW9ucyB0byBpbnZva2UgYW5kIHRoZSBldmVudHMgZm9yIHdoaWNoIHRvIGludm9rZSB0aGVtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFMzIGJ1Y2tldCBldmVudCBmb3Igd2hpY2ggdG8gaW52b2tlIHRoZSBMQU1sb25nIGZ1bmN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtTdXBwb3J0ZWQgRXZlbnQgVHlwZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L05vdGlmaWNhdGlvbkhvd1RvLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5FdmVudDogc3RyaW5nXG5GaWx0ZXI/OiBOb3RpZmljYXRpb25GaWx0ZXJcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBMQU1sb25nIGZ1bmN0aW9uIHRoYXQgQW1hem9uIFMzIGludm9rZXMgd2hlbiB0aGUgc3BlY2lmaWVkIGV2ZW50IHR5cGUgb2NjdXJzLlxuICovXG5GdW5jdGlvbjogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBmaWx0ZXJpbmcgcnVsZXMgdGhhdCBkZXRlcm1pbmUgd2hpY2ggb2JqZWN0cyBpbnZva2UgdGhlIEFXUyBMYW1iZGEgZnVuY3Rpb24uIEZvciBleGFtcGxlLCB5b3UgY2FuIGNyZWF0ZSBhIGZpbHRlciBzbyB0aGF0IG9ubHkgaW1hZ2UgZmlsZXMgd2l0aCBhIGBgLmpwZ2BgIGV4dGVuc2lvbiBpbnZva2UgdGhlIGZ1bmN0aW9uIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gdGhlIEFtYXpvbiBTMyBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uRmlsdGVyIHtcblMzS2V5OiBTM0tleUZpbHRlclxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3Igb2JqZWN0IGtleSBuYW1lIHByZWZpeCBhbmQgc3VmZml4IGZpbHRlcmluZyBydWxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0tleUZpbHRlciB7XG4vKipcbiAqIEEgbGlzdCBvZiBjb250YWluZXJzIGZvciB0aGUga2V5LXZhbHVlIHBhaXIgdGhhdCBkZWZpbmVzIHRoZSBjcml0ZXJpYSBmb3IgdGhlIGZpbHRlciBydWxlLlxuICovXG5SdWxlczogRmlsdGVyUnVsZVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgQW1hem9uIFMzIG9iamVjdCBrZXkgbmFtZSB0byBmaWx0ZXIgb24uIEFuIG9iamVjdCBrZXkgbmFtZSBpcyB0aGUgbmFtZSBhc3NpZ25lZCB0byBhbiBvYmplY3QgaW4geW91ciBBbWF6b24gUzMgYnVja2V0LiBZb3Ugc3BlY2lmeSB3aGV0aGVyIHRvIGZpbHRlciBvbiB0aGUgc3VmZml4IG9yIHByZWZpeCBvZiB0aGUgb2JqZWN0IGtleSBuYW1lLiBBIHByZWZpeCBpcyBhIHNwZWNpZmljIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gb2JqZWN0IGtleSBuYW1lLCB3aGljaCB5b3UgY2FuIHVzZSB0byBvcmdhbml6ZSBvYmplY3RzLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBzdGFydCB0aGUga2V5IG5hbWVzIG9mIHJlbGF0ZWQgb2JqZWN0cyB3aXRoIGEgcHJlZml4LCBzdWNoIGFzIGBgMjAyMy1gYCBvciBgYGVuZ2luZWVyaW5nL2BgLiBUaGVuLCB5b3UgY2FuIHVzZSBgYEZpbHRlclJ1bGVgYCB0byBmaW5kIG9iamVjdHMgaW4gYSBidWNrZXQgd2l0aCBrZXkgbmFtZXMgdGhhdCBoYXZlIHRoZSBzYW1lIHByZWZpeC4gQSBzdWZmaXggaXMgc2ltaWxhciB0byBhIHByZWZpeCwgYnV0IGl0IGlzIGF0IHRoZSBlbmQgb2YgdGhlIG9iamVjdCBrZXkgbmFtZSBpbnN0ZWFkIG9mIGF0IHRoZSBiZWdpbm5pbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyUnVsZSB7XG4vKipcbiAqIFRoZSBvYmplY3Qga2V5IG5hbWUgcHJlZml4IG9yIHN1ZmZpeCBpZGVudGlmeWluZyBvbmUgb3IgbW9yZSBvYmplY3RzIHRvIHdoaWNoIHRoZSBmaWx0ZXJpbmcgcnVsZSBhcHBsaWVzLiBUaGUgbWF4aW11bSBsZW5ndGggaXMgMSwwMjQgY2hhcmFjdGVycy4gT3ZlcmxhcHBpbmcgcHJlZml4ZXMgYW5kIHN1ZmZpeGVzIGFyZSBub3Qgc3VwcG9ydGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmluZyBFdmVudCBOb3RpZmljYXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Ob3RpZmljYXRpb25Ib3dUby5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuTmFtZTogc3RyaW5nXG4vKipcbiAqIFRoZSB2YWx1ZSB0aGF0IHRoZSBmaWx0ZXIgc2VhcmNoZXMgZm9yIGluIG9iamVjdCBrZXkgbmFtZXMuXG4gKi9cblZhbHVlOiBzdHJpbmdcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBwdWJsaXNoaW5nIG1lc3NhZ2VzIHRvIGFuIEFtYXpvbiBTaW1wbGUgUXVldWUgU2VydmljZSAoQW1hem9uIFNRUykgcXVldWUgd2hlbiBBbWF6b24gUzMgZGV0ZWN0cyBzcGVjaWZpZWQgZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXVlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUzMgYnVja2V0IGV2ZW50IGFib3V0IHdoaWNoIHlvdSB3YW50IHRvIHB1Ymxpc2ggbWVzc2FnZXMgdG8gQW1hem9uIFNRUy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3VwcG9ydGVkIEV2ZW50IFR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Ob3RpZmljYXRpb25Ib3dUby5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuRXZlbnQ6IHN0cmluZ1xuRmlsdGVyPzogTm90aWZpY2F0aW9uRmlsdGVyMVxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEFtYXpvbiBTUVMgcXVldWUgdG8gd2hpY2ggQW1hem9uIFMzIHB1Ymxpc2hlcyBhIG1lc3NhZ2Ugd2hlbiBpdCBkZXRlY3RzIGV2ZW50cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuIEZJRk8gcXVldWVzIGFyZSBub3QgYWxsb3dlZCB3aGVuIGVuYWJsaW5nIGFuIFNRUyBxdWV1ZSBhcyB0aGUgZXZlbnQgbm90aWZpY2F0aW9uIGRlc3RpbmF0aW9uLlxuICovXG5RdWV1ZTogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBmaWx0ZXJpbmcgcnVsZXMgdGhhdCBkZXRlcm1pbmUgd2hpY2ggb2JqZWN0cyB0cmlnZ2VyIG5vdGlmaWNhdGlvbnMuIEZvciBleGFtcGxlLCB5b3UgY2FuIGNyZWF0ZSBhIGZpbHRlciBzbyB0aGF0IEFtYXpvbiBTMyBzZW5kcyBub3RpZmljYXRpb25zIG9ubHkgd2hlbiBpbWFnZSBmaWxlcyB3aXRoIGEgYGAuanBnYGAgZXh0ZW5zaW9uIGFyZSBhZGRlZCB0byB0aGUgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmluZyBldmVudCBub3RpZmljYXRpb25zIHVzaW5nIG9iamVjdCBrZXkgbmFtZSBmaWx0ZXJpbmddKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlci1ndWlkZS9ub3RpZmljYXRpb24taG93LXRvLWZpbHRlcmluZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25GaWx0ZXIxIHtcblMzS2V5OiBTM0tleUZpbHRlclxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3Igc3BlY2lmeWluZyB0aGUgY29uZmlndXJhdGlvbiBmb3IgcHVibGljYXRpb24gb2YgbWVzc2FnZXMgdG8gYW4gQW1hem9uIFNpbXBsZSBOb3RpZmljYXRpb24gU2VydmljZSAoQW1hem9uIFNOUykgdG9waWMgd2hlbiBBbWF6b24gUzMgZGV0ZWN0cyBzcGVjaWZpZWQgZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvcGljQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUzMgYnVja2V0IGV2ZW50IGFib3V0IHdoaWNoIHRvIHNlbmQgbm90aWZpY2F0aW9ucy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3VwcG9ydGVkIEV2ZW50IFR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Ob3RpZmljYXRpb25Ib3dUby5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuRXZlbnQ6IHN0cmluZ1xuRmlsdGVyPzogTm90aWZpY2F0aW9uRmlsdGVyMlxuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEFtYXpvbiBTTlMgdG9waWMgdG8gd2hpY2ggQW1hem9uIFMzIHB1Ymxpc2hlcyBhIG1lc3NhZ2Ugd2hlbiBpdCBkZXRlY3RzIGV2ZW50cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gKi9cblRvcGljOiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGZpbHRlcmluZyBydWxlcyB0aGF0IGRldGVybWluZSBmb3Igd2hpY2ggb2JqZWN0cyB0byBzZW5kIG5vdGlmaWNhdGlvbnMuIEZvciBleGFtcGxlLCB5b3UgY2FuIGNyZWF0ZSBhIGZpbHRlciBzbyB0aGF0IEFtYXpvbiBTMyBzZW5kcyBub3RpZmljYXRpb25zIG9ubHkgd2hlbiBpbWFnZSBmaWxlcyB3aXRoIGEgYGAuanBnYGAgZXh0ZW5zaW9uIGFyZSBhZGRlZCB0byB0aGUgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkZpbHRlcjIge1xuUzNLZXk6IFMzS2V5RmlsdGVyXG59XG4vKipcbiAqIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGRpcmVjdG9yeSBidWNrZXRzLlxuICogICBQbGFjZXMgYW4gT2JqZWN0IExvY2sgY29uZmlndXJhdGlvbiBvbiB0aGUgc3BlY2lmaWVkIGJ1Y2tldC4gVGhlIHJ1bGUgc3BlY2lmaWVkIGluIHRoZSBPYmplY3QgTG9jayBjb25maWd1cmF0aW9uIHdpbGwgYmUgYXBwbGllZCBieSBkZWZhdWx0IHRvIGV2ZXJ5IG5ldyBvYmplY3QgcGxhY2VkIGluIHRoZSBzcGVjaWZpZWQgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtMb2NraW5nIE9iamVjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L29iamVjdC1sb2NrLmh0bWwpLiBcbiAqICAgICsgIFRoZSBgYERlZmF1bHRSZXRlbnRpb25gYCBzZXR0aW5ncyByZXF1aXJlIGJvdGggYSBtb2RlIGFuZCBhIHBlcmlvZC5cbiAqICAgKyAgVGhlIGBgRGVmYXVsdFJldGVudGlvbmBgIHBlcmlvZCBjYW4gYmUgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYCBidXQgeW91IG11c3Qgc2VsZWN0IG9uZS4gWW91IGNhbm5vdCBzcGVjaWZ5IGBgRGF5c2BgIGFuZCBgYFllYXJzYGAgYXQgdGhlIHNhbWUgdGltZS5cbiAqICAgKyAgWW91IGNhbiBlbmFibGUgT2JqZWN0IExvY2sgZm9yIG5ldyBvciBleGlzdGluZyBidWNrZXRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25maWd1cmluZyBPYmplY3QgTG9ja10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LWxvY2stY29uZmlndXJlLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdExvY2tDb25maWd1cmF0aW9uIHtcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBidWNrZXQgaGFzIGFuIE9iamVjdCBMb2NrIGNvbmZpZ3VyYXRpb24gZW5hYmxlZC4gRW5hYmxlIGBgT2JqZWN0TG9ja0VuYWJsZWRgYCB3aGVuIHlvdSBhcHBseSBgYE9iamVjdExvY2tDb25maWd1cmF0aW9uYGAgdG8gYSBidWNrZXQuXG4gKi9cbk9iamVjdExvY2tFbmFibGVkPzogXCJFbmFibGVkXCJcblJ1bGU/OiBPYmplY3RMb2NrUnVsZVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIE9iamVjdCBMb2NrIHJ1bGUgZm9yIHRoZSBzcGVjaWZpZWQgb2JqZWN0LiBFbmFibGUgdGhpcyBydWxlIHdoZW4geW91IGFwcGx5IGBgT2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25gYCB0byBhIGJ1Y2tldC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCBidWNrZXQgc2V0dGluZ3MgcmVxdWlyZSBib3RoIGBgTW9kZWBgIGFuZCBhIHBlcmlvZCBvZiBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgLiBZb3UgY2Fubm90IHNwZWNpZnkgYGBEYXlzYGAgYW5kIGBgWWVhcnNgYCBhdCB0aGUgc2FtZSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtPYmplY3RMb2NrUnVsZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LW9iamVjdGxvY2tydWxlLmh0bWwpIGFuZCBbRGVmYXVsdFJldGVudGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LWRlZmF1bHRyZXRlbnRpb24uaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0TG9ja1J1bGUge1xuRGVmYXVsdFJldGVudGlvbj86IERlZmF1bHRSZXRlbnRpb25cbn1cbi8qKlxuICogVGhlIGRlZmF1bHQgT2JqZWN0IExvY2sgcmV0ZW50aW9uIG1vZGUgYW5kIHBlcmlvZCB0aGF0IHlvdSB3YW50IHRvIGFwcGx5IHRvIG5ldyBvYmplY3RzIHBsYWNlZCBpbiB0aGUgc3BlY2lmaWVkIGJ1Y2tldC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCBidWNrZXQgc2V0dGluZ3MgcmVxdWlyZSBib3RoIGBgTW9kZWBgIGFuZCBhIHBlcmlvZCBvZiBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgLiBZb3UgY2Fubm90IHNwZWNpZnkgYGBEYXlzYGAgYW5kIGBgWWVhcnNgYCBhdCB0aGUgc2FtZSB0aW1lLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBhbGxvd2FibGUgdmFsdWVzIGZvciBtb2RlIGFuZCBwZXJpb2QsIHNlZSBbRGVmYXVsdFJldGVudGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LWRlZmF1bHRyZXRlbnRpb24uaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFJldGVudGlvbiB7XG4vKipcbiAqIFRoZSBudW1iZXIgb2YgeWVhcnMgdGhhdCB5b3Ugd2FudCB0byBzcGVjaWZ5IGZvciB0aGUgZGVmYXVsdCByZXRlbnRpb24gcGVyaW9kLiBJZiBPYmplY3QgTG9jayBpcyB0dXJuZWQgb24sIHlvdSBtdXN0IHNwZWNpZnkgYGBNb2RlYGAgYW5kIHNwZWNpZnkgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC5cbiAqL1xuWWVhcnM/OiBudW1iZXJcbi8qKlxuICogVGhlIG51bWJlciBvZiBkYXlzIHRoYXQgeW91IHdhbnQgdG8gc3BlY2lmeSBmb3IgdGhlIGRlZmF1bHQgcmV0ZW50aW9uIHBlcmlvZC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCB5b3UgbXVzdCBzcGVjaWZ5IGBgTW9kZWBgIGFuZCBzcGVjaWZ5IGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAuXG4gKi9cbkRheXM/OiBudW1iZXJcbi8qKlxuICogVGhlIGRlZmF1bHQgT2JqZWN0IExvY2sgcmV0ZW50aW9uIG1vZGUgeW91IHdhbnQgdG8gYXBwbHkgdG8gbmV3IG9iamVjdHMgcGxhY2VkIGluIHRoZSBzcGVjaWZpZWQgYnVja2V0LiBJZiBPYmplY3QgTG9jayBpcyB0dXJuZWQgb24sIHlvdSBtdXN0IHNwZWNpZnkgYGBNb2RlYGAgYW5kIHNwZWNpZnkgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC5cbiAqL1xuTW9kZT86IChcIkNPTVBMSUFOQ0VcIiB8IFwiR09WRVJOQU5DRVwiKVxufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHRoYXQgZGVmaW5lcyBob3cgQW1hem9uIFMzIGhhbmRsZXMgT2JqZWN0IE93bmVyc2hpcCBydWxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lcnNoaXBDb250cm9scyB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY29udGFpbmVyIGVsZW1lbnQgZm9yIE9iamVjdCBPd25lcnNoaXAgcnVsZXMuXG4gKi9cblJ1bGVzOiBPd25lcnNoaXBDb250cm9sc1J1bGVbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYW4gT2JqZWN0IE93bmVyc2hpcCBydWxlLlxuICogIFMzIE9iamVjdCBPd25lcnNoaXAgaXMgYW4gQW1hem9uIFMzIGJ1Y2tldC1sZXZlbCBzZXR0aW5nIHRoYXQgeW91IGNhbiB1c2UgdG8gZGlzYWJsZSBhY2Nlc3MgY29udHJvbCBsaXN0cyAoQUNMcykgYW5kIHRha2Ugb3duZXJzaGlwIG9mIGV2ZXJ5IG9iamVjdCBpbiB5b3VyIGJ1Y2tldCwgc2ltcGxpZnlpbmcgYWNjZXNzIG1hbmFnZW1lbnQgZm9yIGRhdGEgc3RvcmVkIGluIEFtYXpvbiBTMy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29udHJvbGxpbmcgb3duZXJzaGlwIG9mIG9iamVjdHMgYW5kIGRpc2FibGluZyBBQ0xzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9hYm91dC1vYmplY3Qtb3duZXJzaGlwLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE93bmVyc2hpcENvbnRyb2xzUnVsZSB7XG4vKipcbiAqIFNwZWNpZmllcyBhbiBvYmplY3Qgb3duZXJzaGlwIHJ1bGUuXG4gKi9cbk9iamVjdE93bmVyc2hpcD86IChcIk9iamVjdFdyaXRlclwiIHwgXCJCdWNrZXRPd25lclByZWZlcnJlZFwiIHwgXCJCdWNrZXRPd25lckVuZm9yY2VkXCIpXG59XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gdGhhdCBkZWZpbmVzIGhvdyBBbWF6b24gUzMgaGFuZGxlcyBwdWJsaWMgYWNjZXNzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgYmxvY2sgcHVibGljIGFjY2VzcyBjb250cm9sIGxpc3RzIChBQ0xzKSBmb3IgdGhpcyBidWNrZXQgYW5kIG9iamVjdHMgaW4gdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIGNhdXNlcyB0aGUgZm9sbG93aW5nIGJlaGF2aW9yOlxuICogICArICBQVVQgQnVja2V0IEFDTCBhbmQgUFVUIE9iamVjdCBBQ0wgY2FsbHMgZmFpbCBpZiB0aGUgc3BlY2lmaWVkIEFDTCBpcyBwdWJsaWMuXG4gKiAgICsgIFBVVCBPYmplY3QgY2FsbHMgZmFpbCBpZiB0aGUgcmVxdWVzdCBpbmNsdWRlcyBhIHB1YmxpYyBBQ0wuXG4gKiAgICsgIFBVVCBCdWNrZXQgY2FsbHMgZmFpbCBpZiB0aGUgcmVxdWVzdCBpbmNsdWRlcyBhIHB1YmxpYyBBQ0wuXG4gKiAgIFxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCBleGlzdGluZyBwb2xpY2llcyBvciBBQ0xzLlxuICovXG5CbG9ja1B1YmxpY0FjbHM/OiBib29sZWFuXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgYmxvY2sgcHVibGljIGJ1Y2tldCBwb2xpY2llcyBmb3IgdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIGNhdXNlcyBBbWF6b24gUzMgdG8gcmVqZWN0IGNhbGxzIHRvIFBVVCBCdWNrZXQgcG9saWN5IGlmIHRoZSBzcGVjaWZpZWQgYnVja2V0IHBvbGljeSBhbGxvd3MgcHVibGljIGFjY2Vzcy4gXG4gKiAgRW5hYmxpbmcgdGhpcyBzZXR0aW5nIGRvZXNuJ3QgYWZmZWN0IGV4aXN0aW5nIGJ1Y2tldCBwb2xpY2llcy5cbiAqL1xuQmxvY2tQdWJsaWNQb2xpY3k/OiBib29sZWFuXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgaWdub3JlIHB1YmxpYyBBQ0xzIGZvciB0aGlzIGJ1Y2tldCBhbmQgb2JqZWN0cyBpbiB0aGlzIGJ1Y2tldC4gU2V0dGluZyB0aGlzIGVsZW1lbnQgdG8gYGBUUlVFYGAgY2F1c2VzIEFtYXpvbiBTMyB0byBpZ25vcmUgYWxsIHB1YmxpYyBBQ0xzIG9uIHRoaXMgYnVja2V0IGFuZCBvYmplY3RzIGluIHRoaXMgYnVja2V0LlxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCB0aGUgcGVyc2lzdGVuY2Ugb2YgYW55IGV4aXN0aW5nIEFDTHMgYW5kIGRvZXNuJ3QgcHJldmVudCBuZXcgcHVibGljIEFDTHMgZnJvbSBiZWluZyBzZXQuXG4gKi9cbklnbm9yZVB1YmxpY0FjbHM/OiBib29sZWFuXG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgcmVzdHJpY3QgcHVibGljIGJ1Y2tldCBwb2xpY2llcyBmb3IgdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIHJlc3RyaWN0cyBhY2Nlc3MgdG8gdGhpcyBidWNrZXQgdG8gb25seSBBV1Mtc2VydmljZSBwcmluY2lwYWxzIGFuZCBhdXRob3JpemVkIHVzZXJzIHdpdGhpbiB0aGlzIGFjY291bnQgaWYgdGhlIGJ1Y2tldCBoYXMgYSBwdWJsaWMgcG9saWN5LlxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCBwcmV2aW91c2x5IHN0b3JlZCBidWNrZXQgcG9saWNpZXMsIGV4Y2VwdCB0aGF0IHB1YmxpYyBhbmQgY3Jvc3MtYWNjb3VudCBhY2Nlc3Mgd2l0aGluIGFueSBwdWJsaWMgYnVja2V0IHBvbGljeSwgaW5jbHVkaW5nIG5vbi1wdWJsaWMgZGVsZWdhdGlvbiB0byBzcGVjaWZpYyBhY2NvdW50cywgaXMgYmxvY2tlZC5cbiAqL1xuUmVzdHJpY3RQdWJsaWNCdWNrZXRzPzogYm9vbGVhblxufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciByZXBsaWNhdGluZyBvYmplY3RzIGluIGFuIFMzIGJ1Y2tldC4gVG8gZW5hYmxlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBhbHNvIGVuYWJsZSB2ZXJzaW9uaW5nIGJ5IHVzaW5nIHRoZSBgYFZlcnNpb25pbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkuXG4gKiAgQW1hem9uIFMzIGNhbiBzdG9yZSByZXBsaWNhdGVkIG9iamVjdHMgaW4gYSBzaW5nbGUgZGVzdGluYXRpb24gYnVja2V0IG9yIG11bHRpcGxlIGRlc3RpbmF0aW9uIGJ1Y2tldHMuIFRoZSBkZXN0aW5hdGlvbiBidWNrZXQgb3IgYnVja2V0cyBtdXN0IGFscmVhZHkgZXhpc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25Db25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBJQU1sb25nIChJQU0pIHJvbGUgdGhhdCBBbWF6b24gUzMgYXNzdW1lcyB3aGVuIHJlcGxpY2F0aW5nIG9iamVjdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0hvdyB0byBTZXQgVXAgUmVwbGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3JlcGxpY2F0aW9uLWhvdy1zZXR1cC5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuUm9sZTogc3RyaW5nXG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBvbmUgb3IgbW9yZSByZXBsaWNhdGlvbiBydWxlcy4gQSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgcnVsZSBhbmQgY2FuIGNvbnRhaW4gYSBtYXhpbXVtIG9mIDEsMDAwIHJ1bGVzLlxuICovXG5SdWxlczogUmVwbGljYXRpb25SdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIHdoaWNoIEFtYXpvbiBTMyBvYmplY3RzIHRvIHJlcGxpY2F0ZSBhbmQgd2hlcmUgdG8gc3RvcmUgdGhlIHJlcGxpY2FzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uUnVsZSB7XG5EZWxldGVNYXJrZXJSZXBsaWNhdGlvbj86IERlbGV0ZU1hcmtlclJlcGxpY2F0aW9uXG5EZXN0aW5hdGlvbjogUmVwbGljYXRpb25EZXN0aW5hdGlvblxuRmlsdGVyPzogUmVwbGljYXRpb25SdWxlRmlsdGVyXG4vKipcbiAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlLiBUaGUgbWF4aW11bSB2YWx1ZSBpcyAyNTUgY2hhcmFjdGVycy4gSWYgeW91IGRvbid0IHNwZWNpZnkgYSB2YWx1ZSwgQVdTIENsb3VkRm9ybWF0aW9uIGdlbmVyYXRlcyBhIHJhbmRvbSBJRC4gV2hlbiB1c2luZyBhIFYyIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gdGhpcyBwcm9wZXJ0eSBpcyBjYXBpdGFsaXplZCBhcyBcIklEXCIuXG4gKi9cbklkPzogc3RyaW5nXG4vKipcbiAqIEFuIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIHRoZSBvYmplY3Qgb3Igb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLiBUaGUgbWF4aW11bSBwcmVmaXggbGVuZ3RoIGlzIDEsMDI0IGNoYXJhY3RlcnMuIFRvIGluY2x1ZGUgYWxsIG9iamVjdHMgaW4gYSBidWNrZXQsIHNwZWNpZnkgYW4gZW1wdHkgc3RyaW5nLiBUbyBmaWx0ZXIgdXNpbmcgYSBWMSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCBhZGQgdGhlIGBgUHJlZml4YGAgZGlyZWN0bHkgYXMgYSBjaGlsZCBlbGVtZW50IG9mIHRoZSBgYFJ1bGVgYCBlbGVtZW50LlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogVGhlIHByaW9yaXR5IGluZGljYXRlcyB3aGljaCBydWxlIGhhcyBwcmVjZWRlbmNlIHdoZW5ldmVyIHR3byBvciBtb3JlIHJlcGxpY2F0aW9uIHJ1bGVzIGNvbmZsaWN0LiBBbWF6b24gUzMgd2lsbCBhdHRlbXB0IHRvIHJlcGxpY2F0ZSBvYmplY3RzIGFjY29yZGluZyB0byBhbGwgcmVwbGljYXRpb24gcnVsZXMuIEhvd2V2ZXIsIGlmIHRoZXJlIGFyZSB0d28gb3IgbW9yZSBydWxlcyB3aXRoIHRoZSBzYW1lIGRlc3RpbmF0aW9uIGJ1Y2tldCwgdGhlbiBvYmplY3RzIHdpbGwgYmUgcmVwbGljYXRlZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGUgd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eS4gVGhlIGhpZ2hlciB0aGUgbnVtYmVyLCB0aGUgaGlnaGVyIHRoZSBwcmlvcml0eS4gXG4gKiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUmVwbGljYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3JlcGxpY2F0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5Qcmlvcml0eT86IG51bWJlclxuU291cmNlU2VsZWN0aW9uQ3JpdGVyaWE/OiBTb3VyY2VTZWxlY3Rpb25Dcml0ZXJpYVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgcnVsZSBpcyBlbmFibGVkLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHJlcGxpY2F0ZXMgZGVsZXRlIG1hcmtlcnMuIElmIHlvdSBzcGVjaWZ5IGEgYGBGaWx0ZXJgYCBpbiB5b3VyIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIHlvdSBtdXN0IGFsc28gaW5jbHVkZSBhIGBgRGVsZXRlTWFya2VyUmVwbGljYXRpb25gYCBlbGVtZW50LiBJZiB5b3VyIGBgRmlsdGVyYGAgaW5jbHVkZXMgYSBgYFRhZ2BgIGVsZW1lbnQsIHRoZSBgYERlbGV0ZU1hcmtlclJlcGxpY2F0aW9uYGAgYGBTdGF0dXNgYCBtdXN0IGJlIHNldCB0byBEaXNhYmxlZCwgYmVjYXVzZSBBbWF6b24gUzMgZG9lcyBub3Qgc3VwcG9ydCByZXBsaWNhdGluZyBkZWxldGUgbWFya2VycyBmb3IgdGFnLWJhc2VkIHJ1bGVzLiBGb3IgYW4gZXhhbXBsZSBjb25maWd1cmF0aW9uLCBzZWUgW0Jhc2ljIFJ1bGUgQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvcmVwbGljYXRpb24tYWRkLWNvbmZpZy5odG1sI3JlcGxpY2F0aW9uLWNvbmZpZy1taW4tcnVsZS1jb25maWcpLiBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkZWxldGUgbWFya2VyIHJlcGxpY2F0aW9uLCBzZWUgW0Jhc2ljIFJ1bGUgQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvZGVsZXRlLW1hcmtlci1yZXBsaWNhdGlvbi5odG1sKS4gXG4gKiAgIElmIHlvdSBhcmUgdXNpbmcgYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoZSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCBBbWF6b24gUzMgaGFuZGxlcyByZXBsaWNhdGlvbiBvZiBkZWxldGUgbWFya2VycyBkaWZmZXJlbnRseS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQmFja3dhcmQgQ29tcGF0aWJpbGl0eV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvcmVwbGljYXRpb24tYWRkLWNvbmZpZy5odG1sI3JlcGxpY2F0aW9uLWJhY2t3YXJkLWNvbXBhdC1jb25zaWRlcmF0aW9ucykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlTWFya2VyUmVwbGljYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZXBsaWNhdGUgZGVsZXRlIG1hcmtlcnMuIERpc2FibGVkIGJ5IGRlZmF1bHQuXG4gKi9cblN0YXR1cz86IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXBsaWNhdGlvbiBkZXN0aW5hdGlvbiBhbmQgaXRzIGNvbmZpZ3VyYXRpb25zIGluY2x1ZGluZyBlbmFibGluZyB0aGUgUzMgUmVwbGljYXRpb24gVGltZSBDb250cm9sIChTMyBSVEMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uRGVzdGluYXRpb24ge1xuQWNjZXNzQ29udHJvbFRyYW5zbGF0aW9uPzogQWNjZXNzQ29udHJvbFRyYW5zbGF0aW9uXG4vKipcbiAqIERlc3RpbmF0aW9uIGJ1Y2tldCBvd25lciBhY2NvdW50IElELiBJbiBhIGNyb3NzLWFjY291bnQgc2NlbmFyaW8sIGlmIHlvdSBkaXJlY3QgQW1hem9uIFMzIHRvIGNoYW5nZSByZXBsaWNhIG93bmVyc2hpcCB0byB0aGUgQVdTLWFjY291bnQgdGhhdCBvd25zIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQgYnkgc3BlY2lmeWluZyB0aGUgYGBBY2Nlc3NDb250cm9sVHJhbnNsYXRpb25gYCBwcm9wZXJ0eSwgdGhpcyBpcyB0aGUgYWNjb3VudCBJRCBvZiB0aGUgZGVzdGluYXRpb24gYnVja2V0IG93bmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDcm9zcy1SZWdpb24gUmVwbGljYXRpb24gQWRkaXRpb25hbCBDb25maWd1cmF0aW9uOiBDaGFuZ2UgUmVwbGljYSBPd25lcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvY3JyLWNoYW5nZS1vd25lci5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBBY2Nlc3NDb250cm9sVHJhbnNsYXRpb25gYCBwcm9wZXJ0eSwgdGhlIGBgQWNjb3VudGBgIHByb3BlcnR5IGlzIHJlcXVpcmVkLlxuICovXG5BY2NvdW50Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYnVja2V0IHdoZXJlIHlvdSB3YW50IEFtYXpvbiBTMyB0byBzdG9yZSB0aGUgcmVzdWx0cy5cbiAqL1xuQnVja2V0OiBzdHJpbmdcbkVuY3J5cHRpb25Db25maWd1cmF0aW9uPzogRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb25cbk1ldHJpY3M/OiBNZXRyaWNzXG5SZXBsaWNhdGlvblRpbWU/OiBSZXBsaWNhdGlvblRpbWVcbi8qKlxuICogVGhlIHN0b3JhZ2UgY2xhc3MgdG8gdXNlIHdoZW4gcmVwbGljYXRpbmcgb2JqZWN0cywgc3VjaCBhcyBTMyBTdGFuZGFyZCBvciByZWR1Y2VkIHJlZHVuZGFuY3kuIEJ5IGRlZmF1bHQsIEFtYXpvbiBTMyB1c2VzIHRoZSBzdG9yYWdlIGNsYXNzIG9mIHRoZSBzb3VyY2Ugb2JqZWN0IHRvIGNyZWF0ZSB0aGUgb2JqZWN0IHJlcGxpY2EuIFxuICogIEZvciB2YWxpZCB2YWx1ZXMsIHNlZSB0aGUgYGBTdG9yYWdlQ2xhc3NgYCBlbGVtZW50IG9mIHRoZSBbUFVUIEJ1Y2tldCByZXBsaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVHJlcGxpY2F0aW9uLmh0bWwpIGFjdGlvbiBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuU3RvcmFnZUNsYXNzPzogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR0xBQ0lFUl9JUlwiIHwgXCJJTlRFTExJR0VOVF9USUVSSU5HXCIgfCBcIk9ORVpPTkVfSUFcIiB8IFwiUkVEVUNFRF9SRURVTkRBTkNZXCIgfCBcIlNUQU5EQVJEXCIgfCBcIlNUQU5EQVJEX0lBXCIpXG59XG4vKipcbiAqIFNwZWNpZnkgdGhpcyBvbmx5IGluIGEgY3Jvc3MtYWNjb3VudCBzY2VuYXJpbyAod2hlcmUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBidWNrZXQgb3duZXJzIGFyZSBub3QgdGhlIHNhbWUpLCBhbmQgeW91IHdhbnQgdG8gY2hhbmdlIHJlcGxpY2Egb3duZXJzaGlwIHRvIHRoZSBBV1MtYWNjb3VudCB0aGF0IG93bnMgdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldC4gSWYgdGhpcyBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCB0aGUgcmVwbGljYXMgYXJlIG93bmVkIGJ5IHNhbWUgQVdTLWFjY291bnQgdGhhdCBvd25zIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2Vzc0NvbnRyb2xUcmFuc2xhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgcmVwbGljYSBvd25lcnNoaXAuIEZvciBkZWZhdWx0IGFuZCB2YWxpZCB2YWx1ZXMsIHNlZSBbUFVUIGJ1Y2tldCByZXBsaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVHJlcGxpY2F0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5Pd25lcjogXCJEZXN0aW5hdGlvblwiXG59XG4vKipcbiAqIFNwZWNpZmllcyBlbmNyeXB0aW9uLXJlbGF0ZWQgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIElEIChLZXkgQVJOIG9yIEFsaWFzIEFSTikgb2YgdGhlIGN1c3RvbWVyIG1hbmFnZWQgQVdTIEtNUyBrZXkgc3RvcmVkIGluIEFXUyBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIChLTVMpIGZvciB0aGUgZGVzdGluYXRpb24gYnVja2V0LiBBbWF6b24gUzMgdXNlcyB0aGlzIGtleSB0byBlbmNyeXB0IHJlcGxpY2Egb2JqZWN0cy4gQW1hem9uIFMzIG9ubHkgc3VwcG9ydHMgc3ltbWV0cmljIGVuY3J5cHRpb24gS01TIGtleXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FzeW1tZXRyaWMga2V5cyBpbiBLTVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS8va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9zeW1tZXRyaWMtYXN5bW1ldHJpYy5odG1sKSBpbiB0aGUgKktleSBNYW5hZ2VtZW50IFNlcnZpY2UgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuUmVwbGljYUttc0tleUlEOiBzdHJpbmdcbn1cbi8qKlxuICogQSBjb250YWluZXIgc3BlY2lmeWluZyByZXBsaWNhdGlvbiBtZXRyaWNzLXJlbGF0ZWQgc2V0dGluZ3MgZW5hYmxpbmcgcmVwbGljYXRpb24gbWV0cmljcyBhbmQgZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY3Mge1xuRXZlbnRUaHJlc2hvbGQ/OiBSZXBsaWNhdGlvblRpbWVWYWx1ZVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgcmVwbGljYXRpb24gbWV0cmljcyBhcmUgZW5hYmxlZC5cbiAqL1xuU3RhdHVzOiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHNwZWNpZnlpbmcgdGhlIHRpbWUgdGhyZXNob2xkIGZvciBlbWl0dGluZyB0aGUgYGBzMzpSZXBsaWNhdGlvbjpPcGVyYXRpb25NaXNzZWRUaHJlc2hvbGRgYCBldmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblRpbWVWYWx1ZSB7XG4vKipcbiAqIENvbnRhaW5zIGFuIGludGVnZXIgc3BlY2lmeWluZyB0aW1lIGluIG1pbnV0ZXMuIFxuICogICBWYWxpZCB2YWx1ZTogMTVcbiAqL1xuTWludXRlczogbnVtYmVyXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHNwZWNpZnlpbmcgUzMgUmVwbGljYXRpb24gVGltZSBDb250cm9sIChTMyBSVEMpLCBpbmNsdWRpbmcgd2hldGhlciBTMyBSVEMgaXMgZW5hYmxlZCBhbmQgdGhlIHRpbWUgd2hlbiBhbGwgb2JqZWN0cyBhbmQgb3BlcmF0aW9ucyBvbiBvYmplY3RzIG11c3QgYmUgcmVwbGljYXRlZC4gTXVzdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBhIGBgTWV0cmljc2BgIGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uVGltZSB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSByZXBsaWNhdGlvbiB0aW1lIGlzIGVuYWJsZWQuXG4gKi9cblN0YXR1czogKFwiRGlzYWJsZWRcIiB8IFwiRW5hYmxlZFwiKVxuVGltZTogUmVwbGljYXRpb25UaW1lVmFsdWUxXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHNwZWNpZnlpbmcgdGhlIHRpbWUgYnkgd2hpY2ggcmVwbGljYXRpb24gc2hvdWxkIGJlIGNvbXBsZXRlIGZvciBhbGwgb2JqZWN0cyBhbmQgb3BlcmF0aW9ucyBvbiBvYmplY3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uVGltZVZhbHVlMSB7XG4vKipcbiAqIENvbnRhaW5zIGFuIGludGVnZXIgc3BlY2lmeWluZyB0aW1lIGluIG1pbnV0ZXMuIFxuICogICBWYWxpZCB2YWx1ZTogMTVcbiAqL1xuTWludXRlczogbnVtYmVyXG59XG4vKipcbiAqIEEgZmlsdGVyIHRoYXQgaWRlbnRpZmllcyB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJlcGxpY2F0aW9uIHJ1bGUgYXBwbGllcy4gQSBgYEZpbHRlcmBgIG11c3Qgc3BlY2lmeSBleGFjdGx5IG9uZSBgYFByZWZpeGBgLCBgYFRhZ0ZpbHRlcmBgLCBvciBhbiBgYEFuZGBgIGNoaWxkIGVsZW1lbnQuIFRoZSB1c2Ugb2YgdGhlIGZpbHRlciBmaWVsZCBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGEgVjIgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbi4gVGhpcyBmaWVsZCBpc24ndCBzdXBwb3J0ZWQgaW4gYSBWMSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICogICBWMSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIG9ubHkgc3VwcG9ydHMgZmlsdGVyaW5nIGJ5IGtleSBwcmVmaXguIFRvIGZpbHRlciB1c2luZyBhIFYxIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIGFkZCB0aGUgYGBQcmVmaXhgYCBkaXJlY3RseSBhcyBhIGNoaWxkIGVsZW1lbnQgb2YgdGhlIGBgUnVsZWBgIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25SdWxlRmlsdGVyIHtcbkFuZD86IFJlcGxpY2F0aW9uUnVsZUFuZE9wZXJhdG9yXG4vKipcbiAqIEFuIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcblRhZ0ZpbHRlcj86IFRhZ0ZpbHRlcjFcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIHNwZWNpZnlpbmcgcnVsZSBmaWx0ZXJzLiBUaGUgZmlsdGVycyBkZXRlcm1pbmUgdGhlIHN1YnNldCBvZiBvYmplY3RzIHRvIHdoaWNoIHRoZSBydWxlIGFwcGxpZXMuIFRoaXMgZWxlbWVudCBpcyByZXF1aXJlZCBvbmx5IGlmIHlvdSBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgZmlsdGVyLiBGb3IgZXhhbXBsZTogXG4gKiAgICsgIElmIHlvdSBzcGVjaWZ5IGJvdGggYSBgYFByZWZpeGBgIGFuZCBhIGBgVGFnRmlsdGVyYGAsIHdyYXAgdGhlc2UgZmlsdGVycyBpbiBhbiBgYEFuZGBgIHRhZy5cbiAqICAgKyAgSWYgeW91IHNwZWNpZnkgYSBmaWx0ZXIgYmFzZWQgb24gbXVsdGlwbGUgdGFncywgd3JhcCB0aGUgYGBUYWdGaWx0ZXJgYCBlbGVtZW50cyBpbiBhbiBgYEFuZGBgIHRhZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblJ1bGVBbmRPcGVyYXRvciB7XG4vKipcbiAqIEFuIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgb2YgdGFncyBjb250YWluaW5nIGtleSBhbmQgdmFsdWUgcGFpcnMuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGFncyB0byB1c2UgdG8gaWRlbnRpZnkgYSBzdWJzZXQgb2Ygb2JqZWN0cyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ2F0ZWdvcml6aW5nIHlvdXIgc3RvcmFnZSB1c2luZyB0YWdzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3QtdGFnZ2luZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTaW1wbGUgU3RvcmFnZSBTZXJ2aWNlIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0ZpbHRlcjEge1xuLyoqXG4gKiBUaGUgdGFnIHZhbHVlLlxuICovXG5WYWx1ZTogc3RyaW5nXG4vKipcbiAqIFRoZSB0YWcga2V5LlxuICovXG5LZXk6IHN0cmluZ1xufVxuLyoqXG4gKiBBIGNvbnRhaW5lciB0aGF0IGRlc2NyaWJlcyBhZGRpdGlvbmFsIGZpbHRlcnMgZm9yIGlkZW50aWZ5aW5nIHRoZSBzb3VyY2Ugb2JqZWN0cyB0aGF0IHlvdSB3YW50IHRvIHJlcGxpY2F0ZS4gWW91IGNhbiBjaG9vc2UgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHJlcGxpY2F0aW9uIG9mIHRoZXNlIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0aW9uQ3JpdGVyaWEge1xuUmVwbGljYU1vZGlmaWNhdGlvbnM/OiBSZXBsaWNhTW9kaWZpY2F0aW9uc1xuU3NlS21zRW5jcnlwdGVkT2JqZWN0cz86IFNzZUttc0VuY3J5cHRlZE9iamVjdHNcbn1cbi8qKlxuICogQSBmaWx0ZXIgdGhhdCB5b3UgY2FuIHNwZWNpZnkgZm9yIHNlbGVjdGlvbiBmb3IgbW9kaWZpY2F0aW9ucyBvbiByZXBsaWNhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhTW9kaWZpY2F0aW9ucyB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyByZXBsaWNhdGVzIG1vZGlmaWNhdGlvbnMgb24gcmVwbGljYXMuXG4gKiAgICpBbGxvd2VkIHZhbHVlcyo6IGBgRW5hYmxlZGBgIHwgYGBEaXNhYmxlZGBgXG4gKi9cblN0YXR1czogKFwiRW5hYmxlZFwiIHwgXCJEaXNhYmxlZFwiKVxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3IgZmlsdGVyIGluZm9ybWF0aW9uIGZvciB0aGUgc2VsZWN0aW9uIG9mIEFtYXpvbiBTMyBvYmplY3RzIGVuY3J5cHRlZCB3aXRoIEFXUyBLTVMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3NlS21zRW5jcnlwdGVkT2JqZWN0cyB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyByZXBsaWNhdGVzIG9iamVjdHMgY3JlYXRlZCB3aXRoIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdXNpbmcgYW4gQVdTIEtNUyBrZXkgc3RvcmVkIGluIEFXUyBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbn1cbi8qKlxuICogQSBjb250YWluZXIgb2YgYSBrZXkgdmFsdWUgbmFtZSBwYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4vKipcbiAqIE5hbWUgb2YgdGhlIG9iamVjdCBrZXkuXG4gKi9cbktleTogc3RyaW5nXG4vKipcbiAqIFZhbHVlIG9mIHRoZSB0YWcuXG4gKi9cblZhbHVlOiBzdHJpbmdcbn1cbi8qKlxuICogRW5hYmxlcyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBhbGwgb2JqZWN0cyBpbiB0aGlzIGJ1Y2tldC4gWW91IG1pZ2h0IGVuYWJsZSB2ZXJzaW9uaW5nIHRvIHByZXZlbnQgb2JqZWN0cyBmcm9tIGJlaW5nIGRlbGV0ZWQgb3Igb3ZlcndyaXR0ZW4gYnkgbWlzdGFrZSBvciB0byBhcmNoaXZlIG9iamVjdHMgc28gdGhhdCB5b3UgY2FuIHJldHJpZXZlIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoZW0uXG4gKiAgIFdoZW4geW91IGVuYWJsZSB2ZXJzaW9uaW5nIG9uIGEgYnVja2V0IGZvciB0aGUgZmlyc3QgdGltZSwgaXQgbWlnaHQgdGFrZSBhIHNob3J0IGFtb3VudCBvZiB0aW1lIGZvciB0aGUgY2hhbmdlIHRvIGJlIGZ1bGx5IHByb3BhZ2F0ZWQuIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB3YWl0IGZvciAxNSBtaW51dGVzIGFmdGVyIGVuYWJsaW5nIHZlcnNpb25pbmcgYmVmb3JlIGlzc3Vpbmcgd3JpdGUgb3BlcmF0aW9ucyAoYGBQVVRgYCBvciBgYERFTEVURWBgKSBvbiBvYmplY3RzIGluIHRoZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbmluZ0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgdmVyc2lvbmluZyBzdGF0ZSBvZiB0aGUgYnVja2V0LlxuICovXG5TdGF0dXM6IChcIkVuYWJsZWRcIiB8IFwiU3VzcGVuZGVkXCIpXG59XG4vKipcbiAqIEluZm9ybWF0aW9uIHVzZWQgdG8gY29uZmlndXJlIHRoZSBidWNrZXQgYXMgYSBzdGF0aWMgd2Vic2l0ZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbSG9zdGluZyBXZWJzaXRlcyBvbiBBbWF6b24gUzNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L1dlYnNpdGVIb3N0aW5nLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYnNpdGVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGVycm9yIGRvY3VtZW50IGZvciB0aGUgd2Vic2l0ZS5cbiAqL1xuRXJyb3JEb2N1bWVudD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgaW5kZXggZG9jdW1lbnQgZm9yIHRoZSB3ZWJzaXRlLlxuICovXG5JbmRleERvY3VtZW50Pzogc3RyaW5nXG4vKipcbiAqIFJ1bGVzIHRoYXQgZGVmaW5lIHdoZW4gYSByZWRpcmVjdCBpcyBhcHBsaWVkIGFuZCB0aGUgcmVkaXJlY3QgYmVoYXZpb3IuXG4gKi9cblJvdXRpbmdSdWxlcz86IFJvdXRpbmdSdWxlW11cblJlZGlyZWN0QWxsUmVxdWVzdHNUbz86IFJlZGlyZWN0QWxsUmVxdWVzdHNUb1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHJlZGlyZWN0IGJlaGF2aW9yIGFuZCB3aGVuIGEgcmVkaXJlY3QgaXMgYXBwbGllZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcm91dGluZyBydWxlcywgc2VlIFtDb25maWd1cmluZyBhZHZhbmNlZCBjb25kaXRpb25hbCByZWRpcmVjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2hvdy10by1wYWdlLXJlZGlyZWN0Lmh0bWwjYWR2YW5jZWQtY29uZGl0aW9uYWwtcmVkaXJlY3RzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5nUnVsZSB7XG5SZWRpcmVjdFJ1bGU6IFJlZGlyZWN0UnVsZVxuUm91dGluZ1J1bGVDb25kaXRpb24/OiBSb3V0aW5nUnVsZUNvbmRpdGlvblxufVxuLyoqXG4gKiBDb250YWluZXIgZm9yIHJlZGlyZWN0IGluZm9ybWF0aW9uLiBZb3UgY2FuIHJlZGlyZWN0IHJlcXVlc3RzIHRvIGFub3RoZXIgaG9zdCwgdG8gYW5vdGhlciBwYWdlLCBvciB3aXRoIGFub3RoZXIgcHJvdG9jb2wuIEluIHRoZSBldmVudCBvZiBhbiBlcnJvciwgeW91IGNhbiBzcGVjaWZ5IGEgZGlmZmVyZW50IGVycm9yIGNvZGUgdG8gcmV0dXJuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0UnVsZSB7XG4vKipcbiAqIFRoZSBob3N0IG5hbWUgdG8gdXNlIGluIHRoZSByZWRpcmVjdCByZXF1ZXN0LlxuICovXG5Ib3N0TmFtZT86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSFRUUCByZWRpcmVjdCBjb2RlIHRvIHVzZSBvbiB0aGUgcmVzcG9uc2UuIE5vdCByZXF1aXJlZCBpZiBvbmUgb2YgdGhlIHNpYmxpbmdzIGlzIHByZXNlbnQuXG4gKi9cbkh0dHBSZWRpcmVjdENvZGU/OiBzdHJpbmdcbi8qKlxuICogUHJvdG9jb2wgdG8gdXNlIHdoZW4gcmVkaXJlY3RpbmcgcmVxdWVzdHMuIFRoZSBkZWZhdWx0IGlzIHRoZSBwcm90b2NvbCB0aGF0IGlzIHVzZWQgaW4gdGhlIG9yaWdpbmFsIHJlcXVlc3QuXG4gKi9cblByb3RvY29sPzogKFwiaHR0cFwiIHwgXCJodHRwc1wiKVxuLyoqXG4gKiBUaGUgb2JqZWN0IGtleSBwcmVmaXggdG8gdXNlIGluIHRoZSByZWRpcmVjdCByZXF1ZXN0LiBGb3IgZXhhbXBsZSwgdG8gcmVkaXJlY3QgcmVxdWVzdHMgZm9yIGFsbCBwYWdlcyB3aXRoIHByZWZpeCBgYGRvY3MvYGAgKG9iamVjdHMgaW4gdGhlIGBgZG9jcy9gYCBmb2xkZXIpIHRvIGBgZG9jdW1lbnRzL2BgLCB5b3UgY2FuIHNldCBhIGNvbmRpdGlvbiBibG9jayB3aXRoIGBgS2V5UHJlZml4RXF1YWxzYGAgc2V0IHRvIGBgZG9jcy9gYCBhbmQgaW4gdGhlIFJlZGlyZWN0IHNldCBgYFJlcGxhY2VLZXlQcmVmaXhXaXRoYGAgdG8gYGAvZG9jdW1lbnRzYGAuIE5vdCByZXF1aXJlZCBpZiBvbmUgb2YgdGhlIHNpYmxpbmdzIGlzIHByZXNlbnQuIENhbiBiZSBwcmVzZW50IG9ubHkgaWYgYGBSZXBsYWNlS2V5V2l0aGBgIGlzIG5vdCBwcm92aWRlZC5cbiAqICAgUmVwbGFjZW1lbnQgbXVzdCBiZSBtYWRlIGZvciBvYmplY3Qga2V5cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyBjYXJyaWFnZSByZXR1cm5zKSB3aGVuIHVzaW5nIFhNTCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbWE1MIHJlbGF0ZWQgb2JqZWN0IGtleSBjb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LWtleXMuaHRtbCNvYmplY3Qta2V5LXhtbC1yZWxhdGVkLWNvbnN0cmFpbnRzKS5cbiAqL1xuUmVwbGFjZUtleVByZWZpeFdpdGg/OiBzdHJpbmdcbi8qKlxuICogVGhlIHNwZWNpZmljIG9iamVjdCBrZXkgdG8gdXNlIGluIHRoZSByZWRpcmVjdCByZXF1ZXN0LiBGb3IgZXhhbXBsZSwgcmVkaXJlY3QgcmVxdWVzdCB0byBgYGVycm9yLmh0bWxgYC4gTm90IHJlcXVpcmVkIGlmIG9uZSBvZiB0aGUgc2libGluZ3MgaXMgcHJlc2VudC4gQ2FuIGJlIHByZXNlbnQgb25seSBpZiBgYFJlcGxhY2VLZXlQcmVmaXhXaXRoYGAgaXMgbm90IHByb3ZpZGVkLlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5SZXBsYWNlS2V5V2l0aD86IHN0cmluZ1xufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3IgZGVzY3JpYmluZyBhIGNvbmRpdGlvbiB0aGF0IG11c3QgYmUgbWV0IGZvciB0aGUgc3BlY2lmaWVkIHJlZGlyZWN0IHRvIGFwcGx5LiBGb3IgZXhhbXBsZSwgMS4gSWYgcmVxdWVzdCBpcyBmb3IgcGFnZXMgaW4gdGhlIGBgL2RvY3NgYCBmb2xkZXIsIHJlZGlyZWN0IHRvIHRoZSBgYC9kb2N1bWVudHNgYCBmb2xkZXIuIDIuIElmIHJlcXVlc3QgcmVzdWx0cyBpbiBIVFRQIGVycm9yIDR4eCwgcmVkaXJlY3QgcmVxdWVzdCB0byBhbm90aGVyIGhvc3Qgd2hlcmUgeW91IG1pZ2h0IHByb2Nlc3MgdGhlIGVycm9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRpbmdSdWxlQ29uZGl0aW9uIHtcbi8qKlxuICogVGhlIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggd2hlbiB0aGUgcmVkaXJlY3QgaXMgYXBwbGllZC4gRm9yIGV4YW1wbGUsIHRvIHJlZGlyZWN0IHJlcXVlc3RzIGZvciBgYEV4YW1wbGVQYWdlLmh0bWxgYCwgdGhlIGtleSBwcmVmaXggd2lsbCBiZSBgYEV4YW1wbGVQYWdlLmh0bWxgYC4gVG8gcmVkaXJlY3QgcmVxdWVzdCBmb3IgYWxsIHBhZ2VzIHdpdGggdGhlIHByZWZpeCBgYGRvY3MvYGAsIHRoZSBrZXkgcHJlZml4IHdpbGwgYmUgYGAvZG9jc2BgLCB3aGljaCBpZGVudGlmaWVzIGFsbCBvYmplY3RzIGluIHRoZSBkb2NzLyBmb2xkZXIuXG4gKiAgUmVxdWlyZWQgd2hlbiB0aGUgcGFyZW50IGVsZW1lbnQgYGBDb25kaXRpb25gYCBpcyBzcGVjaWZpZWQgYW5kIHNpYmxpbmcgYGBIdHRwRXJyb3JDb2RlUmV0dXJuZWRFcXVhbHNgYCBpcyBub3Qgc3BlY2lmaWVkLiBJZiBib3RoIGNvbmRpdGlvbnMgYXJlIHNwZWNpZmllZCwgYm90aCBtdXN0IGJlIHRydWUgZm9yIHRoZSByZWRpcmVjdCB0byBiZSBhcHBsaWVkLlxuICovXG5LZXlQcmVmaXhFcXVhbHM/OiBzdHJpbmdcbi8qKlxuICogVGhlIEhUVFAgZXJyb3IgY29kZSB3aGVuIHRoZSByZWRpcmVjdCBpcyBhcHBsaWVkLiBJbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IsIGlmIHRoZSBlcnJvciBjb2RlIGVxdWFscyB0aGlzIHZhbHVlLCB0aGVuIHRoZSBzcGVjaWZpZWQgcmVkaXJlY3QgaXMgYXBwbGllZC5cbiAqICBSZXF1aXJlZCB3aGVuIHBhcmVudCBlbGVtZW50IGBgQ29uZGl0aW9uYGAgaXMgc3BlY2lmaWVkIGFuZCBzaWJsaW5nIGBgS2V5UHJlZml4RXF1YWxzYGAgaXMgbm90IHNwZWNpZmllZC4gSWYgYm90aCBhcmUgc3BlY2lmaWVkLCB0aGVuIGJvdGggbXVzdCBiZSB0cnVlIGZvciB0aGUgcmVkaXJlY3QgdG8gYmUgYXBwbGllZC5cbiAqL1xuSHR0cEVycm9yQ29kZVJldHVybmVkRXF1YWxzPzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSByZWRpcmVjdCBiZWhhdmlvciBmb3IgZXZlcnkgcmVxdWVzdCB0byB0aGlzIGJ1Y2tldCdzIHdlYnNpdGUgZW5kcG9pbnQuXG4gKiAgIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIHlvdSBjYW4ndCBzcGVjaWZ5IGFueSBvdGhlciBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdEFsbFJlcXVlc3RzVG8ge1xuLyoqXG4gKiBOYW1lIG9mIHRoZSBob3N0IHdoZXJlIHJlcXVlc3RzIGFyZSByZWRpcmVjdGVkLlxuICovXG5Ib3N0TmFtZTogc3RyaW5nXG4vKipcbiAqIFByb3RvY29sIHRvIHVzZSB3aGVuIHJlZGlyZWN0aW5nIHJlcXVlc3RzLiBUaGUgZGVmYXVsdCBpcyB0aGUgcHJvdG9jb2wgdGhhdCBpcyB1c2VkIGluIHRoZSBvcmlnaW5hbCByZXF1ZXN0LlxuICovXG5Qcm90b2NvbD86IChcImh0dHBcIiB8IFwiaHR0cHNcIilcbn1cbiJdfQ==
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXMzLWJ1Y2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1zMy1idWNrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQW1hem9uIFMzIGtleSBmb3JtYXQgZm9yIGxvZyBvYmplY3RzLiBPbmx5IG9uZSBmb3JtYXQsIGVpdGhlciBQYXJ0aXRpb25lZFByZWZpeCBvciBTaW1wbGVQcmVmaXgsIGlzIGFsbG93ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFRhcmdldE9iamVjdEtleUZvcm1hdCA9ICh7XG4vKipcbiAqIFRoaXMgZm9ybWF0IGRlZmF1bHRzIHRoZSBwcmVmaXggdG8gdGhlIGdpdmVuIGxvZyBmaWxlIHByZWZpeCBmb3IgZGVsaXZlcmluZyBzZXJ2ZXIgYWNjZXNzIGxvZyBmaWxlLlxuICovXG5TaW1wbGVQcmVmaXg6IHtcblxufVxufSB8IHtcblBhcnRpdGlvbmVkUHJlZml4OiBQYXJ0aXRpb25lZFByZWZpeFxufSlcblxuLyoqXG4gKiBUaGUgYGBBV1M6OlMzOjpCdWNrZXRgYCByZXNvdXJjZSBjcmVhdGVzIGFuIEFtYXpvbiBTMyBidWNrZXQgaW4gdGhlIHNhbWUgQVdTIFJlZ2lvbiB3aGVyZSB5b3UgY3JlYXRlIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gKiAgVG8gY29udHJvbCBob3cgQVdTIENsb3VkRm9ybWF0aW9uIGhhbmRsZXMgdGhlIGJ1Y2tldCB3aGVuIHRoZSBzdGFjayBpcyBkZWxldGVkLCB5b3UgY2FuIHNldCBhIGRlbGV0aW9uIHBvbGljeSBmb3IgeW91ciBidWNrZXQuIFlvdSBjYW4gY2hvb3NlIHRvICpyZXRhaW4qIHRoZSBidWNrZXQgb3IgdG8gKmRlbGV0ZSogdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbRGVsZXRpb25Qb2xpY3kgQXR0cmlidXRlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtYXR0cmlidXRlLWRlbGV0aW9ucG9saWN5Lmh0bWwpLlxuICogICBZb3UgY2FuIG9ubHkgZGVsZXRlIGVtcHR5IGJ1Y2tldHMuIERlbGV0aW9uIGZhaWxzIGZvciBidWNrZXRzIHRoYXQgaGF2ZSBjb250ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX1MzX0JVQ0tFVCB7XG5BY2NlbGVyYXRlQ29uZmlndXJhdGlvbj86IEFjY2VsZXJhdGVDb25maWd1cmF0aW9uXG4vKipcbiAqIFRoaXMgaXMgYSBsZWdhY3kgcHJvcGVydHksIGFuZCBpdCBpcyBub3QgcmVjb21tZW5kZWQgZm9yIG1vc3QgdXNlIGNhc2VzLiBBIG1ham9yaXR5IG9mIG1vZGVybiB1c2UgY2FzZXMgaW4gQW1hem9uIFMzIG5vIGxvbmdlciByZXF1aXJlIHRoZSB1c2Ugb2YgQUNMcywgYW5kIHdlIHJlY29tbWVuZCB0aGF0IHlvdSBrZWVwIEFDTHMgZGlzYWJsZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbnRyb2xsaW5nIG9iamVjdCBvd25lcnNoaXBdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS8vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9hYm91dC1vYmplY3Qtb3duZXJzaGlwLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICogICBBIGNhbm5lZCBhY2Nlc3MgY29udHJvbCBsaXN0IChBQ0wpIHRoYXQgZ3JhbnRzIHByZWRlZmluZWQgcGVybWlzc2lvbnMgdG8gdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY2FubmVkIEFDTHMsIHNlZSBbQ2FubmVkIEFDTF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYWNsLW92ZXJ2aWV3Lmh0bWwjY2FubmVkLWFjbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKiAgIFMzIGJ1Y2tldHMgYXJlIGNyZWF0ZWQgd2l0aCBBQ0xzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRoZXJlZm9yZSwgdW5sZXNzIHlvdSBleHBsaWNpdGx5IHNldCB0aGUgW0FXUzo6UzM6Ok93bmVyc2hpcENvbnRyb2xzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtczMtYnVja2V0LW93bmVyc2hpcGNvbnRyb2xzLmh0bWwpIHByb3BlcnR5IHRvIGVuYWJsZSBBQ0xzLCB5b3VyIHJlc291cmNlIHdpbGwgZmFpbCB0byBkZXBsb3kgd2l0aCBhbnkgdmFsdWUgb3RoZXIgdGhhbiBQcml2YXRlLiBVc2UgY2FzZXMgcmVxdWlyaW5nIEFDTHMgYXJlIHVuY29tbW9uLlxuICogICBUaGUgbWFqb3JpdHkgb2YgYWNjZXNzIGNvbnRyb2wgY29uZmlndXJhdGlvbnMgY2FuIGJlIHN1Y2Nlc3NmdWxseSBhbmQgbW9yZSBlYXNpbHkgYWNoaWV2ZWQgd2l0aCBidWNrZXQgcG9saWNpZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FXUzo6UzM6OkJ1Y2tldFBvbGljeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLXBvbGljeS5odG1sKS4gRm9yIGV4YW1wbGVzIG9mIGNvbW1vbiBwb2xpY3kgY29uZmlndXJhdGlvbnMsIGluY2x1ZGluZyBTMyBTZXJ2ZXIgQWNjZXNzIExvZ3MgYnVja2V0cyBhbmQgbW9yZSwgc2VlIFtCdWNrZXQgcG9saWN5IGV4YW1wbGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9leGFtcGxlLWJ1Y2tldC1wb2xpY2llcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuQWNjZXNzQ29udHJvbD86IChcIkF1dGhlbnRpY2F0ZWRSZWFkXCIgfCBcIkF3c0V4ZWNSZWFkXCIgfCBcIkJ1Y2tldE93bmVyRnVsbENvbnRyb2xcIiB8IFwiQnVja2V0T3duZXJSZWFkXCIgfCBcIkxvZ0RlbGl2ZXJ5V3JpdGVcIiB8IFwiUHJpdmF0ZVwiIHwgXCJQdWJsaWNSZWFkXCIgfCBcIlB1YmxpY1JlYWRXcml0ZVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGFueSBhbmFseXNlcyBmb3IgdGhlIGFuYWx5dGljcyBmaWx0ZXIgb2YgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuQW5hbHl0aWNzQ29uZmlndXJhdGlvbnM/OiBBbmFseXRpY3NDb25maWd1cmF0aW9uW11cbkJ1Y2tldEVuY3J5cHRpb24/OiBCdWNrZXRFbmNyeXB0aW9uXG4vKipcbiAqIEEgbmFtZSBmb3IgdGhlIGJ1Y2tldC4gSWYgeW91IGRvbid0IHNwZWNpZnkgYSBuYW1lLCBBV1MgQ2xvdWRGb3JtYXRpb24gZ2VuZXJhdGVzIGEgdW5pcXVlIElEIGFuZCB1c2VzIHRoYXQgSUQgZm9yIHRoZSBidWNrZXQgbmFtZS4gVGhlIGJ1Y2tldCBuYW1lIG11c3QgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBwZXJpb2RzICguKSwgYW5kIGRhc2hlcyAoLSkgYW5kIG11c3QgZm9sbG93IFtBbWF6b24gUzMgYnVja2V0IHJlc3RyaWN0aW9ucyBhbmQgbGltaXRhdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L0J1Y2tldFJlc3RyaWN0aW9ucy5odG1sKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUnVsZXMgZm9yIG5hbWluZyBBbWF6b24gUzMgYnVja2V0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvYnVja2V0bmFtaW5ncnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouIFxuICogICBJZiB5b3Ugc3BlY2lmeSBhIG5hbWUsIHlvdSBjYW4ndCBwZXJmb3JtIHVwZGF0ZXMgdGhhdCByZXF1aXJlIHJlcGxhY2VtZW50IG9mIHRoaXMgcmVzb3VyY2UuIFlvdSBjYW4gcGVyZm9ybSB1cGRhdGVzIHRoYXQgcmVxdWlyZSBubyBvciBzb21lIGludGVycnVwdGlvbi4gSWYgeW91IG5lZWQgdG8gcmVwbGFjZSB0aGUgcmVzb3VyY2UsIHNwZWNpZnkgYSBuZXcgbmFtZS5cbiAqL1xuQnVja2V0TmFtZT86IHN0cmluZ1xuQ29yc0NvbmZpZ3VyYXRpb24/OiBDb3JzQ29uZmlndXJhdGlvblxuLyoqXG4gKiBEZWZpbmVzIGhvdyBBbWF6b24gUzMgaGFuZGxlcyBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UuXG4gKi9cbkludGVsbGlnZW50VGllcmluZ0NvbmZpZ3VyYXRpb25zPzogSW50ZWxsaWdlbnRUaWVyaW5nQ29uZmlndXJhdGlvbltdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgaW52ZW50b3J5IGNvbmZpZ3VyYXRpb24gZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dFVCBCdWNrZXQgaW52ZW50b3J5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0R0VUSW52ZW50b3J5Q29uZmlnLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5JbnZlbnRvcnlDb25maWd1cmF0aW9ucz86IEludmVudG9yeUNvbmZpZ3VyYXRpb25bXVxuTGlmZWN5Y2xlQ29uZmlndXJhdGlvbj86IExpZmVjeWNsZUNvbmZpZ3VyYXRpb25cbkxvZ2dpbmdDb25maWd1cmF0aW9uPzogTG9nZ2luZ0NvbmZpZ3VyYXRpb25cbi8qKlxuICogU3BlY2lmaWVzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZvciB0aGUgQ2xvdWRXYXRjaCByZXF1ZXN0IG1ldHJpY3MgKHNwZWNpZmllZCBieSB0aGUgbWV0cmljcyBjb25maWd1cmF0aW9uIElEKSBmcm9tIGFuIEFtYXpvbiBTMyBidWNrZXQuIElmIHlvdSdyZSB1cGRhdGluZyBhbiBleGlzdGluZyBtZXRyaWNzIGNvbmZpZ3VyYXRpb24sIG5vdGUgdGhhdCB0aGlzIGlzIGEgZnVsbCByZXBsYWNlbWVudCBvZiB0aGUgZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLiBJZiB5b3UgZG9uJ3QgaW5jbHVkZSB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8ga2VlcCwgdGhleSBhcmUgZXJhc2VkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtQdXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVE1ldHJpY0NvbmZpZ3VyYXRpb24uaHRtbCkuXG4gKi9cbk1ldHJpY3NDb25maWd1cmF0aW9ucz86IE1ldHJpY3NDb25maWd1cmF0aW9uW11cbk1ldGFkYXRhVGFibGVDb25maWd1cmF0aW9uPzogTWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb25cbk1ldGFkYXRhQ29uZmlndXJhdGlvbj86IE1ldGFkYXRhQ29uZmlndXJhdGlvblxuTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbj86IE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25cbk9iamVjdExvY2tDb25maWd1cmF0aW9uPzogT2JqZWN0TG9ja0NvbmZpZ3VyYXRpb25cbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBidWNrZXQgaGFzIGFuIE9iamVjdCBMb2NrIGNvbmZpZ3VyYXRpb24gZW5hYmxlZC4gRW5hYmxlIGBgT2JqZWN0TG9ja0VuYWJsZWRgYCB3aGVuIHlvdSBhcHBseSBgYE9iamVjdExvY2tDb25maWd1cmF0aW9uYGAgdG8gYSBidWNrZXQuXG4gKi9cbk9iamVjdExvY2tFbmFibGVkPzogYm9vbGVhblxuT3duZXJzaGlwQ29udHJvbHM/OiBPd25lcnNoaXBDb250cm9sc1xuUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uPzogUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uXG5SZXBsaWNhdGlvbkNvbmZpZ3VyYXRpb24/OiBSZXBsaWNhdGlvbkNvbmZpZ3VyYXRpb25cbi8qKlxuICogQW4gYXJiaXRyYXJ5IHNldCBvZiB0YWdzIChrZXktdmFsdWUgcGFpcnMpIGZvciB0aGlzIFMzIGJ1Y2tldC5cbiAqL1xuVGFncz86IFRhZ1tdXG5WZXJzaW9uaW5nQ29uZmlndXJhdGlvbj86IFZlcnNpb25pbmdDb25maWd1cmF0aW9uXG5XZWJzaXRlQ29uZmlndXJhdGlvbj86IFdlYnNpdGVDb25maWd1cmF0aW9uXG5Bcm4/OiBzdHJpbmdcbkRvbWFpbk5hbWU/OiBzdHJpbmdcbkR1YWxTdGFja0RvbWFpbk5hbWU/OiBzdHJpbmdcblJlZ2lvbmFsRG9tYWluTmFtZT86IHN0cmluZ1xuV2Vic2l0ZVVSTD86IHN0cmluZ1xufVxuLyoqXG4gKiBDb25maWd1cmVzIHRoZSB0cmFuc2ZlciBhY2NlbGVyYXRpb24gc3RhdGUgZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBTMyBUcmFuc2ZlciBBY2NlbGVyYXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3RyYW5zZmVyLWFjY2VsZXJhdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2NlbGVyYXRlQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgdHJhbnNmZXIgYWNjZWxlcmF0aW9uIHN0YXR1cyBvZiB0aGUgYnVja2V0LlxuICovXG5BY2NlbGVyYXRpb25TdGF0dXM6IChcIkVuYWJsZWRcIiB8IFwiU3VzcGVuZGVkXCIpXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY29uZmlndXJhdGlvbiBhbmQgYW55IGFuYWx5c2VzIGZvciB0aGUgYW5hbHl0aWNzIGZpbHRlciBvZiBhbiBBbWF6b24gUzMgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5dGljc0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgdGFncyB0byB1c2Ugd2hlbiBldmFsdWF0aW5nIGFuIGFuYWx5dGljcyBmaWx0ZXIuXG4gKiAgVGhlIGFuYWx5dGljcyBvbmx5IGluY2x1ZGVzIG9iamVjdHMgdGhhdCBtZWV0IHRoZSBmaWx0ZXIncyBjcml0ZXJpYS4gSWYgbm8gZmlsdGVyIGlzIHNwZWNpZmllZCwgYWxsIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgYnVja2V0IGFyZSBpbmNsdWRlZCBpbiB0aGUgYW5hbHlzaXMuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxuU3RvcmFnZUNsYXNzQW5hbHlzaXM6IFN0b3JhZ2VDbGFzc0FuYWx5c2lzXG4vKipcbiAqIFRoZSBJRCB0aGF0IGlkZW50aWZpZXMgdGhlIGFuYWx5dGljcyBjb25maWd1cmF0aW9uLlxuICovXG5JZDogc3RyaW5nXG4vKipcbiAqIFRoZSBwcmVmaXggdGhhdCBhbiBvYmplY3QgbXVzdCBoYXZlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhbmFseXRpY3MgcmVzdWx0cy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0YWdzIHRvIHVzZSB0byBpZGVudGlmeSBhIHN1YnNldCBvZiBvYmplY3RzIGZvciBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDYXRlZ29yaXppbmcgeW91ciBzdG9yYWdlIHVzaW5nIHRhZ3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC10YWdnaW5nLmh0bWwpIGluIHRoZSAqQW1hem9uIFNpbXBsZSBTdG9yYWdlIFNlcnZpY2UgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnRmlsdGVyIHtcbi8qKlxuICogVGhlIHRhZyB2YWx1ZS5cbiAqL1xuVmFsdWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGFnIGtleS5cbiAqL1xuS2V5OiBzdHJpbmdcbn1cbi8qKlxuICogQ29udGFpbnMgZGF0YSByZWxhdGVkIHRvIGFjY2VzcyBwYXR0ZXJucyB0byBiZSBjb2xsZWN0ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHRvIGFuYWx5emUgdGhlIHRyYWRlb2ZmcyBiZXR3ZWVuIGRpZmZlcmVudCBzdG9yYWdlIGNsYXNzZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUNsYXNzQW5hbHlzaXMge1xuRGF0YUV4cG9ydD86IERhdGFFeHBvcnRcbn1cbi8qKlxuICogU3BlY2lmaWVzIGhvdyBkYXRhIHJlbGF0ZWQgdG8gdGhlIHN0b3JhZ2UgY2xhc3MgYW5hbHlzaXMgZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQgc2hvdWxkIGJlIGV4cG9ydGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFFeHBvcnQge1xuRGVzdGluYXRpb246IERlc3RpbmF0aW9uXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBvdXRwdXQgc2NoZW1hIHRvIHVzZSB3aGVuIGV4cG9ydGluZyBkYXRhLiBNdXN0IGJlIGBgVl8xYGAuXG4gKi9cbk91dHB1dFNjaGVtYVZlcnNpb246IFwiVl8xXCJcbn1cbi8qKlxuICogVGhlIHBsYWNlIHRvIHN0b3JlIHRoZSBkYXRhIGZvciBhbiBhbmFseXNpcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0aW5hdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYnVja2V0IHRvIHdoaWNoIGRhdGEgaXMgZXhwb3J0ZWQuXG4gKi9cbkJ1Y2tldEFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBhY2NvdW50IElEIHRoYXQgb3ducyB0aGUgZGVzdGluYXRpb24gUzMgYnVja2V0LiBJZiBubyBhY2NvdW50IElEIGlzIHByb3ZpZGVkLCB0aGUgb3duZXIgaXMgbm90IHZhbGlkYXRlZCBiZWZvcmUgZXhwb3J0aW5nIGRhdGEuXG4gKiAgICBBbHRob3VnaCB0aGlzIHZhbHVlIGlzIG9wdGlvbmFsLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3Ugc2V0IGl0IHRvIGhlbHAgcHJldmVudCBwcm9ibGVtcyBpZiB0aGUgZGVzdGluYXRpb24gYnVja2V0IG93bmVyc2hpcCBjaGFuZ2VzLlxuICovXG5CdWNrZXRBY2NvdW50SWQ/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBmaWxlIGZvcm1hdCB1c2VkIHdoZW4gZXhwb3J0aW5nIGRhdGEgdG8gQW1hem9uIFMzLlxuICogICpBbGxvd2VkIHZhbHVlcyo6IGBgQ1NWYGAgfCBgYE9SQ2BgIHwgYGBQYXJxdWV0YGBcbiAqL1xuRm9ybWF0OiAoXCJDU1ZcIiB8IFwiT1JDXCIgfCBcIlBhcnF1ZXRcIilcbi8qKlxuICogVGhlIHByZWZpeCB0byB1c2Ugd2hlbiBleHBvcnRpbmcgZGF0YS4gVGhlIHByZWZpeCBpcyBwcmVwZW5kZWQgdG8gYWxsIHJlc3VsdHMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgZGVmYXVsdCBlbmNyeXB0aW9uIGZvciBhIGJ1Y2tldCB1c2luZyBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHdpdGggQW1hem9uIFMzLW1hbmFnZWQga2V5cyAoU1NFLVMzKSwgQVdTIEtNUy1tYW5hZ2VkIGtleXMgKFNTRS1LTVMpLCBvciBkdWFsLWxheWVyIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBLTVMtbWFuYWdlZCBrZXlzIChEU1NFLUtNUykuIEZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQW1hem9uIFMzIGRlZmF1bHQgZW5jcnlwdGlvbiBmZWF0dXJlLCBzZWUgW0FtYXpvbiBTMyBEZWZhdWx0IEVuY3J5cHRpb24gZm9yIFMzIEJ1Y2tldHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L2J1Y2tldC1lbmNyeXB0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Y2tldEVuY3J5cHRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgc2VydmVyLXNpZGUtZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uLlxuICovXG5TZXJ2ZXJTaWRlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb246IFNlcnZlclNpZGVFbmNyeXB0aW9uUnVsZVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKiAgICArICAqR2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMqIC0gSWYgeW91J3JlIHNwZWNpZnlpbmcgYSBjdXN0b21lciBtYW5hZ2VkIEtNUyBrZXksIHdlIHJlY29tbWVuZCB1c2luZyBhIGZ1bGx5IHF1YWxpZmllZCBLTVMga2V5IEFSTi4gSWYgeW91IHVzZSBhIEtNUyBrZXkgYWxpYXMgaW5zdGVhZCwgdGhlbiBLTVMgcmVzb2x2ZXMgdGhlIGtleSB3aXRoaW4gdGhlIHJlcXVlc3RlcuKAmXMgYWNjb3VudC4gVGhpcyBiZWhhdmlvciBjYW4gcmVzdWx0IGluIGRhdGEgdGhhdCdzIGVuY3J5cHRlZCB3aXRoIGEgS01TIGtleSB0aGF0IGJlbG9uZ3MgdG8gdGhlIHJlcXVlc3RlciwgYW5kIG5vdCB0aGUgYnVja2V0IG93bmVyLlxuICogICArICAqRGlyZWN0b3J5IGJ1Y2tldHMqIC0gV2hlbiB5b3Ugc3BlY2lmeSBhbiBbY3VzdG9tZXIgbWFuYWdlZCBrZXldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2NvbmNlcHRzLmh0bWwjY3VzdG9tZXItY21rKSBmb3IgZW5jcnlwdGlvbiBpbiB5b3VyIGRpcmVjdG9yeSBidWNrZXQsIG9ubHkgdXNlIHRoZSBrZXkgSUQgb3Iga2V5IEFSTi4gVGhlIGtleSBhbGlhcyBmb3JtYXQgb2YgdGhlIEtNUyBrZXkgaXNuJ3Qgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlclNpZGVFbmNyeXB0aW9uUnVsZSB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyBzaG91bGQgdXNlIGFuIFMzIEJ1Y2tldCBLZXkgd2l0aCBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIHVzaW5nIEtNUyAoU1NFLUtNUykgZm9yIG5ldyBvYmplY3RzIGluIHRoZSBidWNrZXQuIEV4aXN0aW5nIG9iamVjdHMgYXJlIG5vdCBhZmZlY3RlZC4gU2V0dGluZyB0aGUgYGBCdWNrZXRLZXlFbmFibGVkYGAgZWxlbWVudCB0byBgYHRydWVgYCBjYXVzZXMgQW1hem9uIFMzIHRvIHVzZSBhbiBTMyBCdWNrZXQgS2V5LiBCeSBkZWZhdWx0LCBTMyBCdWNrZXQgS2V5IGlzIG5vdCBlbmFibGVkLlxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FtYXpvbiBTMyBCdWNrZXQgS2V5c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYnVja2V0LWtleS5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuQnVja2V0S2V5RW5hYmxlZD86IGJvb2xlYW5cblNlcnZlclNpZGVFbmNyeXB0aW9uQnlEZWZhdWx0PzogU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHRcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gdG8gYXBwbHkgdG8gbmV3IG9iamVjdHMgaW4gdGhlIGJ1Y2tldC4gSWYgYSBQVVQgT2JqZWN0IHJlcXVlc3QgZG9lc24ndCBzcGVjaWZ5IGFueSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLCB0aGlzIGRlZmF1bHQgZW5jcnlwdGlvbiB3aWxsIGJlIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQge1xuLyoqXG4gKiBBV1MgS2V5IE1hbmFnZW1lbnQgU2VydmljZSAoS01TKSBjdXN0b21lciBtYW5hZ2VkIGtleSBJRCB0byB1c2UgZm9yIHRoZSBkZWZhdWx0IGVuY3J5cHRpb24uIFxuICogICAgKyAgKkdlbmVyYWwgcHVycG9zZSBidWNrZXRzKiAtIFRoaXMgcGFyYW1ldGVyIGlzIGFsbG93ZWQgaWYgYW5kIG9ubHkgaWYgYGBTU0VBbGdvcml0aG1gYCBpcyBzZXQgdG8gYGBhd3M6a21zYGAgb3IgYGBhd3M6a21zOmRzc2VgYC5cbiAqICAgKyAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFRoaXMgcGFyYW1ldGVyIGlzIGFsbG93ZWQgaWYgYW5kIG9ubHkgaWYgYGBTU0VBbGdvcml0aG1gYCBpcyBzZXQgdG8gYGBhd3M6a21zYGAuXG4gKiAgIFxuICogICBZb3UgY2FuIHNwZWNpZnkgdGhlIGtleSBJRCwga2V5IGFsaWFzLCBvciB0aGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEtNUyBrZXkuXG4gKiAgICsgIEtleSBJRDogYGAxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwYWJgYFxuICogICArICBLZXkgQVJOOiBgYGFybjphd3M6a21zOnVzLWVhc3QtMjoxMTExMjIyMjMzMzM6a2V5LzEyMzRhYmNkLTEyYWItMzRjZC01NmVmLTEyMzQ1Njc4OTBhYmBgXG4gKiAgICsgIEtleSBBbGlhczogYGBhbGlhcy9hbGlhcy1uYW1lYGBcbiAqICAgXG4gKiAgSWYgeW91IGFyZSB1c2luZyBlbmNyeXB0aW9uIHdpdGggY3Jvc3MtYWNjb3VudCBvciBBV1Mgc2VydmljZSBvcGVyYXRpb25zLCB5b3UgbXVzdCB1c2UgYSBmdWxseSBxdWFsaWZpZWQgS01TIGtleSBBUk4uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1VzaW5nIGVuY3J5cHRpb24gZm9yIGNyb3NzLWFjY291bnQgb3BlcmF0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvYnVja2V0LWVuY3J5cHRpb24uaHRtbCNidWNrZXQtZW5jcnlwdGlvbi11cGRhdGUtYnVja2V0LXBvbGljeSkuXG4gKiAgICArICAqR2VuZXJhbCBwdXJwb3NlIGJ1Y2tldHMqIC0gSWYgeW91J3JlIHNwZWNpZnlpbmcgYSBjdXN0b21lciBtYW5hZ2VkIEtNUyBrZXksIHdlIHJlY29tbWVuZCB1c2luZyBhIGZ1bGx5IHF1YWxpZmllZCBLTVMga2V5IEFSTi4gSWYgeW91IHVzZSBhIEtNUyBrZXkgYWxpYXMgaW5zdGVhZCwgdGhlbiBLTVMgcmVzb2x2ZXMgdGhlIGtleSB3aXRoaW4gdGhlIHJlcXVlc3RlcuKAmXMgYWNjb3VudC4gVGhpcyBiZWhhdmlvciBjYW4gcmVzdWx0IGluIGRhdGEgdGhhdCdzIGVuY3J5cHRlZCB3aXRoIGEgS01TIGtleSB0aGF0IGJlbG9uZ3MgdG8gdGhlIHJlcXVlc3RlciwgYW5kIG5vdCB0aGUgYnVja2V0IG93bmVyLiBBbHNvLCBpZiB5b3UgdXNlIGEga2V5IElELCB5b3UgY2FuIHJ1biBpbnRvIGEgTG9nRGVzdGluYXRpb24gdW5kZWxpdmVyYWJsZSBlcnJvciB3aGVuIGNyZWF0aW5nIGEgVlBDIGZsb3cgbG9nLiBcbiAqICAgKyAgKkRpcmVjdG9yeSBidWNrZXRzKiAtIFdoZW4geW91IHNwZWNpZnkgYW4gW2N1c3RvbWVyIG1hbmFnZWQga2V5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9jb25jZXB0cy5odG1sI2N1c3RvbWVyLWNtaykgZm9yIGVuY3J5cHRpb24gaW4geW91ciBkaXJlY3RvcnkgYnVja2V0LCBvbmx5IHVzZSB0aGUga2V5IElEIG9yIGtleSBBUk4uIFRoZSBrZXkgYWxpYXMgZm9ybWF0IG9mIHRoZSBLTVMga2V5IGlzbid0IHN1cHBvcnRlZC5cbiAqICAgXG4gKiAgICBBbWF6b24gUzMgb25seSBzdXBwb3J0cyBzeW1tZXRyaWMgZW5jcnlwdGlvbiBLTVMga2V5cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQXN5bW1ldHJpYyBrZXlzIGluIEtNU10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tLy9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3N5bW1ldHJpYy1hc3ltbWV0cmljLmh0bWwpIGluIHRoZSAqS2V5IE1hbmFnZW1lbnQgU2VydmljZSBEZXZlbG9wZXIgR3VpZGUqLlxuICovXG5LTVNNYXN0ZXJLZXlJRD86IHN0cmluZ1xuLyoqXG4gKiBTZXJ2ZXItc2lkZSBlbmNyeXB0aW9uIGFsZ29yaXRobSB0byB1c2UgZm9yIHRoZSBkZWZhdWx0IGVuY3J5cHRpb24uXG4gKiAgIEZvciBkaXJlY3RvcnkgYnVja2V0cywgdGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCB2YWx1ZXMgZm9yIHNlcnZlci1zaWRlIGVuY3J5cHRpb246IGBgQUVTMjU2YGAgYW5kIGBgYXdzOmttc2BgLlxuICovXG5TU0VBbGdvcml0aG06IChcImF3czprbXNcIiB8IFwiQUVTMjU2XCIgfCBcImF3czprbXM6ZHNzZVwiKVxufVxuLyoqXG4gKiBEZXNjcmliZXMgdGhlIGNyb3NzLW9yaWdpbiBhY2Nlc3MgY29uZmlndXJhdGlvbiBmb3Igb2JqZWN0cyBpbiBhbiBBbWF6b24gUzMgYnVja2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtFbmFibGluZyBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZ10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvY29ycy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3JzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIEEgc2V0IG9mIG9yaWdpbnMgYW5kIG1ldGhvZHMgKGNyb3NzLW9yaWdpbiBhY2Nlc3MgdGhhdCB5b3Ugd2FudCB0byBhbGxvdykuIFlvdSBjYW4gYWRkIHVwIHRvIDEwMCBydWxlcyB0byB0aGUgY29uZmlndXJhdGlvbi5cbiAqL1xuQ29yc1J1bGVzOiBDb3JzUnVsZVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyBhIGNyb3NzLW9yaWdpbiBhY2Nlc3MgcnVsZSBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3JzUnVsZSB7XG4vKipcbiAqIEhlYWRlcnMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBgYEFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVyc2BgIGhlYWRlci4gVGhlc2UgaGVhZGVycyBhcmUgYWxsb3dlZCBpbiBhIHByZWZsaWdodCBPUFRJT05TIHJlcXVlc3QuIEluIHJlc3BvbnNlIHRvIGFueSBwcmVmbGlnaHQgT1BUSU9OUyByZXF1ZXN0LCBBbWF6b24gUzMgcmV0dXJucyBhbnkgcmVxdWVzdGVkIGhlYWRlcnMgdGhhdCBhcmUgYWxsb3dlZC5cbiAqL1xuQWxsb3dlZEhlYWRlcnM/OiBzdHJpbmdbXVxuLyoqXG4gKiBBbiBIVFRQIG1ldGhvZCB0aGF0IHlvdSBhbGxvdyB0aGUgb3JpZ2luIHRvIHJ1bi5cbiAqICAqQWxsb3dlZCB2YWx1ZXMqOiBgYEdFVGBgIHwgYGBQVVRgYCB8IGBgSEVBRGBgIHwgYGBQT1NUYGAgfCBgYERFTEVURWBgXG4gKi9cbkFsbG93ZWRNZXRob2RzOiAoXCJHRVRcIiB8IFwiUFVUXCIgfCBcIkhFQURcIiB8IFwiUE9TVFwiIHwgXCJERUxFVEVcIilbXVxuLyoqXG4gKiBPbmUgb3IgbW9yZSBvcmlnaW5zIHlvdSB3YW50IGN1c3RvbWVycyB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgYnVja2V0IGZyb20uXG4gKi9cbkFsbG93ZWRPcmlnaW5zOiBzdHJpbmdbXVxuLyoqXG4gKiBPbmUgb3IgbW9yZSBoZWFkZXJzIGluIHRoZSByZXNwb25zZSB0aGF0IHlvdSB3YW50IGN1c3RvbWVycyB0byBiZSBhYmxlIHRvIGFjY2VzcyBmcm9tIHRoZWlyIGFwcGxpY2F0aW9ucyAoZm9yIGV4YW1wbGUsIGZyb20gYSBKYXZhU2NyaXB0IGBgWE1MSHR0cFJlcXVlc3RgYCBvYmplY3QpLlxuICovXG5FeHBvc2VkSGVhZGVycz86IHN0cmluZ1tdXG4vKipcbiAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgcnVsZS4gVGhlIHZhbHVlIG11c3QgYmUgbm8gbW9yZSB0aGFuIDI1NSBjaGFyYWN0ZXJzLlxuICovXG5JZD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgdGltZSBpbiBzZWNvbmRzIHRoYXQgeW91ciBicm93c2VyIGlzIHRvIGNhY2hlIHRoZSBwcmVmbGlnaHQgcmVzcG9uc2UgZm9yIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UuXG4gKi9cbk1heEFnZT86IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgY29uZmlndXJhdGlvbiBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqICBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcywgc2VlIFtTdG9yYWdlIGNsYXNzIGZvciBhdXRvbWF0aWNhbGx5IG9wdGltaXppbmcgZnJlcXVlbnRseSBhbmQgaW5mcmVxdWVudGx5IGFjY2Vzc2VkIG9iamVjdHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvZGV2L3N0b3JhZ2UtY2xhc3MtaW50cm8uaHRtbCNzYy1keW5hbWljLWRhdGEtYWNjZXNzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlbGxpZ2VudFRpZXJpbmdDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgY29uZmlndXJhdGlvbi5cbiAqL1xuSWQ6IHN0cmluZ1xuLyoqXG4gKiBBbiBvYmplY3Qga2V5IG5hbWUgcHJlZml4IHRoYXQgaWRlbnRpZmllcyB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJ1bGUgYXBwbGllcy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgc3RhdHVzIG9mIHRoZSBjb25maWd1cmF0aW9uLlxuICovXG5TdGF0dXM6IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbi8qKlxuICogQSBjb250YWluZXIgZm9yIGEga2V5LXZhbHVlIHBhaXIuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBsaXN0IG9mIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcyB0aWVycyBpbiB0aGUgY29uZmlndXJhdGlvbi4gQXQgbGVhc3Qgb25lIHRpZXIgbXVzdCBiZSBkZWZpbmVkIGluIHRoZSBsaXN0LiBBdCBtb3N0LCB5b3UgY2FuIHNwZWNpZnkgdHdvIHRpZXJzIGluIHRoZSBsaXN0LCBvbmUgZm9yIGVhY2ggYXZhaWxhYmxlIEFjY2Vzc1RpZXI6IGBgQVJDSElWRV9BQ0NFU1NgYCBhbmQgYGBERUVQX0FSQ0hJVkVfQUNDRVNTYGAuXG4gKiAgIFlvdSBvbmx5IG5lZWQgSW50ZWxsaWdlbnQgVGllcmluZyBDb25maWd1cmF0aW9uIGVuYWJsZWQgb24gYSBidWNrZXQgaWYgeW91IHdhbnQgdG8gYXV0b21hdGljYWxseSBtb3ZlIG9iamVjdHMgc3RvcmVkIGluIHRoZSBJbnRlbGxpZ2VudC1UaWVyaW5nIHN0b3JhZ2UgY2xhc3MgdG8gQXJjaGl2ZSBBY2Nlc3Mgb3IgRGVlcCBBcmNoaXZlIEFjY2VzcyB0aWVycy5cbiAqL1xuVGllcmluZ3M6IFRpZXJpbmdbXVxufVxuLyoqXG4gKiBUaGUgUzMgSW50ZWxsaWdlbnQtVGllcmluZyBzdG9yYWdlIGNsYXNzIGlzIGRlc2lnbmVkIHRvIG9wdGltaXplIHN0b3JhZ2UgY29zdHMgYnkgYXV0b21hdGljYWxseSBtb3ZpbmcgZGF0YSB0byB0aGUgbW9zdCBjb3N0LWVmZmVjdGl2ZSBzdG9yYWdlIGFjY2VzcyB0aWVyLCB3aXRob3V0IGFkZGl0aW9uYWwgb3BlcmF0aW9uYWwgb3ZlcmhlYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGllcmluZyB7XG4vKipcbiAqIFMzIEludGVsbGlnZW50LVRpZXJpbmcgYWNjZXNzIHRpZXIuIFNlZSBbU3RvcmFnZSBjbGFzcyBmb3IgYXV0b21hdGljYWxseSBvcHRpbWl6aW5nIGZyZXF1ZW50bHkgYW5kIGluZnJlcXVlbnRseSBhY2Nlc3NlZCBvYmplY3RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9zdG9yYWdlLWNsYXNzLWludHJvLmh0bWwjc2MtZHluYW1pYy1kYXRhLWFjY2VzcykgZm9yIGEgbGlzdCBvZiBhY2Nlc3MgdGllcnMgaW4gdGhlIFMzIEludGVsbGlnZW50LVRpZXJpbmcgc3RvcmFnZSBjbGFzcy5cbiAqL1xuQWNjZXNzVGllcjogKFwiQVJDSElWRV9BQ0NFU1NcIiB8IFwiREVFUF9BUkNISVZFX0FDQ0VTU1wiKVxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGRheXMgb2Ygbm8gYWNjZXNzIGFmdGVyIHdoaWNoIGFuIG9iamVjdCB3aWxsIGJlIGVsaWdpYmxlIHRvIGJlIHRyYW5zaXRpb25lZCB0byB0aGUgY29ycmVzcG9uZGluZyB0aWVyLiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGF5cyBzcGVjaWZpZWQgZm9yIEFyY2hpdmUgQWNjZXNzIHRpZXIgbXVzdCBiZSBhdCBsZWFzdCA5MCBkYXlzIGFuZCBEZWVwIEFyY2hpdmUgQWNjZXNzIHRpZXIgbXVzdCBiZSBhdCBsZWFzdCAxODAgZGF5cy4gVGhlIG1heGltdW0gY2FuIGJlIHVwIHRvIDIgeWVhcnMgKDczMCBkYXlzKS5cbiAqL1xuRGF5czogbnVtYmVyXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgaW52ZW50b3J5IGNvbmZpZ3VyYXRpb24gZm9yIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0dFVCBCdWNrZXQgaW52ZW50b3J5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0R0VUSW52ZW50b3J5Q29uZmlnLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludmVudG9yeUNvbmZpZ3VyYXRpb24ge1xuRGVzdGluYXRpb246IERlc3RpbmF0aW9uMVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgaW52ZW50b3J5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIElmIHNldCB0byBgYFRydWVgYCwgYW4gaW52ZW50b3J5IGxpc3QgaXMgZ2VuZXJhdGVkLiBJZiBzZXQgdG8gYGBGYWxzZWBgLCBubyBpbnZlbnRvcnkgbGlzdCBpcyBnZW5lcmF0ZWQuXG4gKi9cbkVuYWJsZWQ6IGJvb2xlYW5cbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGludmVudG9yeSBjb25maWd1cmF0aW9uLlxuICovXG5JZDogc3RyaW5nXG4vKipcbiAqIE9iamVjdCB2ZXJzaW9ucyB0byBpbmNsdWRlIGluIHRoZSBpbnZlbnRvcnkgbGlzdC4gSWYgc2V0IHRvIGBgQWxsYGAsIHRoZSBsaXN0IGluY2x1ZGVzIGFsbCB0aGUgb2JqZWN0IHZlcnNpb25zLCB3aGljaCBhZGRzIHRoZSB2ZXJzaW9uLXJlbGF0ZWQgZmllbGRzIGBgVmVyc2lvbklkYGAsIGBgSXNMYXRlc3RgYCwgYW5kIGBgRGVsZXRlTWFya2VyYGAgdG8gdGhlIGxpc3QuIElmIHNldCB0byBgYEN1cnJlbnRgYCwgdGhlIGxpc3QgZG9lcyBub3QgY29udGFpbiB0aGVzZSB2ZXJzaW9uLXJlbGF0ZWQgZmllbGRzLlxuICovXG5JbmNsdWRlZE9iamVjdFZlcnNpb25zOiAoXCJBbGxcIiB8IFwiQ3VycmVudFwiKVxuLyoqXG4gKiBDb250YWlucyB0aGUgb3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBpbnZlbnRvcnkgcmVzdWx0cy5cbiAqL1xuT3B0aW9uYWxGaWVsZHM/OiAoXCJTaXplXCIgfCBcIkxhc3RNb2RpZmllZERhdGVcIiB8IFwiU3RvcmFnZUNsYXNzXCIgfCBcIkVUYWdcIiB8IFwiSXNNdWx0aXBhcnRVcGxvYWRlZFwiIHwgXCJSZXBsaWNhdGlvblN0YXR1c1wiIHwgXCJFbmNyeXB0aW9uU3RhdHVzXCIgfCBcIk9iamVjdExvY2tSZXRhaW5VbnRpbERhdGVcIiB8IFwiT2JqZWN0TG9ja01vZGVcIiB8IFwiT2JqZWN0TG9ja0xlZ2FsSG9sZFN0YXR1c1wiIHwgXCJJbnRlbGxpZ2VudFRpZXJpbmdBY2Nlc3NUaWVyXCIgfCBcIkJ1Y2tldEtleVN0YXR1c1wiIHwgXCJDaGVja3N1bUFsZ29yaXRobVwiIHwgXCJPYmplY3RBY2Nlc3NDb250cm9sTGlzdFwiIHwgXCJPYmplY3RPd25lclwiKVtdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgaW52ZW50b3J5IGZpbHRlciBwcmVmaXguXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHNjaGVkdWxlIGZvciBnZW5lcmF0aW5nIGludmVudG9yeSByZXN1bHRzLlxuICovXG5TY2hlZHVsZUZyZXF1ZW5jeTogKFwiRGFpbHlcIiB8IFwiV2Vla2x5XCIpXG59XG4vKipcbiAqIENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRvIHB1Ymxpc2ggdGhlIGludmVudG9yeSByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3RpbmF0aW9uMSB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYnVja2V0IHRvIHdoaWNoIGRhdGEgaXMgZXhwb3J0ZWQuXG4gKi9cbkJ1Y2tldEFybjogc3RyaW5nXG4vKipcbiAqIFRoZSBhY2NvdW50IElEIHRoYXQgb3ducyB0aGUgZGVzdGluYXRpb24gUzMgYnVja2V0LiBJZiBubyBhY2NvdW50IElEIGlzIHByb3ZpZGVkLCB0aGUgb3duZXIgaXMgbm90IHZhbGlkYXRlZCBiZWZvcmUgZXhwb3J0aW5nIGRhdGEuXG4gKiAgICBBbHRob3VnaCB0aGlzIHZhbHVlIGlzIG9wdGlvbmFsLCB3ZSBzdHJvbmdseSByZWNvbW1lbmQgdGhhdCB5b3Ugc2V0IGl0IHRvIGhlbHAgcHJldmVudCBwcm9ibGVtcyBpZiB0aGUgZGVzdGluYXRpb24gYnVja2V0IG93bmVyc2hpcCBjaGFuZ2VzLlxuICovXG5CdWNrZXRBY2NvdW50SWQ/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBmaWxlIGZvcm1hdCB1c2VkIHdoZW4gZXhwb3J0aW5nIGRhdGEgdG8gQW1hem9uIFMzLlxuICogICpBbGxvd2VkIHZhbHVlcyo6IGBgQ1NWYGAgfCBgYE9SQ2BgIHwgYGBQYXJxdWV0YGBcbiAqL1xuRm9ybWF0OiAoXCJDU1ZcIiB8IFwiT1JDXCIgfCBcIlBhcnF1ZXRcIilcbi8qKlxuICogVGhlIHByZWZpeCB0byB1c2Ugd2hlbiBleHBvcnRpbmcgZGF0YS4gVGhlIHByZWZpeCBpcyBwcmVwZW5kZWQgdG8gYWxsIHJlc3VsdHMuXG4gKi9cblByZWZpeD86IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uIGZvciBvYmplY3RzIGluIGFuIEFtYXpvbiBTMyBidWNrZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW09iamVjdCBMaWZlY3ljbGUgTWFuYWdlbWVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvb2JqZWN0LWxpZmVjeWNsZS1tZ210Lmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBBIGxpZmVjeWNsZSBydWxlIGZvciBpbmRpdmlkdWFsIG9iamVjdHMgaW4gYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuUnVsZXM6IFJ1bGVbXVxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hpY2ggZGVmYXVsdCBtaW5pbXVtIG9iamVjdCBzaXplIGJlaGF2aW9yIGlzIGFwcGxpZWQgdG8gdGhlIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uLlxuICogICBUaGlzIHBhcmFtZXRlciBhcHBsaWVzIHRvIGdlbmVyYWwgcHVycG9zZSBidWNrZXRzIG9ubHkuIEl0IGlzbid0IHN1cHBvcnRlZCBmb3IgZGlyZWN0b3J5IGJ1Y2tldCBsaWZlY3ljbGUgY29uZmlndXJhdGlvbnMuXG4gKiAgICArICBgYGFsbF9zdG9yYWdlX2NsYXNzZXNfMTI4S2BgIC0gT2JqZWN0cyBzbWFsbGVyIHRoYW4gMTI4IEtCIHdpbGwgbm90IHRyYW5zaXRpb24gdG8gYW55IHN0b3JhZ2UgY2xhc3MgYnkgZGVmYXVsdC5cbiAqICAgKyAgYGB2YXJpZXNfYnlfc3RvcmFnZV9jbGFzc2BgIC0gT2JqZWN0cyBzbWFsbGVyIHRoYW4gMTI4IEtCIHdpbGwgdHJhbnNpdGlvbiB0byBHbGFjaWVyIEZsZXhpYmxlIFJldHJpZXZhbCBvciBHbGFjaWVyIERlZXAgQXJjaGl2ZSBzdG9yYWdlIGNsYXNzZXMuIEJ5IGRlZmF1bHQsIGFsbCBvdGhlciBzdG9yYWdlIGNsYXNzZXMgd2lsbCBwcmV2ZW50IHRyYW5zaXRpb25zIHNtYWxsZXIgdGhhbiAxMjggS0IuIFxuICogICBcbiAqICBUbyBjdXN0b21pemUgdGhlIG1pbmltdW0gb2JqZWN0IHNpemUgZm9yIGFueSB0cmFuc2l0aW9uIHlvdSBjYW4gYWRkIGEgZmlsdGVyIHRoYXQgc3BlY2lmaWVzIGEgY3VzdG9tIGBgT2JqZWN0U2l6ZUdyZWF0ZXJUaGFuYGAgb3IgYGBPYmplY3RTaXplTGVzc1RoYW5gYCBpbiB0aGUgYm9keSBvZiB5b3VyIHRyYW5zaXRpb24gcnVsZS4gQ3VzdG9tIGZpbHRlcnMgYWx3YXlzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBkZWZhdWx0IHRyYW5zaXRpb24gYmVoYXZpb3IuXG4gKi9cblRyYW5zaXRpb25EZWZhdWx0TWluaW11bU9iamVjdFNpemU/OiAoXCJ2YXJpZXNfYnlfc3RvcmFnZV9jbGFzc1wiIHwgXCJhbGxfc3RvcmFnZV9jbGFzc2VzXzEyOEtcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIGxpZmVjeWNsZSBydWxlcyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUHV0IEJ1Y2tldCBMaWZlY3ljbGUgQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVGxpZmVjeWNsZS5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqICBZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6IGBgQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkYGAsIGBgRXhwaXJhdGlvbkRhdGVgYCwgYGBFeHBpcmF0aW9uSW5EYXlzYGAsIGBgTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uSW5EYXlzYGAsIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uYGAsIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uc2BgLCBgYFRyYW5zaXRpb25gYCwgb3IgYGBUcmFuc2l0aW9uc2BgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGUge1xuQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkPzogQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkXG4vKipcbiAqIEluZGljYXRlcyB3aGVuIG9iamVjdHMgYXJlIGRlbGV0ZWQgZnJvbSBBbWF6b24gUzMgYW5kIEFtYXpvbiBTMyBHbGFjaWVyLiBUaGUgZGF0ZSB2YWx1ZSBtdXN0IGJlIGluIElTTyA4NjAxIGZvcm1hdC4gVGhlIHRpbWUgaXMgYWx3YXlzIG1pZG5pZ2h0IFVUQy4gSWYgeW91IHNwZWNpZnkgYW4gZXhwaXJhdGlvbiBhbmQgdHJhbnNpdGlvbiB0aW1lLCB5b3UgbXVzdCB1c2UgdGhlIHNhbWUgdGltZSB1bml0IGZvciBib3RoIHByb3BlcnRpZXMgKGVpdGhlciBpbiBkYXlzIG9yIGJ5IGRhdGUpLiBUaGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYWxzbyBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuXG4gKi9cbkV4cGlyYXRpb25EYXRlPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgY3JlYXRpb24gd2hlbiBvYmplY3RzIGFyZSBkZWxldGVkIGZyb20gQW1hem9uIFMzIGFuZCBBbWF6b24gUzMgR2xhY2llci4gSWYgeW91IHNwZWNpZnkgYW4gZXhwaXJhdGlvbiBhbmQgdHJhbnNpdGlvbiB0aW1lLCB5b3UgbXVzdCB1c2UgdGhlIHNhbWUgdGltZSB1bml0IGZvciBib3RoIHByb3BlcnRpZXMgKGVpdGhlciBpbiBkYXlzIG9yIGJ5IGRhdGUpLiBUaGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYWxzbyBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuXG4gKi9cbkV4cGlyYXRpb25JbkRheXM/OiBudW1iZXJcbi8qKlxuICogSW5kaWNhdGVzIHdoZXRoZXIgQW1hem9uIFMzIHdpbGwgcmVtb3ZlIGEgZGVsZXRlIG1hcmtlciB3aXRob3V0IGFueSBub25jdXJyZW50IHZlcnNpb25zLiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGRlbGV0ZSBtYXJrZXIgd2lsbCBiZSByZW1vdmVkIGlmIHRoZXJlIGFyZSBubyBub25jdXJyZW50IHZlcnNpb25zLiBUaGlzIGNhbm5vdCBiZSBzcGVjaWZpZWQgd2l0aCBgYEV4cGlyYXRpb25JbkRheXNgYCwgYGBFeHBpcmF0aW9uRGF0ZWBgLCBvciBgYFRhZ0ZpbHRlcnNgYC5cbiAqL1xuRXhwaXJlZE9iamVjdERlbGV0ZU1hcmtlcj86IGJvb2xlYW5cbi8qKlxuICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlLiBUaGUgdmFsdWUgY2FuJ3QgYmUgbG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMuXG4gKi9cbklkPzogc3RyaW5nXG4vKipcbiAqIChEZXByZWNhdGVkLikgRm9yIGJ1Y2tldHMgd2l0aCB2ZXJzaW9uaW5nIGVuYWJsZWQgKG9yIHN1c3BlbmRlZCksIHNwZWNpZmllcyB0aGUgdGltZSwgaW4gZGF5cywgYmV0d2VlbiB3aGVuIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9iamVjdCBpcyB1cGxvYWRlZCB0byB0aGUgYnVja2V0IGFuZCB3aGVuIG9sZCB2ZXJzaW9ucyBvZiB0aGUgb2JqZWN0IGV4cGlyZS4gV2hlbiBvYmplY3QgdmVyc2lvbnMgZXhwaXJlLCBBbWF6b24gUzMgcGVybWFuZW50bHkgZGVsZXRlcyB0aGVtLiBJZiB5b3Ugc3BlY2lmeSBhIHRyYW5zaXRpb24gYW5kIGV4cGlyYXRpb24gdGltZSwgdGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS5cbiAqL1xuTm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uSW5EYXlzPzogbnVtYmVyXG5Ob25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb24/OiBOb25jdXJyZW50VmVyc2lvbkV4cGlyYXRpb25cbk5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbj86IE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvblxuLyoqXG4gKiBGb3IgYnVja2V0cyB3aXRoIHZlcnNpb25pbmcgZW5hYmxlZCAob3Igc3VzcGVuZGVkKSwgb25lIG9yIG1vcmUgdHJhbnNpdGlvbiBydWxlcyB0aGF0IHNwZWNpZnkgd2hlbiBub24tY3VycmVudCBvYmplY3RzIHRyYW5zaXRpb24gdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgeW91IHNwZWNpZnkgYSB0cmFuc2l0aW9uIGFuZCBleHBpcmF0aW9uIHRpbWUsIHRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBiZSBsYXRlciB0aGFuIHRoZSB0cmFuc2l0aW9uIHRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uYGAgcHJvcGVydHkuXG4gKi9cbk5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnM/OiBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb24xW11cbi8qKlxuICogT2JqZWN0IGtleSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIG9uZSBvciBtb3JlIG9iamVjdHMgdG8gd2hpY2ggdGhpcyBydWxlIGFwcGxpZXMuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblByZWZpeD86IHN0cmluZ1xuLyoqXG4gKiBJZiBgYEVuYWJsZWRgYCwgdGhlIHJ1bGUgaXMgY3VycmVudGx5IGJlaW5nIGFwcGxpZWQuIElmIGBgRGlzYWJsZWRgYCwgdGhlIHJ1bGUgaXMgbm90IGN1cnJlbnRseSBiZWluZyBhcHBsaWVkLlxuICovXG5TdGF0dXM6IChcIkVuYWJsZWRcIiB8IFwiRGlzYWJsZWRcIilcbi8qKlxuICogVGFncyB0byB1c2UgdG8gaWRlbnRpZnkgYSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgbGlmZWN5Y2xlIHJ1bGUgYXBwbGllcy5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbWluaW11bSBvYmplY3Qgc2l6ZSBpbiBieXRlcyBmb3IgdGhpcyBydWxlIHRvIGFwcGx5IHRvLiBPYmplY3RzIG11c3QgYmUgbGFyZ2VyIHRoYW4gdGhpcyB2YWx1ZSBpbiBieXRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc2l6ZSBiYXNlZCBydWxlcywgc2VlIFtMaWZlY3ljbGUgY29uZmlndXJhdGlvbiB1c2luZyBzaXplLWJhc2VkIHJ1bGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9saWZlY3ljbGUtY29uZmlndXJhdGlvbi1leGFtcGxlcy5odG1sI2xjLXNpemUtcnVsZXMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5PYmplY3RTaXplR3JlYXRlclRoYW4/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG9iamVjdCBzaXplIGluIGJ5dGVzIGZvciB0aGlzIHJ1bGUgdG8gYXBwbHkgdG8uIE9iamVjdHMgbXVzdCBiZSBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZSBpbiBieXRlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgc2l6ZWQgYmFzZWQgcnVsZXMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gdXNpbmcgc2l6ZS1iYXNlZCBydWxlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvbGlmZWN5Y2xlLWNvbmZpZ3VyYXRpb24tZXhhbXBsZXMuaHRtbCNsYy1zaXplLXJ1bGVzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuT2JqZWN0U2l6ZUxlc3NUaGFuPzogc3RyaW5nXG5UcmFuc2l0aW9uPzogVHJhbnNpdGlvblxuLyoqXG4gKiBPbmUgb3IgbW9yZSB0cmFuc2l0aW9uIHJ1bGVzIHRoYXQgc3BlY2lmeSB3aGVuIGFuIG9iamVjdCB0cmFuc2l0aW9ucyB0byBhIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB5b3Ugc3BlY2lmeSBhbiBleHBpcmF0aW9uIGFuZCB0cmFuc2l0aW9uIHRpbWUsIHlvdSBtdXN0IHVzZSB0aGUgc2FtZSB0aW1lIHVuaXQgZm9yIGJvdGggcHJvcGVydGllcyAoZWl0aGVyIGluIGRheXMgb3IgYnkgZGF0ZSkuIFRoZSBleHBpcmF0aW9uIHRpbWUgbXVzdCBhbHNvIGJlIGxhdGVyIHRoYW4gdGhlIHRyYW5zaXRpb24gdGltZS4gSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgZG9uJ3Qgc3BlY2lmeSB0aGUgYGBUcmFuc2l0aW9uYGAgcHJvcGVydHkuXG4gKi9cblRyYW5zaXRpb25zPzogVHJhbnNpdGlvbjFbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgYSBsaWZlY3ljbGUgcnVsZSB0aGF0IHN0b3BzIGluY29tcGxldGUgbXVsdGlwYXJ0IHVwbG9hZHMgdG8gYW4gQW1hem9uIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYm9ydEluY29tcGxldGVNdWx0aXBhcnRVcGxvYWQge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIEFtYXpvbiBTMyBzdG9wcyBhbiBpbmNvbXBsZXRlIG11bHRpcGFydCB1cGxvYWQuXG4gKi9cbkRheXNBZnRlckluaXRpYXRpb246IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hlbiBub25jdXJyZW50IG9iamVjdCB2ZXJzaW9ucyBleHBpcmUuIFVwb24gZXhwaXJhdGlvbiwgUzMgcGVybWFuZW50bHkgZGVsZXRlcyB0aGUgbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMuIFlvdSBzZXQgdGhpcyBsaWZlY3ljbGUgY29uZmlndXJhdGlvbiBhY3Rpb24gb24gYSBidWNrZXQgdGhhdCBoYXMgdmVyc2lvbmluZyBlbmFibGVkIChvciBzdXNwZW5kZWQpIHRvIHJlcXVlc3QgdGhhdCBTMyBkZWxldGUgbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMgYXQgYSBzcGVjaWZpYyBwZXJpb2QgaW4gdGhlIG9iamVjdCdzIGxpZmV0aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRheXMgYW4gb2JqZWN0IGlzIG5vbmN1cnJlbnQgYmVmb3JlIFMzIGNhbiBwZXJmb3JtIHRoZSBhc3NvY2lhdGVkIGFjdGlvbi4gRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBub25jdXJyZW50IGRheXMgY2FsY3VsYXRpb25zLCBzZWUgW0hvdyBBbWF6b24gUzMgQ2FsY3VsYXRlcyBXaGVuIGFuIE9iamVjdCBCZWNhbWUgTm9uY3VycmVudF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvaW50cm8tbGlmZWN5Y2xlLXJ1bGVzLmh0bWwjbm9uLWN1cnJlbnQtZGF5cy1jYWxjdWxhdGlvbnMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5Ob25jdXJyZW50RGF5czogbnVtYmVyXG4vKipcbiAqIFNwZWNpZmllcyBob3cgbWFueSBub25jdXJyZW50IHZlcnNpb25zIFMzIHdpbGwgcmV0YWluLiBJZiB0aGVyZSBhcmUgdGhpcyBtYW55IG1vcmUgcmVjZW50IG5vbmN1cnJlbnQgdmVyc2lvbnMsIFMzIHdpbGwgdGFrZSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG5vbmN1cnJlbnQgdmVyc2lvbnMsIHNlZSBbTGlmZWN5Y2xlIGNvbmZpZ3VyYXRpb24gZWxlbWVudHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL2ludHJvLWxpZmVjeWNsZS1ydWxlcy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuTmV3ZXJOb25jdXJyZW50VmVyc2lvbnM/OiBudW1iZXJcbn1cbi8qKlxuICogKERlcHJlY2F0ZWQuKSBGb3IgYnVja2V0cyB3aXRoIHZlcnNpb25pbmcgZW5hYmxlZCAob3Igc3VzcGVuZGVkKSwgc3BlY2lmaWVzIHdoZW4gbm9uLWN1cnJlbnQgb2JqZWN0cyB0cmFuc2l0aW9uIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHlvdSBzcGVjaWZ5IGEgdHJhbnNpdGlvbiBhbmQgZXhwaXJhdGlvbiB0aW1lLCB0aGUgZXhwaXJhdGlvbiB0aW1lIG11c3QgYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnNgYCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb25jdXJyZW50VmVyc2lvblRyYW5zaXRpb24ge1xuLyoqXG4gKiBUaGUgY2xhc3Mgb2Ygc3RvcmFnZSB1c2VkIHRvIHN0b3JlIHRoZSBvYmplY3QuXG4gKi9cblN0b3JhZ2VDbGFzczogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR2xhY2llclwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJTVEFOREFSRF9JQVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFuIG9iamVjdCBpcyBub25jdXJyZW50IGJlZm9yZSBBbWF6b24gUzMgY2FuIHBlcmZvcm0gdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5vbmN1cnJlbnQgZGF5cyBjYWxjdWxhdGlvbnMsIHNlZSBbSG93IEFtYXpvbiBTMyBDYWxjdWxhdGVzIEhvdyBMb25nIGFuIE9iamVjdCBIYXMgQmVlbiBOb25jdXJyZW50XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCNub24tY3VycmVudC1kYXlzLWNhbGN1bGF0aW9ucykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblRyYW5zaXRpb25JbkRheXM6IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IG1hbnkgbm9uY3VycmVudCB2ZXJzaW9ucyBTMyB3aWxsIHJldGFpbi4gSWYgdGhlcmUgYXJlIHRoaXMgbWFueSBtb3JlIHJlY2VudCBub25jdXJyZW50IHZlcnNpb25zLCBTMyB3aWxsIHRha2UgdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBub25jdXJyZW50IHZlcnNpb25zLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIGVsZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5ld2VyTm9uY3VycmVudFZlcnNpb25zPzogbnVtYmVyXG59XG4vKipcbiAqIENvbnRhaW5lciBmb3IgdGhlIHRyYW5zaXRpb24gcnVsZSB0aGF0IGRlc2NyaWJlcyB3aGVuIG5vbmN1cnJlbnQgb2JqZWN0cyB0cmFuc2l0aW9uIHRvIHRoZSBgYFNUQU5EQVJEX0lBYGAsIGBgT05FWk9ORV9JQWBgLCBgYElOVEVMTElHRU5UX1RJRVJJTkdgYCwgYGBHTEFDSUVSX0lSYGAsIGBgR0xBQ0lFUmBgLCBvciBgYERFRVBfQVJDSElWRWBgIHN0b3JhZ2UgY2xhc3MuIElmIHlvdXIgYnVja2V0IGlzIHZlcnNpb25pbmctZW5hYmxlZCAob3IgdmVyc2lvbmluZyBpcyBzdXNwZW5kZWQpLCB5b3UgY2FuIHNldCB0aGlzIGFjdGlvbiB0byByZXF1ZXN0IHRoYXQgQW1hem9uIFMzIHRyYW5zaXRpb24gbm9uY3VycmVudCBvYmplY3QgdmVyc2lvbnMgdG8gdGhlIGBgU1RBTkRBUkRfSUFgYCwgYGBPTkVaT05FX0lBYGAsIGBgSU5URUxMSUdFTlRfVElFUklOR2BgLCBgYEdMQUNJRVJfSVJgYCwgYGBHTEFDSUVSYGAsIG9yIGBgREVFUF9BUkNISVZFYGAgc3RvcmFnZSBjbGFzcyBhdCBhIHNwZWNpZmljIHBlcmlvZCBpbiB0aGUgb2JqZWN0J3MgbGlmZXRpbWUuIElmIHlvdSBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIGRvbid0IHNwZWNpZnkgdGhlIGBgTm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uc2BgIHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbjEge1xuLyoqXG4gKiBUaGUgY2xhc3Mgb2Ygc3RvcmFnZSB1c2VkIHRvIHN0b3JlIHRoZSBvYmplY3QuXG4gKi9cblN0b3JhZ2VDbGFzczogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR2xhY2llclwiIHwgXCJHTEFDSUVSX0lSXCIgfCBcIklOVEVMTElHRU5UX1RJRVJJTkdcIiB8IFwiT05FWk9ORV9JQVwiIHwgXCJTVEFOREFSRF9JQVwiKVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXlzIGFuIG9iamVjdCBpcyBub25jdXJyZW50IGJlZm9yZSBBbWF6b24gUzMgY2FuIHBlcmZvcm0gdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5vbmN1cnJlbnQgZGF5cyBjYWxjdWxhdGlvbnMsIHNlZSBbSG93IEFtYXpvbiBTMyBDYWxjdWxhdGVzIEhvdyBMb25nIGFuIE9iamVjdCBIYXMgQmVlbiBOb25jdXJyZW50XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCNub24tY3VycmVudC1kYXlzLWNhbGN1bGF0aW9ucykgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblRyYW5zaXRpb25JbkRheXM6IG51bWJlclxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IG1hbnkgbm9uY3VycmVudCB2ZXJzaW9ucyBTMyB3aWxsIHJldGFpbi4gSWYgdGhlcmUgYXJlIHRoaXMgbWFueSBtb3JlIHJlY2VudCBub25jdXJyZW50IHZlcnNpb25zLCBTMyB3aWxsIHRha2UgdGhlIGFzc29jaWF0ZWQgYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBub25jdXJyZW50IHZlcnNpb25zLCBzZWUgW0xpZmVjeWNsZSBjb25maWd1cmF0aW9uIGVsZW1lbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9pbnRyby1saWZlY3ljbGUtcnVsZXMuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5ld2VyTm9uY3VycmVudFZlcnNpb25zPzogbnVtYmVyXG59XG4vKipcbiAqIChEZXByZWNhdGVkLikgU3BlY2lmaWVzIHdoZW4gYW4gb2JqZWN0IHRyYW5zaXRpb25zIHRvIGEgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIElmIHlvdSBzcGVjaWZ5IGFuIGV4cGlyYXRpb24gYW5kIHRyYW5zaXRpb24gdGltZSwgeW91IG11c3QgdXNlIHRoZSBzYW1lIHRpbWUgdW5pdCBmb3IgYm90aCBwcm9wZXJ0aWVzIChlaXRoZXIgaW4gZGF5cyBvciBieSBkYXRlKS4gVGhlIGV4cGlyYXRpb24gdGltZSBtdXN0IGFsc28gYmUgbGF0ZXIgdGhhbiB0aGUgdHJhbnNpdGlvbiB0aW1lLiBJZiB5b3Ugc3BlY2lmeSB0aGlzIHByb3BlcnR5LCBkb24ndCBzcGVjaWZ5IHRoZSBgYFRyYW5zaXRpb25zYGAgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNpdGlvbiB7XG4vKipcbiAqIFRoZSBzdG9yYWdlIGNsYXNzIHRvIHdoaWNoIHlvdSB3YW50IHRoZSBvYmplY3QgdG8gdHJhbnNpdGlvbi5cbiAqL1xuU3RvcmFnZUNsYXNzOiAoXCJERUVQX0FSQ0hJVkVcIiB8IFwiR0xBQ0lFUlwiIHwgXCJHbGFjaWVyXCIgfCBcIkdMQUNJRVJfSVJcIiB8IFwiSU5URUxMSUdFTlRfVElFUklOR1wiIHwgXCJPTkVaT05FX0lBXCIgfCBcIlNUQU5EQVJEX0lBXCIpXG4vKipcbiAqIEluZGljYXRlcyB3aGVuIG9iamVjdHMgYXJlIHRyYW5zaXRpb25lZCB0byB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MuIFRoZSBkYXRlIHZhbHVlIG11c3QgYmUgaW4gSVNPIDg2MDEgZm9ybWF0LiBUaGUgdGltZSBpcyBhbHdheXMgbWlkbmlnaHQgVVRDLlxuICovXG5UcmFuc2l0aW9uRGF0ZT86IHN0cmluZ1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIGNyZWF0aW9uIHdoZW4gb2JqZWN0cyBhcmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gSWYgdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzIGlzIGBgSU5URUxMSUdFTlRfVElFUklOR2BgLCBgYEdMQUNJRVJfSVJgYCwgYGBHTEFDSUVSYGAsIG9yIGBgREVFUF9BUkNISVZFYGAsIHZhbGlkIHZhbHVlcyBhcmUgYGAwYGAgb3IgcG9zaXRpdmUgaW50ZWdlcnMuIElmIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcyBpcyBgYFNUQU5EQVJEX0lBYGAgb3IgYGBPTkVaT05FX0lBYGAsIHZhbGlkIHZhbHVlcyBhcmUgcG9zaXRpdmUgaW50ZWdlcnMgZ3JlYXRlciB0aGFuIGBgMzBgYC4gQmUgYXdhcmUgdGhhdCBzb21lIHN0b3JhZ2UgY2xhc3NlcyBoYXZlIGEgbWluaW11bSBzdG9yYWdlIGR1cmF0aW9uIGFuZCB0aGF0IHlvdSdyZSBjaGFyZ2VkIGZvciB0cmFuc2l0aW9uaW5nIG9iamVjdHMgYmVmb3JlIHRoZWlyIG1pbmltdW0gc3RvcmFnZSBkdXJhdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uc3RyYWludHMgYW5kIGNvbnNpZGVyYXRpb25zIGZvciB0cmFuc2l0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvbGlmZWN5Y2xlLXRyYW5zaXRpb24tZ2VuZXJhbC1jb25zaWRlcmF0aW9ucy5odG1sI2xpZmVjeWNsZS1jb25maWd1cmF0aW9uLWNvbnN0cmFpbnRzKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuVHJhbnNpdGlvbkluRGF5cz86IG51bWJlclxufVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hlbiBhbiBvYmplY3QgdHJhbnNpdGlvbnMgdG8gYSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQW1hem9uIFMzIGxpZmVjeWNsZSBjb25maWd1cmF0aW9uIHJ1bGVzLCBzZWUgW1RyYW5zaXRpb25pbmcgT2JqZWN0cyBVc2luZyBBbWF6b24gUzMgTGlmZWN5Y2xlXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9saWZlY3ljbGUtdHJhbnNpdGlvbi1nZW5lcmFsLWNvbnNpZGVyYXRpb25zLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zaXRpb24xIHtcbi8qKlxuICogVGhlIHN0b3JhZ2UgY2xhc3MgdG8gd2hpY2ggeW91IHdhbnQgdGhlIG9iamVjdCB0byB0cmFuc2l0aW9uLlxuICovXG5TdG9yYWdlQ2xhc3M6IChcIkRFRVBfQVJDSElWRVwiIHwgXCJHTEFDSUVSXCIgfCBcIkdsYWNpZXJcIiB8IFwiR0xBQ0lFUl9JUlwiIHwgXCJJTlRFTExJR0VOVF9USUVSSU5HXCIgfCBcIk9ORVpPTkVfSUFcIiB8IFwiU1RBTkRBUkRfSUFcIilcbi8qKlxuICogSW5kaWNhdGVzIHdoZW4gb2JqZWN0cyBhcmUgdHJhbnNpdGlvbmVkIHRvIHRoZSBzcGVjaWZpZWQgc3RvcmFnZSBjbGFzcy4gVGhlIGRhdGUgdmFsdWUgbXVzdCBiZSBpbiBJU08gODYwMSBmb3JtYXQuIFRoZSB0aW1lIGlzIGFsd2F5cyBtaWRuaWdodCBVVEMuXG4gKi9cblRyYW5zaXRpb25EYXRlPzogc3RyaW5nXG4vKipcbiAqIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgY3JlYXRpb24gd2hlbiBvYmplY3RzIGFyZSB0cmFuc2l0aW9uZWQgdG8gdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzLiBJZiB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UgY2xhc3MgaXMgYGBJTlRFTExJR0VOVF9USUVSSU5HYGAsIGBgR0xBQ0lFUl9JUmBgLCBgYEdMQUNJRVJgYCwgb3IgYGBERUVQX0FSQ0hJVkVgYCwgdmFsaWQgdmFsdWVzIGFyZSBgYDBgYCBvciBwb3NpdGl2ZSBpbnRlZ2Vycy4gSWYgdGhlIHNwZWNpZmllZCBzdG9yYWdlIGNsYXNzIGlzIGBgU1RBTkRBUkRfSUFgYCBvciBgYE9ORVpPTkVfSUFgYCwgdmFsaWQgdmFsdWVzIGFyZSBwb3NpdGl2ZSBpbnRlZ2VycyBncmVhdGVyIHRoYW4gYGAzMGBgLiBCZSBhd2FyZSB0aGF0IHNvbWUgc3RvcmFnZSBjbGFzc2VzIGhhdmUgYSBtaW5pbXVtIHN0b3JhZ2UgZHVyYXRpb24gYW5kIHRoYXQgeW91J3JlIGNoYXJnZWQgZm9yIHRyYW5zaXRpb25pbmcgb2JqZWN0cyBiZWZvcmUgdGhlaXIgbWluaW11bSBzdG9yYWdlIGR1cmF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDb25zdHJhaW50cyBhbmQgY29uc2lkZXJhdGlvbnMgZm9yIHRyYW5zaXRpb25zXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9saWZlY3ljbGUtdHJhbnNpdGlvbi1nZW5lcmFsLWNvbnNpZGVyYXRpb25zLmh0bWwjbGlmZWN5Y2xlLWNvbmZpZ3VyYXRpb24tY29uc3RyYWludHMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5UcmFuc2l0aW9uSW5EYXlzPzogbnVtYmVyXG59XG4vKipcbiAqIFNldHRpbmdzIHRoYXQgZGVmaW5lIHdoZXJlIGxvZ3MgYXJlIHN0b3JlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dnaW5nQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBidWNrZXQgd2hlcmUgQW1hem9uIFMzIHNob3VsZCBzdG9yZSBzZXJ2ZXIgYWNjZXNzIGxvZyBmaWxlcy4gWW91IGNhbiBzdG9yZSBsb2cgZmlsZXMgaW4gYW55IGJ1Y2tldCB0aGF0IHlvdSBvd24uIEJ5IGRlZmF1bHQsIGxvZ3MgYXJlIHN0b3JlZCBpbiB0aGUgYnVja2V0IHdoZXJlIHRoZSBgYExvZ2dpbmdDb25maWd1cmF0aW9uYGAgcHJvcGVydHkgaXMgZGVmaW5lZC5cbiAqL1xuRGVzdGluYXRpb25CdWNrZXROYW1lPzogc3RyaW5nXG4vKipcbiAqIEEgcHJlZml4IGZvciBhbGwgbG9nIG9iamVjdCBrZXlzLiBJZiB5b3Ugc3RvcmUgbG9nIGZpbGVzIGZyb20gbXVsdGlwbGUgQW1hem9uIFMzIGJ1Y2tldHMgaW4gYSBzaW5nbGUgYnVja2V0LCB5b3UgY2FuIHVzZSBhIHByZWZpeCB0byBkaXN0aW5ndWlzaCB3aGljaCBsb2cgZmlsZXMgY2FtZSBmcm9tIHdoaWNoIGJ1Y2tldC5cbiAqL1xuTG9nRmlsZVByZWZpeD86IHN0cmluZ1xuVGFyZ2V0T2JqZWN0S2V5Rm9ybWF0PzogVGFyZ2V0T2JqZWN0S2V5Rm9ybWF0XG59XG4vKipcbiAqIEFtYXpvbiBTMyBrZXlzIGZvciBsb2cgb2JqZWN0cyBhcmUgcGFydGl0aW9uZWQgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gKiAgIGBgW0Rlc3RpbmF0aW9uUHJlZml4XVtTb3VyY2VBY2NvdW50SWRdL1tTb3VyY2VSZWdpb25dL1tTb3VyY2VCdWNrZXRdL1tZWVlZXS9bTU1dL1tERF0vW1lZWVldLVtNTV0tW0REXS1baGhdLVttbV0tW3NzXS1bVW5pcXVlU3RyaW5nXWBgIFxuICogIFBhcnRpdGlvbmVkUHJlZml4IGRlZmF1bHRzIHRvIEV2ZW50VGltZSBkZWxpdmVyeSB3aGVuIHNlcnZlciBhY2Nlc3MgbG9ncyBhcmUgZGVsaXZlcmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnRpdGlvbmVkUHJlZml4IHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBwYXJ0aXRpb24gZGF0ZSBzb3VyY2UgZm9yIHRoZSBwYXJ0aXRpb25lZCBwcmVmaXguIGBgUGFydGl0aW9uRGF0ZVNvdXJjZWBgIGNhbiBiZSBgYEV2ZW50VGltZWBgIG9yIGBgRGVsaXZlcnlUaW1lYGAuXG4gKiAgRm9yIGBgRGVsaXZlcnlUaW1lYGAsIHRoZSB0aW1lIGluIHRoZSBsb2cgZmlsZSBuYW1lcyBjb3JyZXNwb25kcyB0byB0aGUgZGVsaXZlcnkgdGltZSBmb3IgdGhlIGxvZyBmaWxlcy4gXG4gKiAgIEZvciBgYEV2ZW50VGltZWBgLCBUaGUgbG9ncyBkZWxpdmVyZWQgYXJlIGZvciBhIHNwZWNpZmljIGRheSBvbmx5LiBUaGUgeWVhciwgbW9udGgsIGFuZCBkYXkgY29ycmVzcG9uZCB0byB0aGUgZGF5IG9uIHdoaWNoIHRoZSBldmVudCBvY2N1cnJlZCwgYW5kIHRoZSBob3VyLCBtaW51dGVzIGFuZCBzZWNvbmRzIGFyZSBzZXQgdG8gMDAgaW4gdGhlIGtleS5cbiAqL1xuUGFydGl0aW9uRGF0ZVNvdXJjZT86IChcIkV2ZW50VGltZVwiIHwgXCJEZWxpdmVyeVRpbWVcIilcbn1cbi8qKlxuICogU3BlY2lmaWVzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZvciB0aGUgQ2xvdWRXYXRjaCByZXF1ZXN0IG1ldHJpY3MgKHNwZWNpZmllZCBieSB0aGUgbWV0cmljcyBjb25maWd1cmF0aW9uIElEKSBmcm9tIGFuIEFtYXpvbiBTMyBidWNrZXQuIElmIHlvdSdyZSB1cGRhdGluZyBhbiBleGlzdGluZyBtZXRyaWNzIGNvbmZpZ3VyYXRpb24sIG5vdGUgdGhhdCB0aGlzIGlzIGEgZnVsbCByZXBsYWNlbWVudCBvZiB0aGUgZXhpc3RpbmcgbWV0cmljcyBjb25maWd1cmF0aW9uLiBJZiB5b3UgZG9uJ3QgaW5jbHVkZSB0aGUgZWxlbWVudHMgeW91IHdhbnQgdG8ga2VlcCwgdGhleSBhcmUgZXJhc2VkLiBGb3IgZXhhbXBsZXMsIHNlZSBbQVdTOjpTMzo6QnVja2V0XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1zMy1idWNrZXQuaHRtbCNhd3MtcHJvcGVydGllcy1zMy1idWNrZXQtLWV4YW1wbGVzKS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbUFVUIEJ1Y2tldCBtZXRyaWNzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L0FQSS9SRVNUQnVja2V0UFVUTWV0cmljQ29uZmlndXJhdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBhY2Nlc3MgcG9pbnQgdGhhdCB3YXMgdXNlZCB3aGlsZSBwZXJmb3JtaW5nIG9wZXJhdGlvbnMgb24gdGhlIG9iamVjdC4gVGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBvbmx5IGluY2x1ZGVzIG9iamVjdHMgdGhhdCBtZWV0IHRoZSBmaWx0ZXIncyBjcml0ZXJpYS5cbiAqL1xuQWNjZXNzUG9pbnRBcm4/OiBzdHJpbmdcbi8qKlxuICogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbi4gVGhpcyBjYW4gYmUgYW55IHZhbHVlIHlvdSBjaG9vc2UgdGhhdCBoZWxwcyB5b3UgaWRlbnRpZnkgeW91ciBtZXRyaWNzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbklkOiBzdHJpbmdcbi8qKlxuICogVGhlIHByZWZpeCB0aGF0IGFuIG9iamVjdCBtdXN0IGhhdmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1ldHJpY3MgcmVzdWx0cy5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyBhIGxpc3Qgb2YgdGFnIGZpbHRlcnMgdG8gdXNlIGFzIGEgbWV0cmljcyBjb25maWd1cmF0aW9uIGZpbHRlci4gVGhlIG1ldHJpY3MgY29uZmlndXJhdGlvbiBpbmNsdWRlcyBvbmx5IG9iamVjdHMgdGhhdCBtZWV0IHRoZSBmaWx0ZXIncyBjcml0ZXJpYS5cbiAqL1xuVGFnRmlsdGVycz86IFRhZ0ZpbHRlcltdXG59XG4vKipcbiAqIFRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uIG9mIGFuIFMzIGdlbmVyYWwgcHVycG9zZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWV0YWRhdGFUYWJsZUNvbmZpZ3VyYXRpb24ge1xuUzNUYWJsZXNEZXN0aW5hdGlvbjogUzNUYWJsZXNEZXN0aW5hdGlvblxufVxuLyoqXG4gKiBUaGUgZGVzdGluYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0IG11c3QgYmUgaW4gdGhlIHNhbWUgUmVnaW9uIGFuZCBBV1MtYWNjb3VudCBhcyB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC4gVGhlIHNwZWNpZmllZCBtZXRhZGF0YSB0YWJsZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgYGBhd3NfczNfbWV0YWRhdGFgYCBuYW1lc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9uIHRhYmxlIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM1RhYmxlc0Rlc3RpbmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGZvciB0aGUgdGFibGUgYnVja2V0IHRoYXQncyBzcGVjaWZpZWQgYXMgdGhlIGRlc3RpbmF0aW9uIGluIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0IG11c3QgYmUgaW4gdGhlIHNhbWUgUmVnaW9uIGFuZCBBV1MtYWNjb3VudCBhcyB0aGUgZ2VuZXJhbCBwdXJwb3NlIGJ1Y2tldC5cbiAqL1xuVGFibGVCdWNrZXRBcm46IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZSBmb3IgdGhlIG1ldGFkYXRhIHRhYmxlIGluIHlvdXIgbWV0YWRhdGEgdGFibGUgY29uZmlndXJhdGlvbi4gVGhlIHNwZWNpZmllZCBtZXRhZGF0YSB0YWJsZSBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgYGBhd3NfczNfbWV0YWRhdGFgYCBuYW1lc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9uIHRhYmxlIGJ1Y2tldC5cbiAqL1xuVGFibGVOYW1lOiBzdHJpbmdcbi8qKlxuICogVGhlIHRhYmxlIGJ1Y2tldCBuYW1lc3BhY2UgZm9yIHRoZSBtZXRhZGF0YSB0YWJsZSBpbiB5b3VyIG1ldGFkYXRhIHRhYmxlIGNvbmZpZ3VyYXRpb24uIFRoaXMgdmFsdWUgaXMgYWx3YXlzIGBgYXdzX3MzX21ldGFkYXRhYGAuXG4gKi9cblRhYmxlTmFtZXNwYWNlPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBmb3IgdGhlIG1ldGFkYXRhIHRhYmxlIGluIHRoZSBtZXRhZGF0YSB0YWJsZSBjb25maWd1cmF0aW9uLiBUaGUgc3BlY2lmaWVkIG1ldGFkYXRhIHRhYmxlIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBgYGF3c19zM19tZXRhZGF0YWBgIG5hbWVzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24gdGFibGUgYnVja2V0LlxuICovXG5UYWJsZUFybj86IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YUNvbmZpZ3VyYXRpb24ge1xuRGVzdGluYXRpb24/OiBNZXRhZGF0YURlc3RpbmF0aW9uXG5Kb3VybmFsVGFibGVDb25maWd1cmF0aW9uOiBKb3VybmFsVGFibGVDb25maWd1cmF0aW9uXG5JbnZlbnRvcnlUYWJsZUNvbmZpZ3VyYXRpb24/OiBJbnZlbnRvcnlUYWJsZUNvbmZpZ3VyYXRpb25cbn1cbi8qKlxuICogVGhlIGRlc3RpbmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgbWV0YWRhdGEgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YURlc3RpbmF0aW9uIHtcbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIHRhYmxlIGJ1Y2tldC5cbiAqL1xuVGFibGVCdWNrZXRUeXBlOiAoXCJhd3NcIiB8IFwiY3VzdG9tZXJcIilcbi8qKlxuICogVGhlIEFSTiBvZiB0aGUgdGFibGUgYnVja2V0LlxuICovXG5UYWJsZUJ1Y2tldEFybj86IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZXNwYWNlIG9mIHRoZSB0YWJsZS5cbiAqL1xuVGFibGVOYW1lc3BhY2U/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBqb3VybmFsIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpvdXJuYWxUYWJsZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgam91cm5hbCB0YWJsZS5cbiAqL1xuVGFibGVOYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBBUk4gb2YgdGhlIGpvdXJuYWwgdGFibGUuXG4gKi9cblRhYmxlQXJuPzogc3RyaW5nXG5SZWNvcmRFeHBpcmF0aW9uOiBSZWNvcmRFeHBpcmF0aW9uXG5FbmNyeXB0aW9uQ29uZmlndXJhdGlvbj86IE1ldGFkYXRhVGFibGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvblxufVxuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRFeHBpcmF0aW9uIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgcmVjb3JkIGV4cGlyYXRpb24gaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cbiAqL1xuRXhwaXJhdGlvbjogKFwiRU5BQkxFRFwiIHwgXCJESVNBQkxFRFwiKVxuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggcmVjb3JkcyBleHBpcmUuIFJlcXVpcmVkIGlmIEV4cGlyYXRpb24gaXMgRU5BQkxFRC5cbiAqL1xuRGF5cz86IG51bWJlclxufVxuLyoqXG4gKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgam91cm5hbCB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0YVRhYmxlRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gYWxnb3JpdGhtIHRvIHVzZSBmb3IgZW5jcnlwdGluZyB0YWJsZXMuXG4gKi9cblNzZUFsZ29yaXRobTogKFwiYXdzOmttc1wiIHwgXCJBRVMyNTZcIilcbi8qKlxuICogVGhlIEFSTiBvZiB0aGUgS01TIGtleS4gUmVxdWlyZWQgaWYgU3NlQWxnb3JpdGhtIGlzIGF3czprbXMuXG4gKi9cbkttc0tleUFybj86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGludmVudG9yeSB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnZlbnRvcnlUYWJsZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgaW52ZW50b3J5IHRhYmxlLlxuICovXG5UYWJsZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogVGhlIEFSTiBvZiB0aGUgaW52ZW50b3J5IHRhYmxlLlxuICovXG5UYWJsZUFybj86IHN0cmluZ1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBpbnZlbnRvcnkgdGFibGUgY29uZmlndXJhdGlvbiBpcyBlbmFibGVkIG9yIGRpc2FibGVkLlxuICovXG5Db25maWd1cmF0aW9uU3RhdGU6IChcIkVOQUJMRURcIiB8IFwiRElTQUJMRURcIilcbkVuY3J5cHRpb25Db25maWd1cmF0aW9uPzogTWV0YWRhdGFUYWJsZUVuY3J5cHRpb25Db25maWd1cmF0aW9uMVxufVxuLyoqXG4gKiBUaGUgZW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgaW52ZW50b3J5IHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhVGFibGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjEge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gYWxnb3JpdGhtIHRvIHVzZSBmb3IgZW5jcnlwdGluZyB0YWJsZXMuXG4gKi9cblNzZUFsZ29yaXRobTogKFwiYXdzOmttc1wiIHwgXCJBRVMyNTZcIilcbi8qKlxuICogVGhlIEFSTiBvZiB0aGUgS01TIGtleS4gUmVxdWlyZWQgaWYgU3NlQWxnb3JpdGhtIGlzIGF3czprbXMuXG4gKi9cbkttc0tleUFybj86IHN0cmluZ1xufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHRoYXQgZGVmaW5lcyBob3cgQW1hem9uIFMzIGhhbmRsZXMgYnVja2V0IG5vdGlmaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbiB7XG5FdmVudEJyaWRnZUNvbmZpZ3VyYXRpb24/OiBFdmVudEJyaWRnZUNvbmZpZ3VyYXRpb25cbi8qKlxuICogRGVzY3JpYmVzIHRoZSBMQU1sb25nIGZ1bmN0aW9ucyB0byBpbnZva2UgYW5kIHRoZSBldmVudHMgZm9yIHdoaWNoIHRvIGludm9rZSB0aGVtLlxuICovXG5MYW1iZGFDb25maWd1cmF0aW9ucz86IExhbWJkYUNvbmZpZ3VyYXRpb25bXVxuLyoqXG4gKiBUaGUgQW1hem9uIFNpbXBsZSBRdWV1ZSBTZXJ2aWNlIHF1ZXVlcyB0byBwdWJsaXNoIG1lc3NhZ2VzIHRvIGFuZCB0aGUgZXZlbnRzIGZvciB3aGljaCB0byBwdWJsaXNoIG1lc3NhZ2VzLlxuICovXG5RdWV1ZUNvbmZpZ3VyYXRpb25zPzogUXVldWVDb25maWd1cmF0aW9uW11cbi8qKlxuICogVGhlIHRvcGljIHRvIHdoaWNoIG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgYW5kIHRoZSBldmVudHMgZm9yIHdoaWNoIG5vdGlmaWNhdGlvbnMgYXJlIGdlbmVyYXRlZC5cbiAqL1xuVG9waWNDb25maWd1cmF0aW9ucz86IFRvcGljQ29uZmlndXJhdGlvbltdXG59XG4vKipcbiAqIEVuYWJsZXMgZGVsaXZlcnkgb2YgZXZlbnRzIHRvIEFtYXpvbiBFdmVudEJyaWRnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudEJyaWRnZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBFbmFibGVzIGRlbGl2ZXJ5IG9mIGV2ZW50cyB0byBBbWF6b24gRXZlbnRCcmlkZ2UuXG4gKi9cbkV2ZW50QnJpZGdlRW5hYmxlZDogKGJvb2xlYW4gJiBzdHJpbmcpXG59XG4vKipcbiAqIERlc2NyaWJlcyB0aGUgTEFNbG9uZyBmdW5jdGlvbnMgdG8gaW52b2tlIGFuZCB0aGUgZXZlbnRzIGZvciB3aGljaCB0byBpbnZva2UgdGhlbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFDb25maWd1cmF0aW9uIHtcbi8qKlxuICogVGhlIEFtYXpvbiBTMyBidWNrZXQgZXZlbnQgZm9yIHdoaWNoIHRvIGludm9rZSB0aGUgTEFNbG9uZyBmdW5jdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbU3VwcG9ydGVkIEV2ZW50IFR5cGVzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9Ob3RpZmljYXRpb25Ib3dUby5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuRXZlbnQ6IHN0cmluZ1xuRmlsdGVyPzogTm90aWZpY2F0aW9uRmlsdGVyXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgTEFNbG9uZyBmdW5jdGlvbiB0aGF0IEFtYXpvbiBTMyBpbnZva2VzIHdoZW4gdGhlIHNwZWNpZmllZCBldmVudCB0eXBlIG9jY3Vycy5cbiAqL1xuRnVuY3Rpb246IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgZmlsdGVyaW5nIHJ1bGVzIHRoYXQgZGV0ZXJtaW5lIHdoaWNoIG9iamVjdHMgaW52b2tlIHRoZSBBV1MgTGFtYmRhIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBjcmVhdGUgYSBmaWx0ZXIgc28gdGhhdCBvbmx5IGltYWdlIGZpbGVzIHdpdGggYSBgYC5qcGdgYCBleHRlbnNpb24gaW52b2tlIHRoZSBmdW5jdGlvbiB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSBBbWF6b24gUzMgYnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkZpbHRlciB7XG5TM0tleTogUzNLZXlGaWx0ZXJcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggYW5kIHN1ZmZpeCBmaWx0ZXJpbmcgcnVsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUzNLZXlGaWx0ZXIge1xuLyoqXG4gKiBBIGxpc3Qgb2YgY29udGFpbmVycyBmb3IgdGhlIGtleS12YWx1ZSBwYWlyIHRoYXQgZGVmaW5lcyB0aGUgY3JpdGVyaWEgZm9yIHRoZSBmaWx0ZXIgcnVsZS5cbiAqL1xuUnVsZXM6IEZpbHRlclJ1bGVbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIEFtYXpvbiBTMyBvYmplY3Qga2V5IG5hbWUgdG8gZmlsdGVyIG9uLiBBbiBvYmplY3Qga2V5IG5hbWUgaXMgdGhlIG5hbWUgYXNzaWduZWQgdG8gYW4gb2JqZWN0IGluIHlvdXIgQW1hem9uIFMzIGJ1Y2tldC4gWW91IHNwZWNpZnkgd2hldGhlciB0byBmaWx0ZXIgb24gdGhlIHN1ZmZpeCBvciBwcmVmaXggb2YgdGhlIG9iamVjdCBrZXkgbmFtZS4gQSBwcmVmaXggaXMgYSBzcGVjaWZpYyBzdHJpbmcgb2YgY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIG9iamVjdCBrZXkgbmFtZSwgd2hpY2ggeW91IGNhbiB1c2UgdG8gb3JnYW5pemUgb2JqZWN0cy4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gc3RhcnQgdGhlIGtleSBuYW1lcyBvZiByZWxhdGVkIG9iamVjdHMgd2l0aCBhIHByZWZpeCwgc3VjaCBhcyBgYDIwMjMtYGAgb3IgYGBlbmdpbmVlcmluZy9gYC4gVGhlbiwgeW91IGNhbiB1c2UgYGBGaWx0ZXJSdWxlYGAgdG8gZmluZCBvYmplY3RzIGluIGEgYnVja2V0IHdpdGgga2V5IG5hbWVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBwcmVmaXguIEEgc3VmZml4IGlzIHNpbWlsYXIgdG8gYSBwcmVmaXgsIGJ1dCBpdCBpcyBhdCB0aGUgZW5kIG9mIHRoZSBvYmplY3Qga2V5IG5hbWUgaW5zdGVhZCBvZiBhdCB0aGUgYmVnaW5uaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclJ1bGUge1xuLyoqXG4gKiBUaGUgb2JqZWN0IGtleSBuYW1lIHByZWZpeCBvciBzdWZmaXggaWRlbnRpZnlpbmcgb25lIG9yIG1vcmUgb2JqZWN0cyB0byB3aGljaCB0aGUgZmlsdGVyaW5nIHJ1bGUgYXBwbGllcy4gVGhlIG1heGltdW0gbGVuZ3RoIGlzIDEsMDI0IGNoYXJhY3RlcnMuIE92ZXJsYXBwaW5nIHByZWZpeGVzIGFuZCBzdWZmaXhlcyBhcmUgbm90IHN1cHBvcnRlZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uZmlndXJpbmcgRXZlbnQgTm90aWZpY2F0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvTm90aWZpY2F0aW9uSG93VG8uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbk5hbWU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgdGhhdCB0aGUgZmlsdGVyIHNlYXJjaGVzIGZvciBpbiBvYmplY3Qga2V5IG5hbWVzLlxuICovXG5WYWx1ZTogc3RyaW5nXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgY29uZmlndXJhdGlvbiBmb3IgcHVibGlzaGluZyBtZXNzYWdlcyB0byBhbiBBbWF6b24gU2ltcGxlIFF1ZXVlIFNlcnZpY2UgKEFtYXpvbiBTUVMpIHF1ZXVlIHdoZW4gQW1hem9uIFMzIGRldGVjdHMgc3BlY2lmaWVkIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWV1ZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFMzIGJ1Y2tldCBldmVudCBhYm91dCB3aGljaCB5b3Ugd2FudCB0byBwdWJsaXNoIG1lc3NhZ2VzIHRvIEFtYXpvbiBTUVMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1N1cHBvcnRlZCBFdmVudCBUeXBlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvTm90aWZpY2F0aW9uSG93VG8uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbkV2ZW50OiBzdHJpbmdcbkZpbHRlcj86IE5vdGlmaWNhdGlvbkZpbHRlcjFcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBbWF6b24gU1FTIHF1ZXVlIHRvIHdoaWNoIEFtYXpvbiBTMyBwdWJsaXNoZXMgYSBtZXNzYWdlIHdoZW4gaXQgZGV0ZWN0cyBldmVudHMgb2YgdGhlIHNwZWNpZmllZCB0eXBlLiBGSUZPIHF1ZXVlcyBhcmUgbm90IGFsbG93ZWQgd2hlbiBlbmFibGluZyBhbiBTUVMgcXVldWUgYXMgdGhlIGV2ZW50IG5vdGlmaWNhdGlvbiBkZXN0aW5hdGlvbi5cbiAqL1xuUXVldWU6IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgZmlsdGVyaW5nIHJ1bGVzIHRoYXQgZGV0ZXJtaW5lIHdoaWNoIG9iamVjdHMgdHJpZ2dlciBub3RpZmljYXRpb25zLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBjcmVhdGUgYSBmaWx0ZXIgc28gdGhhdCBBbWF6b24gUzMgc2VuZHMgbm90aWZpY2F0aW9ucyBvbmx5IHdoZW4gaW1hZ2UgZmlsZXMgd2l0aCBhIGBgLmpwZ2BgIGV4dGVuc2lvbiBhcmUgYWRkZWQgdG8gdGhlIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uZmlndXJpbmcgZXZlbnQgbm90aWZpY2F0aW9ucyB1c2luZyBvYmplY3Qga2V5IG5hbWUgZmlsdGVyaW5nXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXItZ3VpZGUvbm90aWZpY2F0aW9uLWhvdy10by1maWx0ZXJpbmcuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uRmlsdGVyMSB7XG5TM0tleTogUzNLZXlGaWx0ZXJcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIHNwZWNpZnlpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHB1YmxpY2F0aW9uIG9mIG1lc3NhZ2VzIHRvIGFuIEFtYXpvbiBTaW1wbGUgTm90aWZpY2F0aW9uIFNlcnZpY2UgKEFtYXpvbiBTTlMpIHRvcGljIHdoZW4gQW1hem9uIFMzIGRldGVjdHMgc3BlY2lmaWVkIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb3BpY0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgQW1hem9uIFMzIGJ1Y2tldCBldmVudCBhYm91dCB3aGljaCB0byBzZW5kIG5vdGlmaWNhdGlvbnMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1N1cHBvcnRlZCBFdmVudCBUeXBlc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvTm90aWZpY2F0aW9uSG93VG8uaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cbkV2ZW50OiBzdHJpbmdcbkZpbHRlcj86IE5vdGlmaWNhdGlvbkZpbHRlcjJcbi8qKlxuICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBBbWF6b24gU05TIHRvcGljIHRvIHdoaWNoIEFtYXpvbiBTMyBwdWJsaXNoZXMgYSBtZXNzYWdlIHdoZW4gaXQgZGV0ZWN0cyBldmVudHMgb2YgdGhlIHNwZWNpZmllZCB0eXBlLlxuICovXG5Ub3BpYzogc3RyaW5nXG59XG4vKipcbiAqIFRoZSBmaWx0ZXJpbmcgcnVsZXMgdGhhdCBkZXRlcm1pbmUgZm9yIHdoaWNoIG9iamVjdHMgdG8gc2VuZCBub3RpZmljYXRpb25zLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBjcmVhdGUgYSBmaWx0ZXIgc28gdGhhdCBBbWF6b24gUzMgc2VuZHMgbm90aWZpY2F0aW9ucyBvbmx5IHdoZW4gaW1hZ2UgZmlsZXMgd2l0aCBhIGBgLmpwZ2BgIGV4dGVuc2lvbiBhcmUgYWRkZWQgdG8gdGhlIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25GaWx0ZXIyIHtcblMzS2V5OiBTM0tleUZpbHRlclxufVxuLyoqXG4gKiBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBkaXJlY3RvcnkgYnVja2V0cy5cbiAqICAgUGxhY2VzIGFuIE9iamVjdCBMb2NrIGNvbmZpZ3VyYXRpb24gb24gdGhlIHNwZWNpZmllZCBidWNrZXQuIFRoZSBydWxlIHNwZWNpZmllZCBpbiB0aGUgT2JqZWN0IExvY2sgY29uZmlndXJhdGlvbiB3aWxsIGJlIGFwcGxpZWQgYnkgZGVmYXVsdCB0byBldmVyeSBuZXcgb2JqZWN0IHBsYWNlZCBpbiB0aGUgc3BlY2lmaWVkIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbTG9ja2luZyBPYmplY3RzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9vYmplY3QtbG9jay5odG1sKS4gXG4gKiAgICArICBUaGUgYGBEZWZhdWx0UmV0ZW50aW9uYGAgc2V0dGluZ3MgcmVxdWlyZSBib3RoIGEgbW9kZSBhbmQgYSBwZXJpb2QuXG4gKiAgICsgIFRoZSBgYERlZmF1bHRSZXRlbnRpb25gYCBwZXJpb2QgY2FuIGJlIGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAgYnV0IHlvdSBtdXN0IHNlbGVjdCBvbmUuIFlvdSBjYW5ub3Qgc3BlY2lmeSBgYERheXNgYCBhbmQgYGBZZWFyc2BgIGF0IHRoZSBzYW1lIHRpbWUuXG4gKiAgICsgIFlvdSBjYW4gZW5hYmxlIE9iamVjdCBMb2NrIGZvciBuZXcgb3IgZXhpc3RpbmcgYnVja2V0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ29uZmlndXJpbmcgT2JqZWN0IExvY2tdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1sb2NrLWNvbmZpZ3VyZS5odG1sKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYmplY3RMb2NrQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgYnVja2V0IGhhcyBhbiBPYmplY3QgTG9jayBjb25maWd1cmF0aW9uIGVuYWJsZWQuIEVuYWJsZSBgYE9iamVjdExvY2tFbmFibGVkYGAgd2hlbiB5b3UgYXBwbHkgYGBPYmplY3RMb2NrQ29uZmlndXJhdGlvbmBgIHRvIGEgYnVja2V0LlxuICovXG5PYmplY3RMb2NrRW5hYmxlZD86IFwiRW5hYmxlZFwiXG5SdWxlPzogT2JqZWN0TG9ja1J1bGVcbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBPYmplY3QgTG9jayBydWxlIGZvciB0aGUgc3BlY2lmaWVkIG9iamVjdC4gRW5hYmxlIHRoaXMgcnVsZSB3aGVuIHlvdSBhcHBseSBgYE9iamVjdExvY2tDb25maWd1cmF0aW9uYGAgdG8gYSBidWNrZXQuIElmIE9iamVjdCBMb2NrIGlzIHR1cm5lZCBvbiwgYnVja2V0IHNldHRpbmdzIHJlcXVpcmUgYm90aCBgYE1vZGVgYCBhbmQgYSBwZXJpb2Qgb2YgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC4gWW91IGNhbm5vdCBzcGVjaWZ5IGBgRGF5c2BgIGFuZCBgYFllYXJzYGAgYXQgdGhlIHNhbWUgdGltZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbT2JqZWN0TG9ja1J1bGVdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLWJ1Y2tldC1vYmplY3Rsb2NrcnVsZS5odG1sKSBhbmQgW0RlZmF1bHRSZXRlbnRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLWJ1Y2tldC1kZWZhdWx0cmV0ZW50aW9uLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdExvY2tSdWxlIHtcbkRlZmF1bHRSZXRlbnRpb24/OiBEZWZhdWx0UmV0ZW50aW9uXG59XG4vKipcbiAqIFRoZSBkZWZhdWx0IE9iamVjdCBMb2NrIHJldGVudGlvbiBtb2RlIGFuZCBwZXJpb2QgdGhhdCB5b3Ugd2FudCB0byBhcHBseSB0byBuZXcgb2JqZWN0cyBwbGFjZWQgaW4gdGhlIHNwZWNpZmllZCBidWNrZXQuIElmIE9iamVjdCBMb2NrIGlzIHR1cm5lZCBvbiwgYnVja2V0IHNldHRpbmdzIHJlcXVpcmUgYm90aCBgYE1vZGVgYCBhbmQgYSBwZXJpb2Qgb2YgZWl0aGVyIGBgRGF5c2BgIG9yIGBgWWVhcnNgYC4gWW91IGNhbm5vdCBzcGVjaWZ5IGBgRGF5c2BgIGFuZCBgYFllYXJzYGAgYXQgdGhlIHNhbWUgdGltZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYWxsb3dhYmxlIHZhbHVlcyBmb3IgbW9kZSBhbmQgcGVyaW9kLCBzZWUgW0RlZmF1bHRSZXRlbnRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLXMzLWJ1Y2tldC1kZWZhdWx0cmV0ZW50aW9uLmh0bWwpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRSZXRlbnRpb24ge1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIHllYXJzIHRoYXQgeW91IHdhbnQgdG8gc3BlY2lmeSBmb3IgdGhlIGRlZmF1bHQgcmV0ZW50aW9uIHBlcmlvZC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCB5b3UgbXVzdCBzcGVjaWZ5IGBgTW9kZWBgIGFuZCBzcGVjaWZ5IGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAuXG4gKi9cblllYXJzPzogbnVtYmVyXG4vKipcbiAqIFRoZSBudW1iZXIgb2YgZGF5cyB0aGF0IHlvdSB3YW50IHRvIHNwZWNpZnkgZm9yIHRoZSBkZWZhdWx0IHJldGVudGlvbiBwZXJpb2QuIElmIE9iamVjdCBMb2NrIGlzIHR1cm5lZCBvbiwgeW91IG11c3Qgc3BlY2lmeSBgYE1vZGVgYCBhbmQgc3BlY2lmeSBlaXRoZXIgYGBEYXlzYGAgb3IgYGBZZWFyc2BgLlxuICovXG5EYXlzPzogbnVtYmVyXG4vKipcbiAqIFRoZSBkZWZhdWx0IE9iamVjdCBMb2NrIHJldGVudGlvbiBtb2RlIHlvdSB3YW50IHRvIGFwcGx5IHRvIG5ldyBvYmplY3RzIHBsYWNlZCBpbiB0aGUgc3BlY2lmaWVkIGJ1Y2tldC4gSWYgT2JqZWN0IExvY2sgaXMgdHVybmVkIG9uLCB5b3UgbXVzdCBzcGVjaWZ5IGBgTW9kZWBgIGFuZCBzcGVjaWZ5IGVpdGhlciBgYERheXNgYCBvciBgYFllYXJzYGAuXG4gKi9cbk1vZGU/OiAoXCJDT01QTElBTkNFXCIgfCBcIkdPVkVSTkFOQ0VcIilcbn1cbi8qKlxuICogQ29uZmlndXJhdGlvbiB0aGF0IGRlZmluZXMgaG93IEFtYXpvbiBTMyBoYW5kbGVzIE9iamVjdCBPd25lcnNoaXAgcnVsZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3duZXJzaGlwQ29udHJvbHMge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBlbGVtZW50IGZvciBPYmplY3QgT3duZXJzaGlwIHJ1bGVzLlxuICovXG5SdWxlczogT3duZXJzaGlwQ29udHJvbHNSdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIGFuIE9iamVjdCBPd25lcnNoaXAgcnVsZS5cbiAqICBTMyBPYmplY3QgT3duZXJzaGlwIGlzIGFuIEFtYXpvbiBTMyBidWNrZXQtbGV2ZWwgc2V0dGluZyB0aGF0IHlvdSBjYW4gdXNlIHRvIGRpc2FibGUgYWNjZXNzIGNvbnRyb2wgbGlzdHMgKEFDTHMpIGFuZCB0YWtlIG93bmVyc2hpcCBvZiBldmVyeSBvYmplY3QgaW4geW91ciBidWNrZXQsIHNpbXBsaWZ5aW5nIGFjY2VzcyBtYW5hZ2VtZW50IGZvciBkYXRhIHN0b3JlZCBpbiBBbWF6b24gUzMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0NvbnRyb2xsaW5nIG93bmVyc2hpcCBvZiBvYmplY3RzIGFuZCBkaXNhYmxpbmcgQUNMc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvYWJvdXQtb2JqZWN0LW93bmVyc2hpcC5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPd25lcnNoaXBDb250cm9sc1J1bGUge1xuLyoqXG4gKiBTcGVjaWZpZXMgYW4gb2JqZWN0IG93bmVyc2hpcCBydWxlLlxuICovXG5PYmplY3RPd25lcnNoaXA/OiAoXCJPYmplY3RXcml0ZXJcIiB8IFwiQnVja2V0T3duZXJQcmVmZXJyZWRcIiB8IFwiQnVja2V0T3duZXJFbmZvcmNlZFwiKVxufVxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHRoYXQgZGVmaW5lcyBob3cgQW1hem9uIFMzIGhhbmRsZXMgcHVibGljIGFjY2Vzcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNBY2Nlc3NCbG9ja0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIGJsb2NrIHB1YmxpYyBhY2Nlc3MgY29udHJvbCBsaXN0cyAoQUNMcykgZm9yIHRoaXMgYnVja2V0IGFuZCBvYmplY3RzIGluIHRoaXMgYnVja2V0LiBTZXR0aW5nIHRoaXMgZWxlbWVudCB0byBgYFRSVUVgYCBjYXVzZXMgdGhlIGZvbGxvd2luZyBiZWhhdmlvcjpcbiAqICAgKyAgUFVUIEJ1Y2tldCBBQ0wgYW5kIFBVVCBPYmplY3QgQUNMIGNhbGxzIGZhaWwgaWYgdGhlIHNwZWNpZmllZCBBQ0wgaXMgcHVibGljLlxuICogICArICBQVVQgT2JqZWN0IGNhbGxzIGZhaWwgaWYgdGhlIHJlcXVlc3QgaW5jbHVkZXMgYSBwdWJsaWMgQUNMLlxuICogICArICBQVVQgQnVja2V0IGNhbGxzIGZhaWwgaWYgdGhlIHJlcXVlc3QgaW5jbHVkZXMgYSBwdWJsaWMgQUNMLlxuICogICBcbiAqICBFbmFibGluZyB0aGlzIHNldHRpbmcgZG9lc24ndCBhZmZlY3QgZXhpc3RpbmcgcG9saWNpZXMgb3IgQUNMcy5cbiAqL1xuQmxvY2tQdWJsaWNBY2xzPzogYm9vbGVhblxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIGJsb2NrIHB1YmxpYyBidWNrZXQgcG9saWNpZXMgZm9yIHRoaXMgYnVja2V0LiBTZXR0aW5nIHRoaXMgZWxlbWVudCB0byBgYFRSVUVgYCBjYXVzZXMgQW1hem9uIFMzIHRvIHJlamVjdCBjYWxscyB0byBQVVQgQnVja2V0IHBvbGljeSBpZiB0aGUgc3BlY2lmaWVkIGJ1Y2tldCBwb2xpY3kgYWxsb3dzIHB1YmxpYyBhY2Nlc3MuIFxuICogIEVuYWJsaW5nIHRoaXMgc2V0dGluZyBkb2Vzbid0IGFmZmVjdCBleGlzdGluZyBidWNrZXQgcG9saWNpZXMuXG4gKi9cbkJsb2NrUHVibGljUG9saWN5PzogYm9vbGVhblxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIGlnbm9yZSBwdWJsaWMgQUNMcyBmb3IgdGhpcyBidWNrZXQgYW5kIG9iamVjdHMgaW4gdGhpcyBidWNrZXQuIFNldHRpbmcgdGhpcyBlbGVtZW50IHRvIGBgVFJVRWBgIGNhdXNlcyBBbWF6b24gUzMgdG8gaWdub3JlIGFsbCBwdWJsaWMgQUNMcyBvbiB0aGlzIGJ1Y2tldCBhbmQgb2JqZWN0cyBpbiB0aGlzIGJ1Y2tldC5cbiAqICBFbmFibGluZyB0aGlzIHNldHRpbmcgZG9lc24ndCBhZmZlY3QgdGhlIHBlcnNpc3RlbmNlIG9mIGFueSBleGlzdGluZyBBQ0xzIGFuZCBkb2Vzbid0IHByZXZlbnQgbmV3IHB1YmxpYyBBQ0xzIGZyb20gYmVpbmcgc2V0LlxuICovXG5JZ25vcmVQdWJsaWNBY2xzPzogYm9vbGVhblxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIHJlc3RyaWN0IHB1YmxpYyBidWNrZXQgcG9saWNpZXMgZm9yIHRoaXMgYnVja2V0LiBTZXR0aW5nIHRoaXMgZWxlbWVudCB0byBgYFRSVUVgYCByZXN0cmljdHMgYWNjZXNzIHRvIHRoaXMgYnVja2V0IHRvIG9ubHkgQVdTLXNlcnZpY2UgcHJpbmNpcGFscyBhbmQgYXV0aG9yaXplZCB1c2VycyB3aXRoaW4gdGhpcyBhY2NvdW50IGlmIHRoZSBidWNrZXQgaGFzIGEgcHVibGljIHBvbGljeS5cbiAqICBFbmFibGluZyB0aGlzIHNldHRpbmcgZG9lc24ndCBhZmZlY3QgcHJldmlvdXNseSBzdG9yZWQgYnVja2V0IHBvbGljaWVzLCBleGNlcHQgdGhhdCBwdWJsaWMgYW5kIGNyb3NzLWFjY291bnQgYWNjZXNzIHdpdGhpbiBhbnkgcHVibGljIGJ1Y2tldCBwb2xpY3ksIGluY2x1ZGluZyBub24tcHVibGljIGRlbGVnYXRpb24gdG8gc3BlY2lmaWMgYWNjb3VudHMsIGlzIGJsb2NrZWQuXG4gKi9cblJlc3RyaWN0UHVibGljQnVja2V0cz86IGJvb2xlYW5cbn1cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgcmVwbGljYXRpbmcgb2JqZWN0cyBpbiBhbiBTMyBidWNrZXQuIFRvIGVuYWJsZSByZXBsaWNhdGlvbiwgeW91IG11c3QgYWxzbyBlbmFibGUgdmVyc2lvbmluZyBieSB1c2luZyB0aGUgYGBWZXJzaW9uaW5nQ29uZmlndXJhdGlvbmBgIHByb3BlcnR5LlxuICogIEFtYXpvbiBTMyBjYW4gc3RvcmUgcmVwbGljYXRlZCBvYmplY3RzIGluIGEgc2luZ2xlIGRlc3RpbmF0aW9uIGJ1Y2tldCBvciBtdWx0aXBsZSBkZXN0aW5hdGlvbiBidWNrZXRzLiBUaGUgZGVzdGluYXRpb24gYnVja2V0IG9yIGJ1Y2tldHMgbXVzdCBhbHJlYWR5IGV4aXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgSUFNbG9uZyAoSUFNKSByb2xlIHRoYXQgQW1hem9uIFMzIGFzc3VtZXMgd2hlbiByZXBsaWNhdGluZyBvYmplY3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtIb3cgdG8gU2V0IFVwIFJlcGxpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9yZXBsaWNhdGlvbi1ob3ctc2V0dXAuaHRtbCkgaW4gdGhlICpBbWF6b24gUzMgVXNlciBHdWlkZSouXG4gKi9cblJvbGU6IHN0cmluZ1xuLyoqXG4gKiBBIGNvbnRhaW5lciBmb3Igb25lIG9yIG1vcmUgcmVwbGljYXRpb24gcnVsZXMuIEEgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHJ1bGUgYW5kIGNhbiBjb250YWluIGEgbWF4aW11bSBvZiAxLDAwMCBydWxlcy5cbiAqL1xuUnVsZXM6IFJlcGxpY2F0aW9uUnVsZVtdXG59XG4vKipcbiAqIFNwZWNpZmllcyB3aGljaCBBbWF6b24gUzMgb2JqZWN0cyB0byByZXBsaWNhdGUgYW5kIHdoZXJlIHRvIHN0b3JlIHRoZSByZXBsaWNhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblJ1bGUge1xuRGVsZXRlTWFya2VyUmVwbGljYXRpb24/OiBEZWxldGVNYXJrZXJSZXBsaWNhdGlvblxuRGVzdGluYXRpb246IFJlcGxpY2F0aW9uRGVzdGluYXRpb25cbkZpbHRlcj86IFJlcGxpY2F0aW9uUnVsZUZpbHRlclxuLyoqXG4gKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVsZS4gVGhlIG1heGltdW0gdmFsdWUgaXMgMjU1IGNoYXJhY3RlcnMuIElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgdmFsdWUsIEFXUyBDbG91ZEZvcm1hdGlvbiBnZW5lcmF0ZXMgYSByYW5kb20gSUQuIFdoZW4gdXNpbmcgYSBWMiByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIHRoaXMgcHJvcGVydHkgaXMgY2FwaXRhbGl6ZWQgYXMgXCJJRFwiLlxuICovXG5JZD86IHN0cmluZ1xuLyoqXG4gKiBBbiBvYmplY3Qga2V5IG5hbWUgcHJlZml4IHRoYXQgaWRlbnRpZmllcyB0aGUgb2JqZWN0IG9yIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJ1bGUgYXBwbGllcy4gVGhlIG1heGltdW0gcHJlZml4IGxlbmd0aCBpcyAxLDAyNCBjaGFyYWN0ZXJzLiBUbyBpbmNsdWRlIGFsbCBvYmplY3RzIGluIGEgYnVja2V0LCBzcGVjaWZ5IGFuIGVtcHR5IHN0cmluZy4gVG8gZmlsdGVyIHVzaW5nIGEgVjEgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiwgYWRkIHRoZSBgYFByZWZpeGBgIGRpcmVjdGx5IGFzIGEgY2hpbGQgZWxlbWVudCBvZiB0aGUgYGBSdWxlYGAgZWxlbWVudC5cbiAqICAgUmVwbGFjZW1lbnQgbXVzdCBiZSBtYWRlIGZvciBvYmplY3Qga2V5cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyBjYXJyaWFnZSByZXR1cm5zKSB3aGVuIHVzaW5nIFhNTCByZXF1ZXN0cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbWE1MIHJlbGF0ZWQgb2JqZWN0IGtleSBjb25zdHJhaW50c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC91c2VyZ3VpZGUvb2JqZWN0LWtleXMuaHRtbCNvYmplY3Qta2V5LXhtbC1yZWxhdGVkLWNvbnN0cmFpbnRzKS5cbiAqL1xuUHJlZml4Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBwcmlvcml0eSBpbmRpY2F0ZXMgd2hpY2ggcnVsZSBoYXMgcHJlY2VkZW5jZSB3aGVuZXZlciB0d28gb3IgbW9yZSByZXBsaWNhdGlvbiBydWxlcyBjb25mbGljdC4gQW1hem9uIFMzIHdpbGwgYXR0ZW1wdCB0byByZXBsaWNhdGUgb2JqZWN0cyBhY2NvcmRpbmcgdG8gYWxsIHJlcGxpY2F0aW9uIHJ1bGVzLiBIb3dldmVyLCBpZiB0aGVyZSBhcmUgdHdvIG9yIG1vcmUgcnVsZXMgd2l0aCB0aGUgc2FtZSBkZXN0aW5hdGlvbiBidWNrZXQsIHRoZW4gb2JqZWN0cyB3aWxsIGJlIHJlcGxpY2F0ZWQgYWNjb3JkaW5nIHRvIHRoZSBydWxlIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIGhpZ2hlciB0aGUgcHJpb3JpdHkuIFxuICogIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1JlcGxpY2F0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L2Rldi9yZXBsaWNhdGlvbi5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqL1xuUHJpb3JpdHk/OiBudW1iZXJcblNvdXJjZVNlbGVjdGlvbkNyaXRlcmlhPzogU291cmNlU2VsZWN0aW9uQ3JpdGVyaWFcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHJ1bGUgaXMgZW5hYmxlZC5cbiAqL1xuU3RhdHVzOiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG59XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyByZXBsaWNhdGVzIGRlbGV0ZSBtYXJrZXJzLiBJZiB5b3Ugc3BlY2lmeSBhIGBgRmlsdGVyYGAgaW4geW91ciByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCB5b3UgbXVzdCBhbHNvIGluY2x1ZGUgYSBgYERlbGV0ZU1hcmtlclJlcGxpY2F0aW9uYGAgZWxlbWVudC4gSWYgeW91ciBgYEZpbHRlcmBgIGluY2x1ZGVzIGEgYGBUYWdgYCBlbGVtZW50LCB0aGUgYGBEZWxldGVNYXJrZXJSZXBsaWNhdGlvbmBgYGBTdGF0dXNgYCBtdXN0IGJlIHNldCB0byBEaXNhYmxlZCwgYmVjYXVzZSBBbWF6b24gUzMgZG9lcyBub3Qgc3VwcG9ydCByZXBsaWNhdGluZyBkZWxldGUgbWFya2VycyBmb3IgdGFnLWJhc2VkIHJ1bGVzLiBGb3IgYW4gZXhhbXBsZSBjb25maWd1cmF0aW9uLCBzZWUgW0Jhc2ljIFJ1bGUgQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvcmVwbGljYXRpb24tYWRkLWNvbmZpZy5odG1sI3JlcGxpY2F0aW9uLWNvbmZpZy1taW4tcnVsZS1jb25maWcpLiBcbiAqICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkZWxldGUgbWFya2VyIHJlcGxpY2F0aW9uLCBzZWUgW0Jhc2ljIFJ1bGUgQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvZGVsZXRlLW1hcmtlci1yZXBsaWNhdGlvbi5odG1sKS4gXG4gKiAgIElmIHlvdSBhcmUgdXNpbmcgYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoZSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCBBbWF6b24gUzMgaGFuZGxlcyByZXBsaWNhdGlvbiBvZiBkZWxldGUgbWFya2VycyBkaWZmZXJlbnRseS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQmFja3dhcmQgQ29tcGF0aWJpbGl0eV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvcmVwbGljYXRpb24tYWRkLWNvbmZpZy5odG1sI3JlcGxpY2F0aW9uLWJhY2t3YXJkLWNvbXBhdC1jb25zaWRlcmF0aW9ucykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlTWFya2VyUmVwbGljYXRpb24ge1xuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0byByZXBsaWNhdGUgZGVsZXRlIG1hcmtlcnMuIERpc2FibGVkIGJ5IGRlZmF1bHQuXG4gKi9cblN0YXR1cz86IChcIkRpc2FibGVkXCIgfCBcIkVuYWJsZWRcIilcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXBsaWNhdGlvbiBkZXN0aW5hdGlvbiBhbmQgaXRzIGNvbmZpZ3VyYXRpb25zIGluY2x1ZGluZyBlbmFibGluZyB0aGUgUzMgUmVwbGljYXRpb24gVGltZSBDb250cm9sIChTMyBSVEMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uRGVzdGluYXRpb24ge1xuQWNjZXNzQ29udHJvbFRyYW5zbGF0aW9uPzogQWNjZXNzQ29udHJvbFRyYW5zbGF0aW9uXG4vKipcbiAqIERlc3RpbmF0aW9uIGJ1Y2tldCBvd25lciBhY2NvdW50IElELiBJbiBhIGNyb3NzLWFjY291bnQgc2NlbmFyaW8sIGlmIHlvdSBkaXJlY3QgQW1hem9uIFMzIHRvIGNoYW5nZSByZXBsaWNhIG93bmVyc2hpcCB0byB0aGUgQVdTLWFjY291bnQgdGhhdCBvd25zIHRoZSBkZXN0aW5hdGlvbiBidWNrZXQgYnkgc3BlY2lmeWluZyB0aGUgYGBBY2Nlc3NDb250cm9sVHJhbnNsYXRpb25gYCBwcm9wZXJ0eSwgdGhpcyBpcyB0aGUgYWNjb3VudCBJRCBvZiB0aGUgZGVzdGluYXRpb24gYnVja2V0IG93bmVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtDcm9zcy1SZWdpb24gUmVwbGljYXRpb24gQWRkaXRpb25hbCBDb25maWd1cmF0aW9uOiBDaGFuZ2UgUmVwbGljYSBPd25lcl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvY3JyLWNoYW5nZS1vd25lci5odG1sKSBpbiB0aGUgKkFtYXpvbiBTMyBVc2VyIEd1aWRlKi5cbiAqICBJZiB5b3Ugc3BlY2lmeSB0aGUgYGBBY2Nlc3NDb250cm9sVHJhbnNsYXRpb25gYCBwcm9wZXJ0eSwgdGhlIGBgQWNjb3VudGBgIHByb3BlcnR5IGlzIHJlcXVpcmVkLlxuICovXG5BY2NvdW50Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgYnVja2V0IHdoZXJlIHlvdSB3YW50IEFtYXpvbiBTMyB0byBzdG9yZSB0aGUgcmVzdWx0cy5cbiAqL1xuQnVja2V0OiBzdHJpbmdcbkVuY3J5cHRpb25Db25maWd1cmF0aW9uPzogRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb25cbk1ldHJpY3M/OiBNZXRyaWNzXG5SZXBsaWNhdGlvblRpbWU/OiBSZXBsaWNhdGlvblRpbWVcbi8qKlxuICogVGhlIHN0b3JhZ2UgY2xhc3MgdG8gdXNlIHdoZW4gcmVwbGljYXRpbmcgb2JqZWN0cywgc3VjaCBhcyBTMyBTdGFuZGFyZCBvciByZWR1Y2VkIHJlZHVuZGFuY3kuIEJ5IGRlZmF1bHQsIEFtYXpvbiBTMyB1c2VzIHRoZSBzdG9yYWdlIGNsYXNzIG9mIHRoZSBzb3VyY2Ugb2JqZWN0IHRvIGNyZWF0ZSB0aGUgb2JqZWN0IHJlcGxpY2EuIFxuICogIEZvciB2YWxpZCB2YWx1ZXMsIHNlZSB0aGUgYGBTdG9yYWdlQ2xhc3NgYCBlbGVtZW50IG9mIHRoZSBbUFVUIEJ1Y2tldCByZXBsaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVHJlcGxpY2F0aW9uLmh0bWwpIGFjdGlvbiBpbiB0aGUgKkFtYXpvbiBTMyBBUEkgUmVmZXJlbmNlKi5cbiAqL1xuU3RvcmFnZUNsYXNzPzogKFwiREVFUF9BUkNISVZFXCIgfCBcIkdMQUNJRVJcIiB8IFwiR0xBQ0lFUl9JUlwiIHwgXCJJTlRFTExJR0VOVF9USUVSSU5HXCIgfCBcIk9ORVpPTkVfSUFcIiB8IFwiUkVEVUNFRF9SRURVTkRBTkNZXCIgfCBcIlNUQU5EQVJEXCIgfCBcIlNUQU5EQVJEX0lBXCIpXG59XG4vKipcbiAqIFNwZWNpZnkgdGhpcyBvbmx5IGluIGEgY3Jvc3MtYWNjb3VudCBzY2VuYXJpbyAod2hlcmUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBidWNrZXQgb3duZXJzIGFyZSBub3QgdGhlIHNhbWUpLCBhbmQgeW91IHdhbnQgdG8gY2hhbmdlIHJlcGxpY2Egb3duZXJzaGlwIHRvIHRoZSBBV1MtYWNjb3VudCB0aGF0IG93bnMgdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldC4gSWYgdGhpcyBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLCB0aGUgcmVwbGljYXMgYXJlIG93bmVkIGJ5IHNhbWUgQVdTLWFjY291bnQgdGhhdCBvd25zIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY2Vzc0NvbnRyb2xUcmFuc2xhdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgcmVwbGljYSBvd25lcnNoaXAuIEZvciBkZWZhdWx0IGFuZCB2YWxpZCB2YWx1ZXMsIHNlZSBbUFVUIGJ1Y2tldCByZXBsaWNhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9BUEkvUkVTVEJ1Y2tldFBVVHJlcGxpY2F0aW9uLmh0bWwpIGluIHRoZSAqQW1hem9uIFMzIEFQSSBSZWZlcmVuY2UqLlxuICovXG5Pd25lcjogXCJEZXN0aW5hdGlvblwiXG59XG4vKipcbiAqIFNwZWNpZmllcyBlbmNyeXB0aW9uLXJlbGF0ZWQgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5jcnlwdGlvbkNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIElEIChLZXkgQVJOIG9yIEFsaWFzIEFSTikgb2YgdGhlIGN1c3RvbWVyIG1hbmFnZWQgQVdTIEtNUyBrZXkgc3RvcmVkIGluIEFXUyBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIChLTVMpIGZvciB0aGUgZGVzdGluYXRpb24gYnVja2V0LiBBbWF6b24gUzMgdXNlcyB0aGlzIGtleSB0byBlbmNyeXB0IHJlcGxpY2Egb2JqZWN0cy4gQW1hem9uIFMzIG9ubHkgc3VwcG9ydHMgc3ltbWV0cmljIGVuY3J5cHRpb24gS01TIGtleXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0FzeW1tZXRyaWMga2V5cyBpbiBLTVNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS8va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9zeW1tZXRyaWMtYXN5bW1ldHJpYy5odG1sKSBpbiB0aGUgKktleSBNYW5hZ2VtZW50IFNlcnZpY2UgRGV2ZWxvcGVyIEd1aWRlKi5cbiAqL1xuUmVwbGljYUttc0tleUlEOiBzdHJpbmdcbn1cbi8qKlxuICogQSBjb250YWluZXIgc3BlY2lmeWluZyByZXBsaWNhdGlvbiBtZXRyaWNzLXJlbGF0ZWQgc2V0dGluZ3MgZW5hYmxpbmcgcmVwbGljYXRpb24gbWV0cmljcyBhbmQgZXZlbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY3Mge1xuRXZlbnRUaHJlc2hvbGQ/OiBSZXBsaWNhdGlvblRpbWVWYWx1ZVxuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgcmVwbGljYXRpb24gbWV0cmljcyBhcmUgZW5hYmxlZC5cbiAqL1xuU3RhdHVzOiAoXCJEaXNhYmxlZFwiIHwgXCJFbmFibGVkXCIpXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHNwZWNpZnlpbmcgdGhlIHRpbWUgdGhyZXNob2xkIGZvciBlbWl0dGluZyB0aGUgYGBzMzpSZXBsaWNhdGlvbjpPcGVyYXRpb25NaXNzZWRUaHJlc2hvbGRgYCBldmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblRpbWVWYWx1ZSB7XG4vKipcbiAqIENvbnRhaW5zIGFuIGludGVnZXIgc3BlY2lmeWluZyB0aW1lIGluIG1pbnV0ZXMuIFxuICogICBWYWxpZCB2YWx1ZTogMTVcbiAqL1xuTWludXRlczogbnVtYmVyXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHNwZWNpZnlpbmcgUzMgUmVwbGljYXRpb24gVGltZSBDb250cm9sIChTMyBSVEMpLCBpbmNsdWRpbmcgd2hldGhlciBTMyBSVEMgaXMgZW5hYmxlZCBhbmQgdGhlIHRpbWUgd2hlbiBhbGwgb2JqZWN0cyBhbmQgb3BlcmF0aW9ucyBvbiBvYmplY3RzIG11c3QgYmUgcmVwbGljYXRlZC4gTXVzdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBhIGBgTWV0cmljc2BgIGJsb2NrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uVGltZSB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSByZXBsaWNhdGlvbiB0aW1lIGlzIGVuYWJsZWQuXG4gKi9cblN0YXR1czogKFwiRGlzYWJsZWRcIiB8IFwiRW5hYmxlZFwiKVxuVGltZTogUmVwbGljYXRpb25UaW1lVmFsdWUxXG59XG4vKipcbiAqIEEgY29udGFpbmVyIHNwZWNpZnlpbmcgdGhlIHRpbWUgYnkgd2hpY2ggcmVwbGljYXRpb24gc2hvdWxkIGJlIGNvbXBsZXRlIGZvciBhbGwgb2JqZWN0cyBhbmQgb3BlcmF0aW9ucyBvbiBvYmplY3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxpY2F0aW9uVGltZVZhbHVlMSB7XG4vKipcbiAqIENvbnRhaW5zIGFuIGludGVnZXIgc3BlY2lmeWluZyB0aW1lIGluIG1pbnV0ZXMuIFxuICogICBWYWxpZCB2YWx1ZTogMTVcbiAqL1xuTWludXRlczogbnVtYmVyXG59XG4vKipcbiAqIEEgZmlsdGVyIHRoYXQgaWRlbnRpZmllcyB0aGUgc3Vic2V0IG9mIG9iamVjdHMgdG8gd2hpY2ggdGhlIHJlcGxpY2F0aW9uIHJ1bGUgYXBwbGllcy4gQSBgYEZpbHRlcmBgIG11c3Qgc3BlY2lmeSBleGFjdGx5IG9uZSBgYFByZWZpeGBgLCBgYFRhZ0ZpbHRlcmBgLCBvciBhbiBgYEFuZGBgIGNoaWxkIGVsZW1lbnQuIFRoZSB1c2Ugb2YgdGhlIGZpbHRlciBmaWVsZCBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGEgVjIgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbi4gVGhpcyBmaWVsZCBpc24ndCBzdXBwb3J0ZWQgaW4gYSBWMSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICogICBWMSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIG9ubHkgc3VwcG9ydHMgZmlsdGVyaW5nIGJ5IGtleSBwcmVmaXguIFRvIGZpbHRlciB1c2luZyBhIFYxIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24sIGFkZCB0aGUgYGBQcmVmaXhgYCBkaXJlY3RseSBhcyBhIGNoaWxkIGVsZW1lbnQgb2YgdGhlIGBgUnVsZWBgIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGljYXRpb25SdWxlRmlsdGVyIHtcbkFuZD86IFJlcGxpY2F0aW9uUnVsZUFuZE9wZXJhdG9yXG4vKipcbiAqIEFuIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcblRhZ0ZpbHRlcj86IFRhZ0ZpbHRlcjFcbn1cbi8qKlxuICogQSBjb250YWluZXIgZm9yIHNwZWNpZnlpbmcgcnVsZSBmaWx0ZXJzLiBUaGUgZmlsdGVycyBkZXRlcm1pbmUgdGhlIHN1YnNldCBvZiBvYmplY3RzIHRvIHdoaWNoIHRoZSBydWxlIGFwcGxpZXMuIFRoaXMgZWxlbWVudCBpcyByZXF1aXJlZCBvbmx5IGlmIHlvdSBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgZmlsdGVyLiBGb3IgZXhhbXBsZTogXG4gKiAgICsgIElmIHlvdSBzcGVjaWZ5IGJvdGggYSBgYFByZWZpeGBgIGFuZCBhIGBgVGFnRmlsdGVyYGAsIHdyYXAgdGhlc2UgZmlsdGVycyBpbiBhbiBgYEFuZGBgIHRhZy5cbiAqICAgKyAgSWYgeW91IHNwZWNpZnkgYSBmaWx0ZXIgYmFzZWQgb24gbXVsdGlwbGUgdGFncywgd3JhcCB0aGUgYGBUYWdGaWx0ZXJgYCBlbGVtZW50cyBpbiBhbiBgYEFuZGBgIHRhZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhdGlvblJ1bGVBbmRPcGVyYXRvciB7XG4vKipcbiAqIEFuIG9iamVjdCBrZXkgbmFtZSBwcmVmaXggdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJzZXQgb2Ygb2JqZWN0cyB0byB3aGljaCB0aGUgcnVsZSBhcHBsaWVzLlxuICovXG5QcmVmaXg/OiBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgb2YgdGFncyBjb250YWluaW5nIGtleSBhbmQgdmFsdWUgcGFpcnMuXG4gKi9cblRhZ0ZpbHRlcnM/OiBUYWdGaWx0ZXJbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGFncyB0byB1c2UgdG8gaWRlbnRpZnkgYSBzdWJzZXQgb2Ygb2JqZWN0cyBmb3IgYW4gQW1hem9uIFMzIGJ1Y2tldC4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBbQ2F0ZWdvcml6aW5nIHlvdXIgc3RvcmFnZSB1c2luZyB0YWdzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3QtdGFnZ2luZy5odG1sKSBpbiB0aGUgKkFtYXpvbiBTaW1wbGUgU3RvcmFnZSBTZXJ2aWNlIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0ZpbHRlcjEge1xuLyoqXG4gKiBUaGUgdGFnIHZhbHVlLlxuICovXG5WYWx1ZTogc3RyaW5nXG4vKipcbiAqIFRoZSB0YWcga2V5LlxuICovXG5LZXk6IHN0cmluZ1xufVxuLyoqXG4gKiBBIGNvbnRhaW5lciB0aGF0IGRlc2NyaWJlcyBhZGRpdGlvbmFsIGZpbHRlcnMgZm9yIGlkZW50aWZ5aW5nIHRoZSBzb3VyY2Ugb2JqZWN0cyB0aGF0IHlvdSB3YW50IHRvIHJlcGxpY2F0ZS4gWW91IGNhbiBjaG9vc2UgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHJlcGxpY2F0aW9uIG9mIHRoZXNlIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0aW9uQ3JpdGVyaWEge1xuUmVwbGljYU1vZGlmaWNhdGlvbnM/OiBSZXBsaWNhTW9kaWZpY2F0aW9uc1xuU3NlS21zRW5jcnlwdGVkT2JqZWN0cz86IFNzZUttc0VuY3J5cHRlZE9iamVjdHNcbn1cbi8qKlxuICogQSBmaWx0ZXIgdGhhdCB5b3UgY2FuIHNwZWNpZnkgZm9yIHNlbGVjdGlvbiBmb3IgbW9kaWZpY2F0aW9ucyBvbiByZXBsaWNhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsaWNhTW9kaWZpY2F0aW9ucyB7XG4vKipcbiAqIFNwZWNpZmllcyB3aGV0aGVyIEFtYXpvbiBTMyByZXBsaWNhdGVzIG1vZGlmaWNhdGlvbnMgb24gcmVwbGljYXMuXG4gKiAgKkFsbG93ZWQgdmFsdWVzKjogYGBFbmFibGVkYGAgfCBgYERpc2FibGVkYGBcbiAqL1xuU3RhdHVzOiAoXCJFbmFibGVkXCIgfCBcIkRpc2FibGVkXCIpXG59XG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBmaWx0ZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBzZWxlY3Rpb24gb2YgQW1hem9uIFMzIG9iamVjdHMgZW5jcnlwdGVkIHdpdGggQVdTIEtNUy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTc2VLbXNFbmNyeXB0ZWRPYmplY3RzIHtcbi8qKlxuICogU3BlY2lmaWVzIHdoZXRoZXIgQW1hem9uIFMzIHJlcGxpY2F0ZXMgb2JqZWN0cyBjcmVhdGVkIHdpdGggc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB1c2luZyBhbiBBV1MgS01TIGtleSBzdG9yZWQgaW4gQVdTIEtleSBNYW5hZ2VtZW50IFNlcnZpY2UuXG4gKi9cblN0YXR1czogKFwiRGlzYWJsZWRcIiB8IFwiRW5hYmxlZFwiKVxufVxuLyoqXG4gKiBBIGNvbnRhaW5lciBvZiBhIGtleSB2YWx1ZSBuYW1lIHBhaXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogTmFtZSBvZiB0aGUgb2JqZWN0IGtleS5cbiAqL1xuS2V5OiBzdHJpbmdcbi8qKlxuICogVmFsdWUgb2YgdGhlIHRhZy5cbiAqL1xuVmFsdWU6IHN0cmluZ1xufVxuLyoqXG4gKiBFbmFibGVzIG11bHRpcGxlIHZlcnNpb25zIG9mIGFsbCBvYmplY3RzIGluIHRoaXMgYnVja2V0LiBZb3UgbWlnaHQgZW5hYmxlIHZlcnNpb25pbmcgdG8gcHJldmVudCBvYmplY3RzIGZyb20gYmVpbmcgZGVsZXRlZCBvciBvdmVyd3JpdHRlbiBieSBtaXN0YWtlIG9yIHRvIGFyY2hpdmUgb2JqZWN0cyBzbyB0aGF0IHlvdSBjYW4gcmV0cmlldmUgcHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlbS5cbiAqICAgV2hlbiB5b3UgZW5hYmxlIHZlcnNpb25pbmcgb24gYSBidWNrZXQgZm9yIHRoZSBmaXJzdCB0aW1lLCBpdCBtaWdodCB0YWtlIGEgc2hvcnQgYW1vdW50IG9mIHRpbWUgZm9yIHRoZSBjaGFuZ2UgdG8gYmUgZnVsbHkgcHJvcGFnYXRlZC4gV2UgcmVjb21tZW5kIHRoYXQgeW91IHdhaXQgZm9yIDE1IG1pbnV0ZXMgYWZ0ZXIgZW5hYmxpbmcgdmVyc2lvbmluZyBiZWZvcmUgaXNzdWluZyB3cml0ZSBvcGVyYXRpb25zIChgYFBVVGBgIG9yIGBgREVMRVRFYGApIG9uIG9iamVjdHMgaW4gdGhlIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uaW5nQ29uZmlndXJhdGlvbiB7XG4vKipcbiAqIFRoZSB2ZXJzaW9uaW5nIHN0YXRlIG9mIHRoZSBidWNrZXQuXG4gKi9cblN0YXR1czogKFwiRW5hYmxlZFwiIHwgXCJTdXNwZW5kZWRcIilcbn1cbi8qKlxuICogSW5mb3JtYXRpb24gdXNlZCB0byBjb25maWd1cmUgdGhlIGJ1Y2tldCBhcyBhIHN0YXRpYyB3ZWJzaXRlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtIb3N0aW5nIFdlYnNpdGVzIG9uIEFtYXpvbiBTM10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvV2Vic2l0ZUhvc3RpbmcuaHRtbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Vic2l0ZUNvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgZXJyb3IgZG9jdW1lbnQgZm9yIHRoZSB3ZWJzaXRlLlxuICovXG5FcnJvckRvY3VtZW50Pzogc3RyaW5nXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBpbmRleCBkb2N1bWVudCBmb3IgdGhlIHdlYnNpdGUuXG4gKi9cbkluZGV4RG9jdW1lbnQ/OiBzdHJpbmdcbi8qKlxuICogUnVsZXMgdGhhdCBkZWZpbmUgd2hlbiBhIHJlZGlyZWN0IGlzIGFwcGxpZWQgYW5kIHRoZSByZWRpcmVjdCBiZWhhdmlvci5cbiAqL1xuUm91dGluZ1J1bGVzPzogUm91dGluZ1J1bGVbXVxuUmVkaXJlY3RBbGxSZXF1ZXN0c1RvPzogUmVkaXJlY3RBbGxSZXF1ZXN0c1RvXG59XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgcmVkaXJlY3QgYmVoYXZpb3IgYW5kIHdoZW4gYSByZWRpcmVjdCBpcyBhcHBsaWVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCByb3V0aW5nIHJ1bGVzLCBzZWUgW0NvbmZpZ3VyaW5nIGFkdmFuY2VkIGNvbmRpdGlvbmFsIHJlZGlyZWN0c10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvblMzL2xhdGVzdC9kZXYvaG93LXRvLXBhZ2UtcmVkaXJlY3QuaHRtbCNhZHZhbmNlZC1jb25kaXRpb25hbC1yZWRpcmVjdHMpIGluIHRoZSAqQW1hem9uIFMzIFVzZXIgR3VpZGUqLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRpbmdSdWxlIHtcblJlZGlyZWN0UnVsZTogUmVkaXJlY3RSdWxlXG5Sb3V0aW5nUnVsZUNvbmRpdGlvbj86IFJvdXRpbmdSdWxlQ29uZGl0aW9uXG59XG4vKipcbiAqIENvbnRhaW5lciBmb3IgcmVkaXJlY3QgaW5mb3JtYXRpb24uIFlvdSBjYW4gcmVkaXJlY3QgcmVxdWVzdHMgdG8gYW5vdGhlciBob3N0LCB0byBhbm90aGVyIHBhZ2UsIG9yIHdpdGggYW5vdGhlciBwcm90b2NvbC4gSW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yLCB5b3UgY2FuIHNwZWNpZnkgYSBkaWZmZXJlbnQgZXJyb3IgY29kZSB0byByZXR1cm4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXJlY3RSdWxlIHtcbi8qKlxuICogVGhlIGhvc3QgbmFtZSB0byB1c2UgaW4gdGhlIHJlZGlyZWN0IHJlcXVlc3QuXG4gKi9cbkhvc3ROYW1lPzogc3RyaW5nXG4vKipcbiAqIFRoZSBIVFRQIHJlZGlyZWN0IGNvZGUgdG8gdXNlIG9uIHRoZSByZXNwb25zZS4gTm90IHJlcXVpcmVkIGlmIG9uZSBvZiB0aGUgc2libGluZ3MgaXMgcHJlc2VudC5cbiAqL1xuSHR0cFJlZGlyZWN0Q29kZT86IHN0cmluZ1xuLyoqXG4gKiBQcm90b2NvbCB0byB1c2Ugd2hlbiByZWRpcmVjdGluZyByZXF1ZXN0cy4gVGhlIGRlZmF1bHQgaXMgdGhlIHByb3RvY29sIHRoYXQgaXMgdXNlZCBpbiB0aGUgb3JpZ2luYWwgcmVxdWVzdC5cbiAqL1xuUHJvdG9jb2w/OiAoXCJodHRwXCIgfCBcImh0dHBzXCIpXG4vKipcbiAqIFRoZSBvYmplY3Qga2V5IHByZWZpeCB0byB1c2UgaW4gdGhlIHJlZGlyZWN0IHJlcXVlc3QuIEZvciBleGFtcGxlLCB0byByZWRpcmVjdCByZXF1ZXN0cyBmb3IgYWxsIHBhZ2VzIHdpdGggcHJlZml4IGBgZG9jcy9gYCAob2JqZWN0cyBpbiB0aGUgYGBkb2NzL2BgIGZvbGRlcikgdG8gYGBkb2N1bWVudHMvYGAsIHlvdSBjYW4gc2V0IGEgY29uZGl0aW9uIGJsb2NrIHdpdGggYGBLZXlQcmVmaXhFcXVhbHNgYCBzZXQgdG8gYGBkb2NzL2BgIGFuZCBpbiB0aGUgUmVkaXJlY3Qgc2V0IGBgUmVwbGFjZUtleVByZWZpeFdpdGhgYCB0byBgYC9kb2N1bWVudHNgYC4gTm90IHJlcXVpcmVkIGlmIG9uZSBvZiB0aGUgc2libGluZ3MgaXMgcHJlc2VudC4gQ2FuIGJlIHByZXNlbnQgb25seSBpZiBgYFJlcGxhY2VLZXlXaXRoYGAgaXMgbm90IHByb3ZpZGVkLlxuICogICBSZXBsYWNlbWVudCBtdXN0IGJlIG1hZGUgZm9yIG9iamVjdCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIGNhcnJpYWdlIHJldHVybnMpIHdoZW4gdXNpbmcgWE1MIHJlcXVlc3RzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFtYTUwgcmVsYXRlZCBvYmplY3Qga2V5IGNvbnN0cmFpbnRzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uUzMvbGF0ZXN0L3VzZXJndWlkZS9vYmplY3Qta2V5cy5odG1sI29iamVjdC1rZXkteG1sLXJlbGF0ZWQtY29uc3RyYWludHMpLlxuICovXG5SZXBsYWNlS2V5UHJlZml4V2l0aD86IHN0cmluZ1xuLyoqXG4gKiBUaGUgc3BlY2lmaWMgb2JqZWN0IGtleSB0byB1c2UgaW4gdGhlIHJlZGlyZWN0IHJlcXVlc3QuIEZvciBleGFtcGxlLCByZWRpcmVjdCByZXF1ZXN0IHRvIGBgZXJyb3IuaHRtbGBgLiBOb3QgcmVxdWlyZWQgaWYgb25lIG9mIHRoZSBzaWJsaW5ncyBpcyBwcmVzZW50LiBDYW4gYmUgcHJlc2VudCBvbmx5IGlmIGBgUmVwbGFjZUtleVByZWZpeFdpdGhgYCBpcyBub3QgcHJvdmlkZWQuXG4gKiAgIFJlcGxhY2VtZW50IG11c3QgYmUgbWFkZSBmb3Igb2JqZWN0IGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgY2FycmlhZ2UgcmV0dXJucykgd2hlbiB1c2luZyBYTUwgcmVxdWVzdHMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW1hNTCByZWxhdGVkIG9iamVjdCBrZXkgY29uc3RyYWludHNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25TMy9sYXRlc3QvdXNlcmd1aWRlL29iamVjdC1rZXlzLmh0bWwjb2JqZWN0LWtleS14bWwtcmVsYXRlZC1jb25zdHJhaW50cykuXG4gKi9cblJlcGxhY2VLZXlXaXRoPzogc3RyaW5nXG59XG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBkZXNjcmliaW5nIGEgY29uZGl0aW9uIHRoYXQgbXVzdCBiZSBtZXQgZm9yIHRoZSBzcGVjaWZpZWQgcmVkaXJlY3QgdG8gYXBwbHkuIEZvciBleGFtcGxlLCAxLiBJZiByZXF1ZXN0IGlzIGZvciBwYWdlcyBpbiB0aGUgYGAvZG9jc2BgIGZvbGRlciwgcmVkaXJlY3QgdG8gdGhlIGBgL2RvY3VtZW50c2BgIGZvbGRlci4gMi4gSWYgcmVxdWVzdCByZXN1bHRzIGluIEhUVFAgZXJyb3IgNHh4LCByZWRpcmVjdCByZXF1ZXN0IHRvIGFub3RoZXIgaG9zdCB3aGVyZSB5b3UgbWlnaHQgcHJvY2VzcyB0aGUgZXJyb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ1J1bGVDb25kaXRpb24ge1xuLyoqXG4gKiBUaGUgb2JqZWN0IGtleSBuYW1lIHByZWZpeCB3aGVuIHRoZSByZWRpcmVjdCBpcyBhcHBsaWVkLiBGb3IgZXhhbXBsZSwgdG8gcmVkaXJlY3QgcmVxdWVzdHMgZm9yIGBgRXhhbXBsZVBhZ2UuaHRtbGBgLCB0aGUga2V5IHByZWZpeCB3aWxsIGJlIGBgRXhhbXBsZVBhZ2UuaHRtbGBgLiBUbyByZWRpcmVjdCByZXF1ZXN0IGZvciBhbGwgcGFnZXMgd2l0aCB0aGUgcHJlZml4IGBgZG9jcy9gYCwgdGhlIGtleSBwcmVmaXggd2lsbCBiZSBgYGRvY3MvYGAsIHdoaWNoIGlkZW50aWZpZXMgYWxsIG9iamVjdHMgaW4gdGhlIGRvY3MvIGZvbGRlci5cbiAqICBSZXF1aXJlZCB3aGVuIHRoZSBwYXJlbnQgZWxlbWVudCBgYENvbmRpdGlvbmBgIGlzIHNwZWNpZmllZCBhbmQgc2libGluZyBgYEh0dHBFcnJvckNvZGVSZXR1cm5lZEVxdWFsc2BgIGlzIG5vdCBzcGVjaWZpZWQuIElmIGJvdGggY29uZGl0aW9ucyBhcmUgc3BlY2lmaWVkLCBib3RoIG11c3QgYmUgdHJ1ZSBmb3IgdGhlIHJlZGlyZWN0IHRvIGJlIGFwcGxpZWQuXG4gKi9cbktleVByZWZpeEVxdWFscz86IHN0cmluZ1xuLyoqXG4gKiBUaGUgSFRUUCBlcnJvciBjb2RlIHdoZW4gdGhlIHJlZGlyZWN0IGlzIGFwcGxpZWQuIEluIHRoZSBldmVudCBvZiBhbiBlcnJvciwgaWYgdGhlIGVycm9yIGNvZGUgZXF1YWxzIHRoaXMgdmFsdWUsIHRoZW4gdGhlIHNwZWNpZmllZCByZWRpcmVjdCBpcyBhcHBsaWVkLlxuICogIFJlcXVpcmVkIHdoZW4gcGFyZW50IGVsZW1lbnQgYGBDb25kaXRpb25gYCBpcyBzcGVjaWZpZWQgYW5kIHNpYmxpbmcgYGBLZXlQcmVmaXhFcXVhbHNgYCBpcyBub3Qgc3BlY2lmaWVkLiBJZiBib3RoIGFyZSBzcGVjaWZpZWQsIHRoZW4gYm90aCBtdXN0IGJlIHRydWUgZm9yIHRoZSByZWRpcmVjdCB0byBiZSBhcHBsaWVkLlxuICovXG5IdHRwRXJyb3JDb2RlUmV0dXJuZWRFcXVhbHM/OiBzdHJpbmdcbn1cbi8qKlxuICogVGhlIHJlZGlyZWN0IGJlaGF2aW9yIGZvciBldmVyeSByZXF1ZXN0IHRvIHRoaXMgYnVja2V0J3Mgd2Vic2l0ZSBlbmRwb2ludC5cbiAqICAgSWYgeW91IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eSwgeW91IGNhbid0IHNwZWNpZnkgYW55IG90aGVyIHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0QWxsUmVxdWVzdHNUbyB7XG4vKipcbiAqIE5hbWUgb2YgdGhlIGhvc3Qgd2hlcmUgcmVxdWVzdHMgYXJlIHJlZGlyZWN0ZWQuXG4gKi9cbkhvc3ROYW1lOiBzdHJpbmdcbi8qKlxuICogUHJvdG9jb2wgdG8gdXNlIHdoZW4gcmVkaXJlY3RpbmcgcmVxdWVzdHMuIFRoZSBkZWZhdWx0IGlzIHRoZSBwcm90b2NvbCB0aGF0IGlzIHVzZWQgaW4gdGhlIG9yaWdpbmFsIHJlcXVlc3QuXG4gKi9cblByb3RvY29sPzogKFwiaHR0cFwiIHwgXCJodHRwc1wiKVxufVxuIl19
|
|
@@ -24,6 +24,7 @@ export interface _AWS_S3EXPRESS_DIRECTORYBUCKET {
|
|
|
24
24
|
Arn?: string;
|
|
25
25
|
BucketEncryption?: BucketEncryption;
|
|
26
26
|
LifecycleConfiguration?: LifecycleConfiguration;
|
|
27
|
+
Tags?: Tag[];
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Specifies default encryption for a bucket using server-side encryption with Amazon S3 managed keys (SSE-S3) or AWS KMS keys (SSE-KMS).
|
|
@@ -86,3 +87,7 @@ export interface AbortIncompleteMultipartUpload {
|
|
|
86
87
|
*/
|
|
87
88
|
DaysAfterInitiation: number;
|
|
88
89
|
}
|
|
90
|
+
export interface Tag {
|
|
91
|
+
Key: string;
|
|
92
|
+
Value: string;
|
|
93
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXMzZXhwcmVzcy1kaXJlY3RvcnlidWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtczNleHByZXNzLWRpcmVjdG9yeWJ1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXNvdXJjZSBUeXBlIGRlZmluaXRpb24gZm9yIEFXUzo6UzNFeHByZXNzOjpEaXJlY3RvcnlCdWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19TM0VYUFJFU1NfRElSRUNUT1JZQlVDS0VUIHtcbi8qKlxuICogU3BlY2lmaWVzIGEgbmFtZSBmb3IgdGhlIGJ1Y2tldC4gVGhlIGJ1Y2tldCBuYW1lIG11c3QgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVucyAoLSkuIEEgZGlyZWN0b3J5IGJ1Y2tldCBuYW1lIG11c3QgYmUgdW5pcXVlIGluIHRoZSBjaG9zZW4gQXZhaWxhYmlsaXR5IFpvbmUgb3IgTG9jYWwgWm9uZS4gVGhlIGJ1Y2tldCBuYW1lIG11c3QgYWxzbyBmb2xsb3cgdGhlIGZvcm1hdCAnYnVja2V0X2Jhc2VfbmFtZS0tem9uZV9pZC0teC1zMycuIFRoZSB6b25lX2lkIGNhbiBiZSB0aGUgSUQgb2YgYW4gQXZhaWxhYmlsaXR5IFpvbmUgb3IgYSBMb2NhbCBab25lLiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhIG5hbWUsIEFXUyBDbG91ZEZvcm1hdGlvbiBnZW5lcmF0ZXMgYSB1bmlxdWUgcGh5c2ljYWwgSUQgYW5kIHVzZXMgdGhhdCBJRCBmb3IgdGhlIGJ1Y2tldCBuYW1lLlxuICovXG5CdWNrZXROYW1lPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgWm9uZSBJRCBvZiB0aGUgQXZhaWxhYmlsaXR5IFpvbmUgb3IgTG9jYWwgWm9uZSB3aGVyZSB0aGUgZGlyZWN0b3J5IGJ1Y2tldCB3aWxsIGJlIGNyZWF0ZWQuIEFuIGV4YW1wbGUgQXZhaWxhYmlsaXR5IFpvbmUgSUQgdmFsdWUgaXMgJ3VzZTEtYXo1Jy5cbiAqL1xuTG9jYXRpb25OYW1lOiBzdHJpbmdcbi8qKlxuICogUmV0dXJucyB0aGUgY29kZSBmb3IgdGhlIEF2YWlsYWJpbGl0eSBab25lIG9yIExvY2FsIFpvbmUgd2hlcmUgdGhlIGRpcmVjdG9yeSBidWNrZXQgd2FzIGNyZWF0ZWQuIEFuIGV4YW1wbGUgZm9yIHRoZSBjb2RlIG9mIGFuIEF2YWlsYWJpbGl0eSBab25lIGlzICd1cy1lYXN0LTFmJy5cbiAqL1xuQXZhaWxhYmlsaXR5Wm9uZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgQXZhaWxhYmlsaXR5IFpvbmUgb3IgTG9jYWwgWm9uZSB0aGF0J3MgdXNlZCBmb3IgcmVkdW5kYW5jeSBmb3IgdGhlIGJ1Y2tldC5cbiAqL1xuRGF0YVJlZHVuZGFuY3k6IChcIlNpbmdsZUF2YWlsYWJpbGl0eVpvbmVcIiB8IFwiU2luZ2xlTG9jYWxab25lXCIpXG4vKipcbiAqIFJldHVybnMgdGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBzcGVjaWZpZWQgYnVja2V0LlxuICovXG5Bcm4/OiBzdHJpbmdcbkJ1Y2tldEVuY3J5cHRpb24/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXMzZXhwcmVzcy1kaXJlY3RvcnlidWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhd3MtczNleHByZXNzLWRpcmVjdG9yeWJ1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXNvdXJjZSBUeXBlIGRlZmluaXRpb24gZm9yIEFXUzo6UzNFeHByZXNzOjpEaXJlY3RvcnlCdWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19TM0VYUFJFU1NfRElSRUNUT1JZQlVDS0VUIHtcbi8qKlxuICogU3BlY2lmaWVzIGEgbmFtZSBmb3IgdGhlIGJ1Y2tldC4gVGhlIGJ1Y2tldCBuYW1lIG11c3QgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVucyAoLSkuIEEgZGlyZWN0b3J5IGJ1Y2tldCBuYW1lIG11c3QgYmUgdW5pcXVlIGluIHRoZSBjaG9zZW4gQXZhaWxhYmlsaXR5IFpvbmUgb3IgTG9jYWwgWm9uZS4gVGhlIGJ1Y2tldCBuYW1lIG11c3QgYWxzbyBmb2xsb3cgdGhlIGZvcm1hdCAnYnVja2V0X2Jhc2VfbmFtZS0tem9uZV9pZC0teC1zMycuIFRoZSB6b25lX2lkIGNhbiBiZSB0aGUgSUQgb2YgYW4gQXZhaWxhYmlsaXR5IFpvbmUgb3IgYSBMb2NhbCBab25lLiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhIG5hbWUsIEFXUyBDbG91ZEZvcm1hdGlvbiBnZW5lcmF0ZXMgYSB1bmlxdWUgcGh5c2ljYWwgSUQgYW5kIHVzZXMgdGhhdCBJRCBmb3IgdGhlIGJ1Y2tldCBuYW1lLlxuICovXG5CdWNrZXROYW1lPzogc3RyaW5nXG4vKipcbiAqIFNwZWNpZmllcyB0aGUgWm9uZSBJRCBvZiB0aGUgQXZhaWxhYmlsaXR5IFpvbmUgb3IgTG9jYWwgWm9uZSB3aGVyZSB0aGUgZGlyZWN0b3J5IGJ1Y2tldCB3aWxsIGJlIGNyZWF0ZWQuIEFuIGV4YW1wbGUgQXZhaWxhYmlsaXR5IFpvbmUgSUQgdmFsdWUgaXMgJ3VzZTEtYXo1Jy5cbiAqL1xuTG9jYXRpb25OYW1lOiBzdHJpbmdcbi8qKlxuICogUmV0dXJucyB0aGUgY29kZSBmb3IgdGhlIEF2YWlsYWJpbGl0eSBab25lIG9yIExvY2FsIFpvbmUgd2hlcmUgdGhlIGRpcmVjdG9yeSBidWNrZXQgd2FzIGNyZWF0ZWQuIEFuIGV4YW1wbGUgZm9yIHRoZSBjb2RlIG9mIGFuIEF2YWlsYWJpbGl0eSBab25lIGlzICd1cy1lYXN0LTFmJy5cbiAqL1xuQXZhaWxhYmlsaXR5Wm9uZU5hbWU/OiBzdHJpbmdcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgQXZhaWxhYmlsaXR5IFpvbmUgb3IgTG9jYWwgWm9uZSB0aGF0J3MgdXNlZCBmb3IgcmVkdW5kYW5jeSBmb3IgdGhlIGJ1Y2tldC5cbiAqL1xuRGF0YVJlZHVuZGFuY3k6IChcIlNpbmdsZUF2YWlsYWJpbGl0eVpvbmVcIiB8IFwiU2luZ2xlTG9jYWxab25lXCIpXG4vKipcbiAqIFJldHVybnMgdGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBzcGVjaWZpZWQgYnVja2V0LlxuICovXG5Bcm4/OiBzdHJpbmdcbkJ1Y2tldEVuY3J5cHRpb24/OiBCdWNrZXRFbmNyeXB0aW9uXG5MaWZlY3ljbGVDb25maWd1cmF0aW9uPzogTGlmZWN5Y2xlQ29uZmlndXJhdGlvblxuVGFncz86IFRhZ1tdXG59XG4vKipcbiAqIFNwZWNpZmllcyBkZWZhdWx0IGVuY3J5cHRpb24gZm9yIGEgYnVja2V0IHVzaW5nIHNlcnZlci1zaWRlIGVuY3J5cHRpb24gd2l0aCBBbWF6b24gUzMgbWFuYWdlZCBrZXlzIChTU0UtUzMpIG9yIEFXUyBLTVMga2V5cyAoU1NFLUtNUykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVja2V0RW5jcnlwdGlvbiB7XG4vKipcbiAqIFNwZWNpZmllcyB0aGUgZGVmYXVsdCBzZXJ2ZXItc2lkZS1lbmNyeXB0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cblNlcnZlclNpZGVFbmNyeXB0aW9uQ29uZmlndXJhdGlvbjogU2VydmVyU2lkZUVuY3J5cHRpb25SdWxlW11cbn1cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZWZhdWx0IHNlcnZlci1zaWRlIGVuY3J5cHRpb24gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJTaWRlRW5jcnlwdGlvblJ1bGUge1xuLyoqXG4gKiBTcGVjaWZpZXMgd2hldGhlciBBbWF6b24gUzMgc2hvdWxkIHVzZSBhbiBTMyBCdWNrZXQgS2V5IHdpdGggc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB1c2luZyBLTVMgKFNTRS1LTVMpIGZvciBuZXcgb2JqZWN0cyBpbiB0aGUgYnVja2V0LiBFeGlzdGluZyBvYmplY3RzIGFyZSBub3QgYWZmZWN0ZWQuIEFtYXpvbiBTMyBFeHByZXNzIE9uZSBab25lIHVzZXMgYW4gUzMgQnVja2V0IEtleSB3aXRoIFNTRS1LTVMgYW5kIFMzIEJ1Y2tldCBLZXkgY2Fubm90IGJlIGRpc2FibGVkLiBJdCdzIG9ubHkgYWxsb3dlZCB0byBzZXQgdGhlIEJ1Y2tldEtleUVuYWJsZWQgZWxlbWVudCB0byB0cnVlLlxuICovXG5CdWNrZXRLZXlFbmFibGVkPzogYm9vbGVhblxuU2VydmVyU2lkZUVuY3J5cHRpb25CeURlZmF1bHQ/OiBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkJ5RGVmYXVsdFxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgc2VydmVyLXNpZGUgZW5jcnlwdGlvbiB0byBhcHBseSB0byBuZXcgb2JqZWN0cyBpbiB0aGUgYnVja2V0LiBJZiBhIFBVVCBPYmplY3QgcmVxdWVzdCBkb2Vzbid0IHNwZWNpZnkgYW55IHNlcnZlci1zaWRlIGVuY3J5cHRpb24sIHRoaXMgZGVmYXVsdCBlbmNyeXB0aW9uIHdpbGwgYmUgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJTaWRlRW5jcnlwdGlvbkJ5RGVmYXVsdCB7XG4vKipcbiAqIEFXUyBLZXkgTWFuYWdlbWVudCBTZXJ2aWNlIChLTVMpIGN1c3RvbWVyIG1hbmFnZWQga2V5IElEIHRvIHVzZSBmb3IgdGhlIGRlZmF1bHQgZW5jcnlwdGlvbi4gVGhpcyBwYXJhbWV0ZXIgaXMgYWxsb3dlZCBvbmx5IGlmIFNTRUFsZ29yaXRobSBpcyBzZXQgdG8gYXdzOmttcy4gWW91IGNhbiBzcGVjaWZ5IHRoaXMgcGFyYW1ldGVyIHdpdGggdGhlIGtleSBJRCBvciB0aGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIEtNUyBrZXlcbiAqL1xuS01TTWFzdGVyS2V5SUQ/OiAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gJiBzdHJpbmcpXG5TU0VBbGdvcml0aG06IChcImF3czprbXNcIiB8IFwiQUVTMjU2XCIpXG59XG4vKipcbiAqIExpZmVjeWNsZSBydWxlcyB0aGF0IGRlZmluZSBob3cgQW1hem9uIFMzIEV4cHJlc3MgbWFuYWdlcyBvYmplY3RzIGR1cmluZyB0aGVpciBsaWZldGltZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVDb25maWd1cmF0aW9uIHtcbi8qKlxuICogQSBsaWZlY3ljbGUgcnVsZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzIGluIGFuIEFtYXpvbiBTMyBFeHByZXNzIGJ1Y2tldC5cbiAqL1xuUnVsZXM6IFJ1bGVbXVxufVxuLyoqXG4gKiBZb3UgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6IEFib3J0SW5jb21wbGV0ZU11bHRpcGFydFVwbG9hZCwgb3IgRXhwaXJhdGlvbkluRGF5cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlIHtcbkFib3J0SW5jb21wbGV0ZU11bHRpcGFydFVwbG9hZD86IEFib3J0SW5jb21wbGV0ZU11bHRpcGFydFVwbG9hZFxuRXhwaXJhdGlvbkluRGF5cz86IG51bWJlclxuSWQ/OiBzdHJpbmdcblByZWZpeD86IHN0cmluZ1xuU3RhdHVzOiAoXCJFbmFibGVkXCIgfCBcIkRpc2FibGVkXCIpXG5PYmplY3RTaXplR3JlYXRlclRoYW4/OiBzdHJpbmdcbk9iamVjdFNpemVMZXNzVGhhbj86IHN0cmluZ1xufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGRheXMgc2luY2UgdGhlIGluaXRpYXRpb24gb2YgYW4gaW5jb21wbGV0ZSBtdWx0aXBhcnQgdXBsb2FkIHRoYXQgQW1hem9uIFMzIHdpbGwgd2FpdCBiZWZvcmUgcGVybWFuZW50bHkgcmVtb3ZpbmcgYWxsIHBhcnRzIG9mIHRoZSB1cGxvYWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJvcnRJbmNvbXBsZXRlTXVsdGlwYXJ0VXBsb2FkIHtcbi8qKlxuICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciB3aGljaCBBbWF6b24gUzMgYWJvcnRzIGFuIGluY29tcGxldGUgbXVsdGlwYXJ0IHVwbG9hZC5cbiAqL1xuRGF5c0FmdGVySW5pdGlhdGlvbjogbnVtYmVyXG59XG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG5LZXk6IHN0cmluZ1xuVmFsdWU6IHN0cmluZ1xufVxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A policy document containing permissions to add to the specified table. In IAM, you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM.
|
|
3
|
+
*/
|
|
4
|
+
export type ResourcePolicy = ({
|
|
5
|
+
[k: string]: unknown;
|
|
6
|
+
} | string);
|
|
7
|
+
/**
|
|
8
|
+
* The name for the table.
|
|
9
|
+
*/
|
|
10
|
+
export type TableName = string;
|
|
11
|
+
/**
|
|
12
|
+
* The Amazon Resource Name (ARN) of the specified table bucket.
|
|
13
|
+
*/
|
|
14
|
+
export type TableBucketARN = string;
|
|
15
|
+
/**
|
|
16
|
+
* The Amazon Resource Name (ARN) of the specified table.
|
|
17
|
+
*/
|
|
18
|
+
export type TableARN = string;
|
|
19
|
+
/**
|
|
20
|
+
* The namespace that the table belongs to.
|
|
21
|
+
*/
|
|
22
|
+
export type Namespace = string;
|
|
23
|
+
/**
|
|
24
|
+
* Resource Type definition for AWS::S3Tables::TablePolicy
|
|
25
|
+
*/
|
|
26
|
+
export interface _AWS_S3TABLES_TABLEPOLICY {
|
|
27
|
+
ResourcePolicy: ResourcePolicy;
|
|
28
|
+
TableName?: TableName;
|
|
29
|
+
TableBucketARN?: TableBucketARN;
|
|
30
|
+
TableARN: TableARN;
|
|
31
|
+
Namespace?: Namespace;
|
|
32
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXMzdGFibGVzLXRhYmxlcG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLXMzdGFibGVzLXRhYmxlcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgcG9saWN5IGRvY3VtZW50IGNvbnRhaW5pbmcgcGVybWlzc2lvbnMgdG8gYWRkIHRvIHRoZSBzcGVjaWZpZWQgdGFibGUuIEluIElBTSwgeW91IG11c3QgcHJvdmlkZSBwb2xpY3kgZG9jdW1lbnRzIGluIEpTT04gZm9ybWF0LiBIb3dldmVyLCBpbiBDbG91ZEZvcm1hdGlvbiB5b3UgY2FuIHByb3ZpZGUgdGhlIHBvbGljeSBpbiBKU09OIG9yIFlBTUwgZm9ybWF0IGJlY2F1c2UgQ2xvdWRGb3JtYXRpb24gY29udmVydHMgWUFNTCB0byBKU09OIGJlZm9yZSBzdWJtaXR0aW5nIGl0IHRvIElBTS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VQb2xpY3kgPSAoe1xuW2s6IHN0cmluZ106IHVua25vd25cbn0gfCBzdHJpbmcpXG4vKipcbiAqIFRoZSBuYW1lIGZvciB0aGUgdGFibGUuXG4gKi9cbmV4cG9ydCB0eXBlIFRhYmxlTmFtZSA9IHN0cmluZ1xuLyoqXG4gKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHNwZWNpZmllZCB0YWJsZSBidWNrZXQuXG4gKi9cbmV4cG9ydCB0eXBlIFRhYmxlQnVja2V0QVJOID0gc3RyaW5nXG4vKipcbiAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBvZiB0aGUgc3BlY2lmaWVkIHRhYmxlLlxuICovXG5leHBvcnQgdHlwZSBUYWJsZUFSTiA9IHN0cmluZ1xuLyoqXG4gKiBUaGUgbmFtZXNwYWNlIHRoYXQgdGhlIHRhYmxlIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCB0eXBlIE5hbWVzcGFjZSA9IHN0cmluZ1xuXG4vKipcbiAqIFJlc291cmNlIFR5cGUgZGVmaW5pdGlvbiBmb3IgQVdTOjpTM1RhYmxlczo6VGFibGVQb2xpY3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBfQVdTX1MzVEFCTEVTX1RBQkxFUE9MSUNZIHtcblJlc291cmNlUG9saWN5OiBSZXNvdXJjZVBvbGljeVxuVGFibGVOYW1lPzogVGFibGVOYW1lXG5UYWJsZUJ1Y2tldEFSTj86IFRhYmxlQnVja2V0QVJOXG5UYWJsZUFSTjogVGFibGVBUk5cbk5hbWVzcGFjZT86IE5hbWVzcGFjZVxufVxuIl19
|
|
@@ -60,7 +60,7 @@ export interface _AWS_SAGEMAKER_DOMAIN {
|
|
|
60
60
|
* @minItems 1
|
|
61
61
|
* @maxItems 16
|
|
62
62
|
*/
|
|
63
|
-
SubnetIds
|
|
63
|
+
SubnetIds?: string[];
|
|
64
64
|
/**
|
|
65
65
|
* A list of tags to apply to the user profile.
|
|
66
66
|
*
|
|
@@ -71,7 +71,7 @@ export interface _AWS_SAGEMAKER_DOMAIN {
|
|
|
71
71
|
/**
|
|
72
72
|
* The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.
|
|
73
73
|
*/
|
|
74
|
-
VpcId
|
|
74
|
+
VpcId?: string;
|
|
75
75
|
/**
|
|
76
76
|
* The domain name.
|
|
77
77
|
*/
|
|
@@ -665,4 +665,8 @@ export interface UnifiedStudioSettings {
|
|
|
665
665
|
* The location where Amazon S3 stores temporary execution data and other artifacts for the project that corresponds to the domain.
|
|
666
666
|
*/
|
|
667
667
|
ProjectS3Path?: string;
|
|
668
|
+
/**
|
|
669
|
+
* The ARN of the DataZone application managed by SageMaker Unified Studio in the AWS IAM Identity Center.
|
|
670
|
+
*/
|
|
671
|
+
SingleSignOnApplicationArn?: string;
|
|
668
672
|
}
|