UNPKG

cdk-iam-floyd

Version:

AWS IAM policy statement generator with fluent interface for AWS CDK

221 lines 24.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AwsMarketplaceDiscovery = void 0; const shared_1 = require("../../shared"); /** * Statement provider for service [aws-marketplace-discovery](https://docs.aws.amazon.com/service-authorization/latest/reference/list_marketplace-discovery.html). * * @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement */ class AwsMarketplaceDiscovery extends shared_1.PolicyStatement { /** * Grants permission to retrieve information about a listing * * Access Level: Read * * https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetListing.html */ toGetListing() { return this.to('GetListing'); } /** * Grants permission to retrieve information about an offer * * Access Level: Read * * https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOffer.html */ toGetOffer() { return this.to('GetOffer'); } /** * Grants permission to retrieve information about an offer set * * Access Level: Read * * https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferSet.html */ toGetOfferSet() { return this.to('GetOfferSet'); } /** * Grants permission to retrieve terms for an offer * * Access Level: Read * * https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetOfferTerms.html */ toGetOfferTerms() { return this.to('GetOfferTerms'); } /** * Grants permission to retrieve information about a product * * Access Level: Read * * https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_GetProduct.html */ toGetProduct() { return this.to('GetProduct'); } /** * Grants permission to list fulfillment options for a product * * Access Level: List * * https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_ListFulfillmentOptions.html */ toListFulfillmentOptions() { return this.to('ListFulfillmentOptions'); } /** * Grants permission to list private offers * * Access Level: List * * https://docs.aws.amazon.com/marketplace/latest/buyerguide/private-offers-page.html */ toListPrivateListings() { return this.to('ListPrivateListings'); } /** * Grants permission to list purchase options available to the buyer * * Access Level: List * * https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_ListPurchaseOptions.html */ toListPurchaseOptions() { return this.to('ListPurchaseOptions'); } /** * Grants permission to search for facet values to filter listings * * Access Level: List * * https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_SearchFacets.html */ toSearchFacets() { return this.to('SearchFacets'); } /** * Grants permission to search for product listings * * Access Level: List * * https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-discovery_SearchListings.html */ toSearchListings() { return this.to('SearchListings'); } /** * Adds a resource of type AllListings to the statement * * https://docs.aws.amazon.com/marketplace/latest/APIReference/discovery-apis.html#discovery-data-model * * @param catalogName - Identifier for the catalogName. * @param resourceName - Identifier for the resourceName. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onAllListings(catalogName, resourceName, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:aws-marketplace:::catalog/${catalogName}/listing/${resourceName}`); } /** * Adds a resource of type AllPurchaseOptions to the statement * * https://docs.aws.amazon.com/marketplace/latest/APIReference/discovery-apis.html#discovery-data-model * * @param catalogName - Identifier for the catalogName. * @param resourceName - Identifier for the resourceName. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onAllPurchaseOptions(catalogName, resourceName, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:aws-marketplace:::catalog/${catalogName}/purchaseOption/${resourceName}`); } /** * Adds a resource of type Listing to the statement * * https://docs.aws.amazon.com/marketplace/latest/APIReference/discovery-apis.html#discovery-data-model * * @param catalogName - Identifier for the catalogName. * @param listingId - Identifier for the listingId. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onListing(catalogName, listingId, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:aws-marketplace:::catalog/${catalogName}/listing/${listingId}`); } /** * Adds a resource of type Offer to the statement * * https://docs.aws.amazon.com/marketplace/latest/APIReference/discovery-apis.html#discovery-data-model * * @param catalogName - Identifier for the catalogName. * @param offerId - Identifier for the offerId. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onOffer(catalogName, offerId, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:aws-marketplace:::catalog/${catalogName}/offer/${offerId}`); } /** * Adds a resource of type OfferSet to the statement * * https://docs.aws.amazon.com/marketplace/latest/APIReference/discovery-apis.html#discovery-data-model * * @param catalogName - Identifier for the catalogName. * @param offerSetId - Identifier for the offerSetId. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onOfferSet(catalogName, offerSetId, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:aws-marketplace:::catalog/${catalogName}/offerSet/${offerSetId}`); } /** * Adds a resource of type Product to the statement * * https://docs.aws.amazon.com/marketplace/latest/APIReference/discovery-apis.html#discovery-data-model * * @param catalogName - Identifier for the catalogName. * @param productId - Identifier for the productId. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onProduct(catalogName, productId, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:aws-marketplace:::catalog/${catalogName}/product/${productId}`); } /** * Adds a resource of type PurchaseOption to the statement * * https://docs.aws.amazon.com/marketplace/latest/APIReference/discovery-apis.html#discovery-data-model * * @param catalogName - Identifier for the catalogName. * @param purchaseOptionId - Identifier for the purchaseOptionId. * @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition. */ onPurchaseOption(catalogName, purchaseOptionId, partition) { return this.on(`arn:${partition ?? this.defaultPartition}:aws-marketplace:::catalog/${catalogName}/purchaseOption/${purchaseOptionId}`); } /** * Statement provider for service [aws-marketplace-discovery](https://docs.aws.amazon.com/service-authorization/latest/reference/list_marketplace-discovery.html). * */ constructor(props) { super(props); this.servicePrefix = 'aws-marketplace'; this.accessLevelList = { Read: [ 'GetListing', 'GetOffer', 'GetOfferSet', 'GetOfferTerms', 'GetProduct' ], List: [ 'ListFulfillmentOptions', 'ListPrivateListings', 'ListPurchaseOptions', 'SearchFacets', 'SearchListings' ] }; } } exports.AwsMarketplaceDiscovery = AwsMarketplaceDiscovery; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLW1hcmtldHBsYWNlLWRpc2NvdmVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImF3cy1tYXJrZXRwbGFjZS1kaXNjb3ZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQStDO0FBRy9DOzs7O0dBSUc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLHdCQUFlO0lBRzFEOzs7Ozs7T0FNRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx3QkFBd0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHFCQUFxQjtRQUMxQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0kscUJBQXFCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFtQkQ7Ozs7Ozs7O09BUUc7SUFDSSxhQUFhLENBQUMsV0FBbUIsRUFBRSxZQUFvQixFQUFFLFNBQWtCO1FBQ2hGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLDhCQUErQixXQUFZLFlBQWEsWUFBYSxFQUFFLENBQUMsQ0FBQztJQUNySSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxvQkFBb0IsQ0FBQyxXQUFtQixFQUFFLFlBQW9CLEVBQUUsU0FBa0I7UUFDdkYsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQVEsU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBaUIsOEJBQStCLFdBQVksbUJBQW9CLFlBQWEsRUFBRSxDQUFDLENBQUM7SUFDNUksQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksU0FBUyxDQUFDLFdBQW1CLEVBQUUsU0FBaUIsRUFBRSxTQUFrQjtRQUN6RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBUSxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFpQiw4QkFBK0IsV0FBWSxZQUFhLFNBQVUsRUFBRSxDQUFDLENBQUM7SUFDbEksQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksT0FBTyxDQUFDLFdBQW1CLEVBQUUsT0FBZSxFQUFFLFNBQWtCO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLDhCQUErQixXQUFZLFVBQVcsT0FBUSxFQUFFLENBQUMsQ0FBQztJQUM5SCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxVQUFVLENBQUMsV0FBbUIsRUFBRSxVQUFrQixFQUFFLFNBQWtCO1FBQzNFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLDhCQUErQixXQUFZLGFBQWMsVUFBVyxFQUFFLENBQUMsQ0FBQztJQUNwSSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxTQUFTLENBQUMsV0FBbUIsRUFBRSxTQUFpQixFQUFFLFNBQWtCO1FBQ3pFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLDhCQUErQixXQUFZLFlBQWEsU0FBVSxFQUFFLENBQUMsQ0FBQztJQUNsSSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxnQkFBZ0IsQ0FBQyxXQUFtQixFQUFFLGdCQUF3QixFQUFFLFNBQWtCO1FBQ3ZGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFRLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWlCLDhCQUErQixXQUFZLG1CQUFvQixnQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDaEosQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksS0FBZ0M7UUFDMUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBak9SLGtCQUFhLEdBQUcsaUJBQWlCLENBQUM7UUFnSC9CLG9CQUFlLEdBQW9CO1lBQzNDLElBQUksRUFBRTtnQkFDSixZQUFZO2dCQUNaLFVBQVU7Z0JBQ1YsYUFBYTtnQkFDYixlQUFlO2dCQUNmLFlBQVk7YUFDYjtZQUNELElBQUksRUFBRTtnQkFDSix3QkFBd0I7Z0JBQ3hCLHFCQUFxQjtnQkFDckIscUJBQXFCO2dCQUNyQixjQUFjO2dCQUNkLGdCQUFnQjthQUNqQjtTQUNGLENBQUM7SUFtR0YsQ0FBQztDQUNGO0FBcE9ELDBEQW9PQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY2Vzc0xldmVsTGlzdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9hY2Nlc3MtbGV2ZWwnO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IGF3c19pYW0gYXMgaWFtIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbi8qKlxuICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFthd3MtbWFya2V0cGxhY2UtZGlzY292ZXJ5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9tYXJrZXRwbGFjZS1kaXNjb3ZlcnkuaHRtbCkuXG4gKlxuICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBBd3NNYXJrZXRwbGFjZURpc2NvdmVyeSBleHRlbmRzIFBvbGljeVN0YXRlbWVudCB7XG4gIHB1YmxpYyBzZXJ2aWNlUHJlZml4ID0gJ2F3cy1tYXJrZXRwbGFjZSc7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IGEgbGlzdGluZ1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21hcmtldHBsYWNlL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX21hcmtldHBsYWNlLWRpc2NvdmVyeV9HZXRMaXN0aW5nLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldExpc3RpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldExpc3RpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBhbiBvZmZlclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21hcmtldHBsYWNlL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX21hcmtldHBsYWNlLWRpc2NvdmVyeV9HZXRPZmZlci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9HZXRPZmZlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0T2ZmZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBhbiBvZmZlciBzZXRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9tYXJrZXRwbGFjZS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9tYXJrZXRwbGFjZS1kaXNjb3ZlcnlfR2V0T2ZmZXJTZXQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0T2ZmZXJTZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldE9mZmVyU2V0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmV0cmlldmUgdGVybXMgZm9yIGFuIG9mZmVyXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWFya2V0cGxhY2UvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfbWFya2V0cGxhY2UtZGlzY292ZXJ5X0dldE9mZmVyVGVybXMuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvR2V0T2ZmZXJUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0T2ZmZXJUZXJtcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IGEgcHJvZHVjdFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21hcmtldHBsYWNlL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX21hcmtldHBsYWNlLWRpc2NvdmVyeV9HZXRQcm9kdWN0Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0dldFByb2R1Y3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldFByb2R1Y3QnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBsaXN0IGZ1bGZpbGxtZW50IG9wdGlvbnMgZm9yIGEgcHJvZHVjdFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21hcmtldHBsYWNlL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX21hcmtldHBsYWNlLWRpc2NvdmVyeV9MaXN0RnVsZmlsbG1lbnRPcHRpb25zLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0xpc3RGdWxmaWxsbWVudE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xpc3RGdWxmaWxsbWVudE9wdGlvbnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBsaXN0IHByaXZhdGUgb2ZmZXJzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWFya2V0cGxhY2UvbGF0ZXN0L2J1eWVyZ3VpZGUvcHJpdmF0ZS1vZmZlcnMtcGFnZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0UHJpdmF0ZUxpc3RpbmdzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0UHJpdmF0ZUxpc3RpbmdzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbGlzdCBwdXJjaGFzZSBvcHRpb25zIGF2YWlsYWJsZSB0byB0aGUgYnV5ZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBMaXN0XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9tYXJrZXRwbGFjZS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9tYXJrZXRwbGFjZS1kaXNjb3ZlcnlfTGlzdFB1cmNoYXNlT3B0aW9ucy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9MaXN0UHVyY2hhc2VPcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMaXN0UHVyY2hhc2VPcHRpb25zJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc2VhcmNoIGZvciBmYWNldCB2YWx1ZXMgdG8gZmlsdGVyIGxpc3RpbmdzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogTGlzdFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWFya2V0cGxhY2UvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfbWFya2V0cGxhY2UtZGlzY292ZXJ5X1NlYXJjaEZhY2V0cy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TZWFyY2hGYWNldHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1NlYXJjaEZhY2V0cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHNlYXJjaCBmb3IgcHJvZHVjdCBsaXN0aW5nc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IExpc3RcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21hcmtldHBsYWNlL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX21hcmtldHBsYWNlLWRpc2NvdmVyeV9TZWFyY2hMaXN0aW5ncy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9TZWFyY2hMaXN0aW5ncygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnU2VhcmNoTGlzdGluZ3MnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhY2Nlc3NMZXZlbExpc3Q6IEFjY2Vzc0xldmVsTGlzdCA9IHtcbiAgICBSZWFkOiBbXG4gICAgICAnR2V0TGlzdGluZycsXG4gICAgICAnR2V0T2ZmZXInLFxuICAgICAgJ0dldE9mZmVyU2V0JyxcbiAgICAgICdHZXRPZmZlclRlcm1zJyxcbiAgICAgICdHZXRQcm9kdWN0J1xuICAgIF0sXG4gICAgTGlzdDogW1xuICAgICAgJ0xpc3RGdWxmaWxsbWVudE9wdGlvbnMnLFxuICAgICAgJ0xpc3RQcml2YXRlTGlzdGluZ3MnLFxuICAgICAgJ0xpc3RQdXJjaGFzZU9wdGlvbnMnLFxuICAgICAgJ1NlYXJjaEZhY2V0cycsXG4gICAgICAnU2VhcmNoTGlzdGluZ3MnXG4gICAgXVxuICB9O1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVzb3VyY2Ugb2YgdHlwZSBBbGxMaXN0aW5ncyB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9tYXJrZXRwbGFjZS9sYXRlc3QvQVBJUmVmZXJlbmNlL2Rpc2NvdmVyeS1hcGlzLmh0bWwjZGlzY292ZXJ5LWRhdGEtbW9kZWxcbiAgICpcbiAgICogQHBhcmFtIGNhdGFsb2dOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIGNhdGFsb2dOYW1lLlxuICAgKiBAcGFyYW0gcmVzb3VyY2VOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlTmFtZS5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICovXG4gIHB1YmxpYyBvbkFsbExpc3RpbmdzKGNhdGFsb2dOYW1lOiBzdHJpbmcsIHJlc291cmNlTmFtZTogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTphd3MtbWFya2V0cGxhY2U6OjpjYXRhbG9nLyR7IGNhdGFsb2dOYW1lIH0vbGlzdGluZy8keyByZXNvdXJjZU5hbWUgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIEFsbFB1cmNoYXNlT3B0aW9ucyB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9tYXJrZXRwbGFjZS9sYXRlc3QvQVBJUmVmZXJlbmNlL2Rpc2NvdmVyeS1hcGlzLmh0bWwjZGlzY292ZXJ5LWRhdGEtbW9kZWxcbiAgICpcbiAgICogQHBhcmFtIGNhdGFsb2dOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIGNhdGFsb2dOYW1lLlxuICAgKiBAcGFyYW0gcmVzb3VyY2VOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlTmFtZS5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICovXG4gIHB1YmxpYyBvbkFsbFB1cmNoYXNlT3B0aW9ucyhjYXRhbG9nTmFtZTogc3RyaW5nLCByZXNvdXJjZU5hbWU6IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06YXdzLW1hcmtldHBsYWNlOjo6Y2F0YWxvZy8keyBjYXRhbG9nTmFtZSB9L3B1cmNoYXNlT3B0aW9uLyR7IHJlc291cmNlTmFtZSB9YCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlc291cmNlIG9mIHR5cGUgTGlzdGluZyB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9tYXJrZXRwbGFjZS9sYXRlc3QvQVBJUmVmZXJlbmNlL2Rpc2NvdmVyeS1hcGlzLmh0bWwjZGlzY292ZXJ5LWRhdGEtbW9kZWxcbiAgICpcbiAgICogQHBhcmFtIGNhdGFsb2dOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIGNhdGFsb2dOYW1lLlxuICAgKiBAcGFyYW0gbGlzdGluZ0lkIC0gSWRlbnRpZmllciBmb3IgdGhlIGxpc3RpbmdJZC5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICovXG4gIHB1YmxpYyBvbkxpc3RpbmcoY2F0YWxvZ05hbWU6IHN0cmluZywgbGlzdGluZ0lkOiBzdHJpbmcsIHBhcnRpdGlvbj86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm9uKGBhcm46JHsgcGFydGl0aW9uID8/IHRoaXMuZGVmYXVsdFBhcnRpdGlvbiB9OmF3cy1tYXJrZXRwbGFjZTo6OmNhdGFsb2cvJHsgY2F0YWxvZ05hbWUgfS9saXN0aW5nLyR7IGxpc3RpbmdJZCB9YCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHJlc291cmNlIG9mIHR5cGUgT2ZmZXIgdG8gdGhlIHN0YXRlbWVudFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbWFya2V0cGxhY2UvbGF0ZXN0L0FQSVJlZmVyZW5jZS9kaXNjb3ZlcnktYXBpcy5odG1sI2Rpc2NvdmVyeS1kYXRhLW1vZGVsXG4gICAqXG4gICAqIEBwYXJhbSBjYXRhbG9nTmFtZSAtIElkZW50aWZpZXIgZm9yIHRoZSBjYXRhbG9nTmFtZS5cbiAgICogQHBhcmFtIG9mZmVySWQgLSBJZGVudGlmaWVyIGZvciB0aGUgb2ZmZXJJZC5cbiAgICogQHBhcmFtIHBhcnRpdGlvbiAtIFBhcnRpdGlvbiBvZiB0aGUgQVdTIGFjY291bnQgW2F3cywgYXdzLWNuLCBhd3MtdXMtZ292XTsgZGVmYXVsdHMgdG8gYGF3c2AsIHVubGVzcyB1c2luZyB0aGUgQ0RLLCB3aGVyZSB0aGUgZGVmYXVsdCBpcyB0aGUgY3VycmVudCBTdGFjaydzIHBhcnRpdGlvbi5cbiAgICovXG4gIHB1YmxpYyBvbk9mZmVyKGNhdGFsb2dOYW1lOiBzdHJpbmcsIG9mZmVySWQ6IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06YXdzLW1hcmtldHBsYWNlOjo6Y2F0YWxvZy8keyBjYXRhbG9nTmFtZSB9L29mZmVyLyR7IG9mZmVySWQgfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByZXNvdXJjZSBvZiB0eXBlIE9mZmVyU2V0IHRvIHRoZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21hcmtldHBsYWNlL2xhdGVzdC9BUElSZWZlcmVuY2UvZGlzY292ZXJ5LWFwaXMuaHRtbCNkaXNjb3ZlcnktZGF0YS1tb2RlbFxuICAgKlxuICAgKiBAcGFyYW0gY2F0YWxvZ05hbWUgLSBJZGVudGlmaWVyIGZvciB0aGUgY2F0YWxvZ05hbWUuXG4gICAqIEBwYXJhbSBvZmZlclNldElkIC0gSWRlbnRpZmllciBmb3IgdGhlIG9mZmVyU2V0SWQuXG4gICAqIEBwYXJhbSBwYXJ0aXRpb24gLSBQYXJ0aXRpb24gb2YgdGhlIEFXUyBhY2NvdW50IFthd3MsIGF3cy1jbiwgYXdzLXVzLWdvdl07IGRlZmF1bHRzIHRvIGBhd3NgLCB1bmxlc3MgdXNpbmcgdGhlIENESywgd2hlcmUgdGhlIGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgU3RhY2sncyBwYXJ0aXRpb24uXG4gICAqL1xuICBwdWJsaWMgb25PZmZlclNldChjYXRhbG9nTmFtZTogc3RyaW5nLCBvZmZlclNldElkOiBzdHJpbmcsIHBhcnRpdGlvbj86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm9uKGBhcm46JHsgcGFydGl0aW9uID8/IHRoaXMuZGVmYXVsdFBhcnRpdGlvbiB9OmF3cy1tYXJrZXRwbGFjZTo6OmNhdGFsb2cvJHsgY2F0YWxvZ05hbWUgfS9vZmZlclNldC8keyBvZmZlclNldElkIH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVzb3VyY2Ugb2YgdHlwZSBQcm9kdWN0IHRvIHRoZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21hcmtldHBsYWNlL2xhdGVzdC9BUElSZWZlcmVuY2UvZGlzY292ZXJ5LWFwaXMuaHRtbCNkaXNjb3ZlcnktZGF0YS1tb2RlbFxuICAgKlxuICAgKiBAcGFyYW0gY2F0YWxvZ05hbWUgLSBJZGVudGlmaWVyIGZvciB0aGUgY2F0YWxvZ05hbWUuXG4gICAqIEBwYXJhbSBwcm9kdWN0SWQgLSBJZGVudGlmaWVyIGZvciB0aGUgcHJvZHVjdElkLlxuICAgKiBAcGFyYW0gcGFydGl0aW9uIC0gUGFydGl0aW9uIG9mIHRoZSBBV1MgYWNjb3VudCBbYXdzLCBhd3MtY24sIGF3cy11cy1nb3ZdOyBkZWZhdWx0cyB0byBgYXdzYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcGFydGl0aW9uLlxuICAgKi9cbiAgcHVibGljIG9uUHJvZHVjdChjYXRhbG9nTmFtZTogc3RyaW5nLCBwcm9kdWN0SWQ6IHN0cmluZywgcGFydGl0aW9uPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub24oYGFybjokeyBwYXJ0aXRpb24gPz8gdGhpcy5kZWZhdWx0UGFydGl0aW9uIH06YXdzLW1hcmtldHBsYWNlOjo6Y2F0YWxvZy8keyBjYXRhbG9nTmFtZSB9L3Byb2R1Y3QvJHsgcHJvZHVjdElkIH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVzb3VyY2Ugb2YgdHlwZSBQdXJjaGFzZU9wdGlvbiB0byB0aGUgc3RhdGVtZW50XG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9tYXJrZXRwbGFjZS9sYXRlc3QvQVBJUmVmZXJlbmNlL2Rpc2NvdmVyeS1hcGlzLmh0bWwjZGlzY292ZXJ5LWRhdGEtbW9kZWxcbiAgICpcbiAgICogQHBhcmFtIGNhdGFsb2dOYW1lIC0gSWRlbnRpZmllciBmb3IgdGhlIGNhdGFsb2dOYW1lLlxuICAgKiBAcGFyYW0gcHVyY2hhc2VPcHRpb25JZCAtIElkZW50aWZpZXIgZm9yIHRoZSBwdXJjaGFzZU9wdGlvbklkLlxuICAgKiBAcGFyYW0gcGFydGl0aW9uIC0gUGFydGl0aW9uIG9mIHRoZSBBV1MgYWNjb3VudCBbYXdzLCBhd3MtY24sIGF3cy11cy1nb3ZdOyBkZWZhdWx0cyB0byBgYXdzYCwgdW5sZXNzIHVzaW5nIHRoZSBDREssIHdoZXJlIHRoZSBkZWZhdWx0IGlzIHRoZSBjdXJyZW50IFN0YWNrJ3MgcGFydGl0aW9uLlxuICAgKi9cbiAgcHVibGljIG9uUHVyY2hhc2VPcHRpb24oY2F0YWxvZ05hbWU6IHN0cmluZywgcHVyY2hhc2VPcHRpb25JZDogc3RyaW5nLCBwYXJ0aXRpb24/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vbihgYXJuOiR7IHBhcnRpdGlvbiA/PyB0aGlzLmRlZmF1bHRQYXJ0aXRpb24gfTphd3MtbWFya2V0cGxhY2U6OjpjYXRhbG9nLyR7IGNhdGFsb2dOYW1lIH0vcHVyY2hhc2VPcHRpb24vJHsgcHVyY2hhc2VPcHRpb25JZCB9YCk7XG4gIH1cblxuICAvKipcbiAgICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFthd3MtbWFya2V0cGxhY2UtZGlzY292ZXJ5XShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9tYXJrZXRwbGFjZS1kaXNjb3ZlcnkuaHRtbCkuXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcz86IGlhbS5Qb2xpY3lTdGF0ZW1lbnRQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxufVxuIl19