iam-floyd
Version:
AWS IAM policy statement generator with fluent interface
327 lines • 28.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Snowball = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [snowball](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssnowball.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class Snowball extends shared_1.PolicyStatement {
/**
* Statement provider for service [snowball](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awssnowball.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
constructor(sid) {
super(sid);
this.servicePrefix = 'snowball';
this.accessLevelList = {
Write: [
'CancelCluster',
'CancelJob',
'CreateAddress',
'CreateCluster',
'CreateJob',
'CreateLongTermPricing',
'CreateReturnShippingLabel',
'UpdateCluster',
'UpdateJob',
'UpdateJobShipmentState',
'UpdateLongTermPricing'
],
Read: [
'DescribeAddress',
'DescribeCluster',
'DescribeJob',
'DescribeReturnShippingLabel',
'GetJobManifest',
'GetJobUnlockCode',
'GetSnowballUsage',
'GetSoftwareUpdates',
'ListLongTermPricing'
],
List: [
'DescribeAddresses',
'ListClusterJobs',
'ListClusters',
'ListCompatibleImages',
'ListJobs',
'ListPickupLocations',
'ListServiceVersions'
]
};
}
/**
* Grants permission to cancel a cluster job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_CancelCluster.html
*/
toCancelCluster() {
return this.to('CancelCluster');
}
/**
* Grants permission to cancel the specified job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_CancelJob.html
*/
toCancelJob() {
return this.to('CancelJob');
}
/**
* Grants permission to create an address for a Snowball to be shipped to
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_CreateAddress.html
*/
toCreateAddress() {
return this.to('CreateAddress');
}
/**
* Grants permission to create an empty cluster
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_CreateCluster.html
*/
toCreateCluster() {
return this.to('CreateCluster');
}
/**
* Grants permission to creates a job to import or export data between Amazon S3 and your on-premises data center
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_CreateJob.html
*/
toCreateJob() {
return this.to('CreateJob');
}
/**
* Grants permission to creates a LongTermPricingListEntry for allowing customers to add an upfront billing contract for a job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_CreateLongTermPricing.html
*/
toCreateLongTermPricing() {
return this.to('CreateLongTermPricing');
}
/**
* Grants permission to create a shipping label that will be used to return the Snow device to AWS
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_CreateReturnShippingLabel.html
*/
toCreateReturnShippingLabel() {
return this.to('CreateReturnShippingLabel');
}
/**
* Grants permission to get specific details about that address in the form of an Address object
*
* Access Level: Read
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_DescribeAddress.html
*/
toDescribeAddress() {
return this.to('DescribeAddress');
}
/**
* Grants permission to describe a specified number of ADDRESS objects
*
* Access Level: List
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_DescribeAddresses.html
*/
toDescribeAddresses() {
return this.to('DescribeAddresses');
}
/**
* Grants permission to describe information about a specific cluster including shipping information, cluster status, and other important metadata
*
* Access Level: Read
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_DescribeCluster.html
*/
toDescribeCluster() {
return this.to('DescribeCluster');
}
/**
* Grants permission to describe information about a specific job including shipping information, job status, and other important metadata
*
* Access Level: Read
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_DescribeJob.html
*/
toDescribeJob() {
return this.to('DescribeJob');
}
/**
* Grants permission to describe information on the shipping label of a Snow device that is being returned to AWS
*
* Access Level: Read
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_DescribeReturnShippingLabel.html
*/
toDescribeReturnShippingLabel() {
return this.to('DescribeReturnShippingLabel');
}
/**
* Grants permission to get a link to an Amazon S3 presigned URL for the manifest file associated with the specified JobId value
*
* Access Level: Read
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_GetJobManifest.html
*/
toGetJobManifest() {
return this.to('GetJobManifest');
}
/**
* Grants permission to get the UnlockCode code value for the specified job
*
* Access Level: Read
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_GetJobUnlockCode.html
*/
toGetJobUnlockCode() {
return this.to('GetJobUnlockCode');
}
/**
* Grants permission to get information about the Snowball service limit for your account, and also the number of Snowballs your account has in use
*
* Access Level: Read
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_GetSnowballUsage.html
*/
toGetSnowballUsage() {
return this.to('GetSnowballUsage');
}
/**
* Grants permission to return an Amazon S3 presigned URL for an update file associated with a specified JobId
*
* Access Level: Read
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_GetSoftwareUpdates.html
*/
toGetSoftwareUpdates() {
return this.to('GetSoftwareUpdates');
}
/**
* Grants permission to list JobListEntry objects of the specified length
*
* Access Level: List
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_ListClusterJobs.html
*/
toListClusterJobs() {
return this.to('ListClusterJobs');
}
/**
* Grants permission to list ClusterListEntry objects of the specified length
*
* Access Level: List
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_ListClusters.html
*/
toListClusters() {
return this.to('ListClusters');
}
/**
* Grants permission to return a list of the different Amazon EC2 Amazon Machine Images (AMIs) that are owned by your AWS account that would be supported for use on a Snow device
*
* Access Level: List
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_ListCompatibleImages.html
*/
toListCompatibleImages() {
return this.to('ListCompatibleImages');
}
/**
* Grants permission to list JobListEntry objects of the specified length
*
* Access Level: List
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_ListJobs.html
*/
toListJobs() {
return this.to('ListJobs');
}
/**
* Grants permission to list LongTermPricingListEntry objects for the account making the request
*
* Access Level: Read
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_ListLongTermPricing.html
*/
toListLongTermPricing() {
return this.to('ListLongTermPricing');
}
/**
* Grants permission to list Address objects where pickup is available, of the specified length
*
* Access Level: List
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_ListPickupLocations.html
*/
toListPickupLocations() {
return this.to('ListPickupLocations');
}
/**
* Grants permission to list all supported versions for Snow on-device services
*
* Access Level: List
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_ListServiceVersions.html
*/
toListServiceVersions() {
return this.to('ListServiceVersions');
}
/**
* Grants permission to update while a cluster's ClusterState value is in the AwaitingQuorum state, you can update some of the information associated with a cluster
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_UpdateCluster.html
*/
toUpdateCluster() {
return this.to('UpdateCluster');
}
/**
* Grants permission to update while a job's JobState value is New, you can update some of the information associated with a job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_UpdateJob.html
*/
toUpdateJob() {
return this.to('UpdateJob');
}
/**
* Grants permission to update the state when a the shipment states changes to a different state
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_UpdateJobShipmentState.html
*/
toUpdateJobShipmentState() {
return this.to('UpdateJobShipmentState');
}
/**
* Grants permission to update a specific upfront billing contract for a job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/snowball/latest/api-reference/API_UpdateLongTermPricing.html
*/
toUpdateLongTermPricing() {
return this.to('UpdateLongTermPricing');
}
}
exports.Snowball = Snowball;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25vd2JhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzbm93YmFsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBK0M7QUFFL0M7Ozs7R0FJRztBQUNILE1BQWEsUUFBUyxTQUFRLHdCQUFlO0lBRzNDOzs7O09BSUc7SUFDSCxZQUFZLEdBQVk7UUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBUk4sa0JBQWEsR0FBRyxVQUFVLENBQUM7UUFvVHhCLG9CQUFlLEdBQW9CO1lBQzNDLEtBQUssRUFBRTtnQkFDTCxlQUFlO2dCQUNmLFdBQVc7Z0JBQ1gsZUFBZTtnQkFDZixlQUFlO2dCQUNmLFdBQVc7Z0JBQ1gsdUJBQXVCO2dCQUN2QiwyQkFBMkI7Z0JBQzNCLGVBQWU7Z0JBQ2YsV0FBVztnQkFDWCx3QkFBd0I7Z0JBQ3hCLHVCQUF1QjthQUN4QjtZQUNELElBQUksRUFBRTtnQkFDSixpQkFBaUI7Z0JBQ2pCLGlCQUFpQjtnQkFDakIsYUFBYTtnQkFDYiw2QkFBNkI7Z0JBQzdCLGdCQUFnQjtnQkFDaEIsa0JBQWtCO2dCQUNsQixrQkFBa0I7Z0JBQ2xCLG9CQUFvQjtnQkFDcEIscUJBQXFCO2FBQ3RCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLG1CQUFtQjtnQkFDbkIsaUJBQWlCO2dCQUNqQixjQUFjO2dCQUNkLHNCQUFzQjtnQkFDdEIsVUFBVTtnQkFDVixxQkFBcUI7Z0JBQ3JCLHFCQUFxQjthQUN0QjtTQUNGLENBQUM7SUE3VUYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksdUJBQXVCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSwyQkFBMkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksbUJBQW1CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSw2QkFBNkI7UUFDbEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG9CQUFvQjtRQUN6QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksaUJBQWlCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksc0JBQXNCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxxQkFBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0kscUJBQXFCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHdCQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksdUJBQXVCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FxQ0Y7QUF4VkQsNEJBd1ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzTGV2ZWxMaXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FjY2Vzcy1sZXZlbCc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuXG4vKipcbiAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbc25vd2JhbGxdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2F3c3Nub3diYWxsLmh0bWwpLlxuICpcbiAqIEBwYXJhbSBzaWQgW1NJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19zaWQuaHRtbCkgb2YgdGhlIHN0YXRlbWVudFxuICovXG5leHBvcnQgY2xhc3MgU25vd2JhbGwgZXh0ZW5kcyBQb2xpY3lTdGF0ZW1lbnQge1xuICBwdWJsaWMgc2VydmljZVByZWZpeCA9ICdzbm93YmFsbCc7XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbc25vd2JhbGxdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2F3c3Nub3diYWxsLmh0bWwpLlxuICAgKlxuICAgKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNpZD86IHN0cmluZykge1xuICAgIHN1cGVyKHNpZCk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY2FuY2VsIGEgY2x1c3RlciBqb2JcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc25vd2JhbGwvbGF0ZXN0L2FwaS1yZWZlcmVuY2UvQVBJX0NhbmNlbENsdXN0ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ2FuY2VsQ2x1c3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ2FuY2VsQ2x1c3RlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNhbmNlbCB0aGUgc3BlY2lmaWVkIGpvYlxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfQ2FuY2VsSm9iLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NhbmNlbEpvYigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ2FuY2VsSm9iJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGFuIGFkZHJlc3MgZm9yIGEgU25vd2JhbGwgdG8gYmUgc2hpcHBlZCB0b1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfQ3JlYXRlQWRkcmVzcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVBZGRyZXNzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVBZGRyZXNzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGFuIGVtcHR5IGNsdXN0ZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc25vd2JhbGwvbGF0ZXN0L2FwaS1yZWZlcmVuY2UvQVBJX0NyZWF0ZUNsdXN0ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlQ2x1c3RlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlQ2x1c3RlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZXMgYSBqb2IgdG8gaW1wb3J0IG9yIGV4cG9ydCBkYXRhIGJldHdlZW4gQW1hem9uIFMzIGFuZCB5b3VyIG9uLXByZW1pc2VzIGRhdGEgY2VudGVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nub3diYWxsL2xhdGVzdC9hcGktcmVmZXJlbmNlL0FQSV9DcmVhdGVKb2IuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlSm9iKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVKb2InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGVzIGEgTG9uZ1Rlcm1QcmljaW5nTGlzdEVudHJ5IGZvciBhbGxvd2luZyBjdXN0b21lcnMgdG8gYWRkIGFuIHVwZnJvbnQgYmlsbGluZyBjb250cmFjdCBmb3IgYSBqb2JcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc25vd2JhbGwvbGF0ZXN0L2FwaS1yZWZlcmVuY2UvQVBJX0NyZWF0ZUxvbmdUZXJtUHJpY2luZy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVMb25nVGVybVByaWNpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUxvbmdUZXJtUHJpY2luZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIHNoaXBwaW5nIGxhYmVsIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJldHVybiB0aGUgU25vdyBkZXZpY2UgdG8gQVdTXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nub3diYWxsL2xhdGVzdC9hcGktcmVmZXJlbmNlL0FQSV9DcmVhdGVSZXR1cm5TaGlwcGluZ0xhYmVsLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZVJldHVyblNoaXBwaW5nTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZVJldHVyblNoaXBwaW5nTGFiZWwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBnZXQgc3BlY2lmaWMgZGV0YWlscyBhYm91dCB0aGF0IGFkZHJlc3MgaW4gdGhlIGZvcm0gb2YgYW4gQWRkcmVzcyBvYmplY3RcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfRGVzY3JpYmVBZGRyZXNzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlQWRkcmVzcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVBZGRyZXNzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVzY3JpYmUgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIEFERFJFU1Mgb2JqZWN0c1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nub3diYWxsL2xhdGVzdC9hcGktcmVmZXJlbmNlL0FQSV9EZXNjcmliZUFkZHJlc3Nlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9EZXNjcmliZUFkZHJlc3NlcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVBZGRyZXNzZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZXNjcmliZSBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIGNsdXN0ZXIgaW5jbHVkaW5nIHNoaXBwaW5nIGluZm9ybWF0aW9uLCBjbHVzdGVyIHN0YXR1cywgYW5kIG90aGVyIGltcG9ydGFudCBtZXRhZGF0YVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nub3diYWxsL2xhdGVzdC9hcGktcmVmZXJlbmNlL0FQSV9EZXNjcmliZUNsdXN0ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVDbHVzdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEZXNjcmliZUNsdXN0ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZXNjcmliZSBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIGpvYiBpbmNsdWRpbmcgc2hpcHBpbmcgaW5mb3JtYXRpb24sIGpvYiBzdGF0dXMsIGFuZCBvdGhlciBpbXBvcnRhbnQgbWV0YWRhdGFcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfRGVzY3JpYmVKb2IuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvRGVzY3JpYmVKb2IoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Rlc2NyaWJlSm9iJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZGVzY3JpYmUgaW5mb3JtYXRpb24gb24gdGhlIHNoaXBwaW5nIGxhYmVsIG9mIGEgU25vdyBkZXZpY2UgdGhhdCBpcyBiZWluZyByZXR1cm5lZCB0byBBV1NcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfRGVzY3JpYmVSZXR1cm5TaGlwcGluZ0xhYmVsLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Rlc2NyaWJlUmV0dXJuU2hpcHBpbmdMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRGVzY3JpYmVSZXR1cm5TaGlwcGluZ0xhYmVsJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IGEgbGluayB0byBhbiBBbWF6b24gUzMgcHJlc2lnbmVkIFVSTCBmb3IgdGhlIG1hbmlmZXN0IGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgSm9iSWQgdmFsdWVcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfR2V0Sm9iTWFuaWZlc3QuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0Sm9iTWFuaWZlc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldEpvYk1hbmlmZXN0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gZ2V0IHRoZSBVbmxvY2tDb2RlIGNvZGUgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgam9iXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc25vd2JhbGwvbGF0ZXN0L2FwaS1yZWZlcmVuY2UvQVBJX0dldEpvYlVubG9ja0NvZGUuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0Sm9iVW5sb2NrQ29kZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0Sm9iVW5sb2NrQ29kZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgU25vd2JhbGwgc2VydmljZSBsaW1pdCBmb3IgeW91ciBhY2NvdW50LCBhbmQgYWxzbyB0aGUgbnVtYmVyIG9mIFNub3diYWxscyB5b3VyIGFjY291bnQgaGFzIGluIHVzZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nub3diYWxsL2xhdGVzdC9hcGktcmVmZXJlbmNlL0FQSV9HZXRTbm93YmFsbFVzYWdlLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldFNub3diYWxsVXNhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldFNub3diYWxsVXNhZ2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXR1cm4gYW4gQW1hem9uIFMzIHByZXNpZ25lZCBVUkwgZm9yIGFuIHVwZGF0ZSBmaWxlIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmllZCBKb2JJZFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nub3diYWxsL2xhdGVzdC9hcGktcmVmZXJlbmNlL0FQSV9HZXRTb2Z0d2FyZVVwZGF0ZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0U29mdHdhcmVVcGRhdGVzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdHZXRTb2Z0d2FyZVVwZGF0ZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBsaXN0IEpvYkxpc3RFbnRyeSBvYmplY3RzIG9mIHRoZSBzcGVjaWZpZWQgbGVuZ3RoXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc25vd2JhbGwvbGF0ZXN0L2FwaS1yZWZlcmVuY2UvQVBJX0xpc3RDbHVzdGVySm9icy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0Q2x1c3RlckpvYnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RDbHVzdGVySm9icycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGxpc3QgQ2x1c3Rlckxpc3RFbnRyeSBvYmplY3RzIG9mIHRoZSBzcGVjaWZpZWQgbGVuZ3RoXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc25vd2JhbGwvbGF0ZXN0L2FwaS1yZWZlcmVuY2UvQVBJX0xpc3RDbHVzdGVycy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0Q2x1c3RlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RDbHVzdGVycycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHVybiBhIGxpc3Qgb2YgdGhlIGRpZmZlcmVudCBBbWF6b24gRUMyIEFtYXpvbiBNYWNoaW5lIEltYWdlcyAoQU1JcykgdGhhdCBhcmUgb3duZWQgYnkgeW91ciBBV1MgYWNjb3VudCB0aGF0IHdvdWxkIGJlIHN1cHBvcnRlZCBmb3IgdXNlIG9uIGEgU25vdyBkZXZpY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfTGlzdENvbXBhdGlibGVJbWFnZXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvTGlzdENvbXBhdGlibGVJbWFnZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RDb21wYXRpYmxlSW1hZ2VzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBKb2JMaXN0RW50cnkgb2JqZWN0cyBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nub3diYWxsL2xhdGVzdC9hcGktcmVmZXJlbmNlL0FQSV9MaXN0Sm9icy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0Sm9icygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGlzdEpvYnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBsaXN0IExvbmdUZXJtUHJpY2luZ0xpc3RFbnRyeSBvYmplY3RzIGZvciB0aGUgYWNjb3VudCBtYWtpbmcgdGhlIHJlcXVlc3RcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfTGlzdExvbmdUZXJtUHJpY2luZy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0TG9uZ1Rlcm1QcmljaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0TG9uZ1Rlcm1QcmljaW5nJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBBZGRyZXNzIG9iamVjdHMgd2hlcmUgcGlja3VwIGlzIGF2YWlsYWJsZSwgb2YgdGhlIHNwZWNpZmllZCBsZW5ndGhcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfTGlzdFBpY2t1cExvY2F0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0UGlja3VwTG9jYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0UGlja3VwTG9jYXRpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBhbGwgc3VwcG9ydGVkIHZlcnNpb25zIGZvciBTbm93IG9uLWRldmljZSBzZXJ2aWNlc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3Nub3diYWxsL2xhdGVzdC9hcGktcmVmZXJlbmNlL0FQSV9MaXN0U2VydmljZVZlcnNpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RTZXJ2aWNlVmVyc2lvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RTZXJ2aWNlVmVyc2lvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB1cGRhdGUgd2hpbGUgYSBjbHVzdGVyJ3MgQ2x1c3RlclN0YXRlIHZhbHVlIGlzIGluIHRoZSBBd2FpdGluZ1F1b3J1bSBzdGF0ZSwgeW91IGNhbiB1cGRhdGUgc29tZSBvZiB0aGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgY2x1c3RlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfVXBkYXRlQ2x1c3Rlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVDbHVzdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVcGRhdGVDbHVzdGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gdXBkYXRlIHdoaWxlIGEgam9iJ3MgSm9iU3RhdGUgdmFsdWUgaXMgTmV3LCB5b3UgY2FuIHVwZGF0ZSBzb21lIG9mIHRoZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggYSBqb2JcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc25vd2JhbGwvbGF0ZXN0L2FwaS1yZWZlcmVuY2UvQVBJX1VwZGF0ZUpvYi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVKb2IoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1VwZGF0ZUpvYicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGUgc3RhdGUgd2hlbiBhIHRoZSBzaGlwbWVudCBzdGF0ZXMgY2hhbmdlcyB0byBhIGRpZmZlcmVudCBzdGF0ZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfVXBkYXRlSm9iU2hpcG1lbnRTdGF0ZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9VcGRhdGVKb2JTaGlwbWVudFN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdVcGRhdGVKb2JTaGlwbWVudFN0YXRlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gdXBkYXRlIGEgc3BlY2lmaWMgdXBmcm9udCBiaWxsaW5nIGNvbnRyYWN0IGZvciBhIGpvYlxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zbm93YmFsbC9sYXRlc3QvYXBpLXJlZmVyZW5jZS9BUElfVXBkYXRlTG9uZ1Rlcm1QcmljaW5nLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b1VwZGF0ZUxvbmdUZXJtUHJpY2luZygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVXBkYXRlTG9uZ1Rlcm1QcmljaW5nJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWNjZXNzTGV2ZWxMaXN0OiBBY2Nlc3NMZXZlbExpc3QgPSB7XG4gICAgV3JpdGU6IFtcbiAgICAgICdDYW5jZWxDbHVzdGVyJyxcbiAgICAgICdDYW5jZWxKb2InLFxuICAgICAgJ0NyZWF0ZUFkZHJlc3MnLFxuICAgICAgJ0NyZWF0ZUNsdXN0ZXInLFxuICAgICAgJ0NyZWF0ZUpvYicsXG4gICAgICAnQ3JlYXRlTG9uZ1Rlcm1QcmljaW5nJyxcbiAgICAgICdDcmVhdGVSZXR1cm5TaGlwcGluZ0xhYmVsJyxcbiAgICAgICdVcGRhdGVDbHVzdGVyJyxcbiAgICAgICdVcGRhdGVKb2InLFxuICAgICAgJ1VwZGF0ZUpvYlNoaXBtZW50U3RhdGUnLFxuICAgICAgJ1VwZGF0ZUxvbmdUZXJtUHJpY2luZydcbiAgICBdLFxuICAgIFJlYWQ6IFtcbiAgICAgICdEZXNjcmliZUFkZHJlc3MnLFxuICAgICAgJ0Rlc2NyaWJlQ2x1c3RlcicsXG4gICAgICAnRGVzY3JpYmVKb2InLFxuICAgICAgJ0Rlc2NyaWJlUmV0dXJuU2hpcHBpbmdMYWJlbCcsXG4gICAgICAnR2V0Sm9iTWFuaWZlc3QnLFxuICAgICAgJ0dldEpvYlVubG9ja0NvZGUnLFxuICAgICAgJ0dldFNub3diYWxsVXNhZ2UnLFxuICAgICAgJ0dldFNvZnR3YXJlVXBkYXRlcycsXG4gICAgICAnTGlzdExvbmdUZXJtUHJpY2luZydcbiAgICBdLFxuICAgIExpc3Q6IFtcbiAgICAgICdEZXNjcmliZUFkZHJlc3NlcycsXG4gICAgICAnTGlzdENsdXN0ZXJKb2JzJyxcbiAgICAgICdMaXN0Q2x1c3RlcnMnLFxuICAgICAgJ0xpc3RDb21wYXRpYmxlSW1hZ2VzJyxcbiAgICAgICdMaXN0Sm9icycsXG4gICAgICAnTGlzdFBpY2t1cExvY2F0aW9ucycsXG4gICAgICAnTGlzdFNlcnZpY2VWZXJzaW9ucydcbiAgICBdXG4gIH07XG59XG4iXX0=