We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
implement AWS::ServiceCatalog changes from May 14, 2020 update


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `troposphere/servicecatalog.py`
Content:
```
1 # Copyright (c) 2012-2018, Mark Peek <mark@peek.org>
2 # All rights reserved.
3 #
4 # See LICENSE file for full license.
5 
6 from . import AWSObject, AWSProperty, Tags
7 from .validators import boolean, integer
8 
9 
10 class AcceptedPortfolioShare(AWSObject):
11     resource_type = "AWS::ServiceCatalog::AcceptedPortfolioShare"
12 
13     props = {
14         'AcceptLanguage': (basestring, False),
15         'PortfolioId': (basestring, True),
16     }
17 
18 
19 class ProvisioningArtifactProperties(AWSProperty):
20     props = {
21         'Description': (basestring, False),
22         'DisableTemplateValidation': (boolean, False),
23         'Info': (dict, True),
24         'Name': (basestring, False),
25     }
26 
27 
28 class CloudFormationProduct(AWSObject):
29     resource_type = "AWS::ServiceCatalog::CloudFormationProduct"
30 
31     props = {
32         'AcceptLanguage': (basestring, False),
33         'Description': (basestring, False),
34         'Distributor': (basestring, False),
35         'Name': (basestring, True),
36         'Owner': (basestring, True),
37         'ProvisioningArtifactParameters':
38             ([ProvisioningArtifactProperties], True),
39         'SupportDescription': (basestring, False),
40         'SupportEmail': (basestring, False),
41         'SupportUrl': (basestring, False),
42         'Tags': (Tags, False),
43     }
44 
45 
46 class ProvisioningParameter(AWSProperty):
47     props = {
48         'Key': (basestring, False),
49         'Value': (basestring, False),
50     }
51 
52 
53 class ProvisioningPreferences(AWSProperty):
54     props = {
55         'StackSetAccounts': ([basestring], False),
56         'StackSetFailureToleranceCount': (integer, False),
57         'StackSetFailureTolerancePercentage': (integer, False),
58         'StackSetMaxConcurrencyCount': (integer, False),
59         'StackSetMaxConcurrencyPercentage': (integer, False),
60         'StackSetOperationType': (basestring, False),
61         'StackSetRegions': ([basestring], False),
62     }
63 
64 
65 class CloudFormationProvisionedProduct(AWSObject):
66     resource_type = "AWS::ServiceCatalog::CloudFormationProvisionedProduct"
67 
68     props = {
69         'AcceptLanguage': (basestring, False),
70         'NotificationArns': ([basestring], False),
71         'PathId': (basestring, False),
72         'ProductId': (basestring, False),
73         'ProductName': (basestring, False),
74         'ProvisionedProductName': (basestring, False),
75         'ProvisioningArtifactId': (basestring, False),
76         'ProvisioningArtifactName': (basestring, False),
77         'ProvisioningParameters': ([ProvisioningParameter], False),
78         'ProvisioningPreferences': (ProvisioningPreferences, False),
79         'Tags': (Tags, False),
80     }
81 
82 
83 class LaunchNotificationConstraint(AWSObject):
84     resource_type = "AWS::ServiceCatalog::LaunchNotificationConstraint"
85 
86     props = {
87         'AcceptLanguage': (basestring, False),
88         'Description': (basestring, False),
89         'NotificationArns': ([basestring], True),
90         'PortfolioId': (basestring, True),
91         'ProductId': (basestring, True),
92     }
93 
94 
95 class LaunchRoleConstraint(AWSObject):
96     resource_type = "AWS::ServiceCatalog::LaunchRoleConstraint"
97 
98     props = {
99         'AcceptLanguage': (basestring, False),
100         'Description': (basestring, False),
101         'LocalRoleName': (basestring, False),
102         'PortfolioId': (basestring, True),
103         'ProductId': (basestring, True),
104         'RoleArn': (basestring, True),
105     }
106 
107 
108 class LaunchTemplateConstraint(AWSObject):
109     resource_type = "AWS::ServiceCatalog::LaunchTemplateConstraint"
110 
111     props = {
112         'AcceptLanguage': (basestring, False),
113         'Description': (basestring, False),
114         'PortfolioId': (basestring, True),
115         'ProductId': (basestring, True),
116         'Rules': (basestring, True),
117     }
118 
119 
120 class Portfolio(AWSObject):
121     resource_type = "AWS::ServiceCatalog::Portfolio"
122 
123     props = {
124         'AcceptLanguage': (basestring, False),
125         'Description': (basestring, False),
126         'DisplayName': (basestring, True),
127         'ProviderName': (basestring, True),
128         'Tags': (Tags, False),
129     }
130 
131 
132 class PortfolioPrincipalAssociation(AWSObject):
133     resource_type = "AWS::ServiceCatalog::PortfolioPrincipalAssociation"
134 
135     props = {
136         'AcceptLanguage': (basestring, False),
137         'PortfolioId': (basestring, True),
138         'PrincipalARN': (basestring, True),
139         'PrincipalType': (basestring, True),
140     }
141 
142 
143 class PortfolioProductAssociation(AWSObject):
144     resource_type = "AWS::ServiceCatalog::PortfolioProductAssociation"
145 
146     props = {
147         'AcceptLanguage': (basestring, False),
148         'PortfolioId': (basestring, True),
149         'ProductId': (basestring, True),
150         'SourcePortfolioId': (basestring, False),
151     }
152 
153 
154 class PortfolioShare(AWSObject):
155     resource_type = "AWS::ServiceCatalog::PortfolioShare"
156 
157     props = {
158         'AcceptLanguage': (basestring, False),
159         'AccountId': (basestring, True),
160         'PortfolioId': (basestring, True),
161     }
162 
163 
164 def validate_tag_update(update):
165     valid_tag_update_values = [
166         "ALLOWED",
167         "NOT_ALLOWED",
168     ]
169     if update not in valid_tag_update_values:
170         raise ValueError(
171             "{} is not a valid tag update value".format(update)
172         )
173     return update
174 
175 
176 class ResourceUpdateConstraint(AWSObject):
177     resource_type = "AWS::ServiceCatalog::ResourceUpdateConstraint"
178 
179     props = {
180         'AcceptLanguage': (basestring, False),
181         'Description': (basestring, False),
182         'PortfolioId': (basestring, True),
183         'ProductId': (basestring, True),
184         'TagUpdateOnProvisionedProduct': (validate_tag_update, True),
185     }
186 
187 
188 class StackSetConstraint(AWSObject):
189     resource_type = "AWS::ServiceCatalog::StackSetConstraint"
190 
191     props = {
192         'AcceptLanguage': (basestring, False),
193         'AccountList': ([basestring], True),
194         'AdminRole': (basestring, True),
195         'Description': (basestring, True),
196         'ExecutionRole': (basestring, True),
197         'PortfolioId': (basestring, True),
198         'ProductId': (basestring, True),
199         'RegionList': ([basestring], True),
200         'StackInstanceControl': (basestring, True),
201     }
202 
203 
204 class TagOption(AWSObject):
205     resource_type = "AWS::ServiceCatalog::TagOption"
206 
207     props = {
208         'Active': (boolean, False),
209         'Key': (basestring, True),
210         'Value': (basestring, True),
211     }
212 
213 
214 class TagOptionAssociation(AWSObject):
215     resource_type = "AWS::ServiceCatalog::TagOptionAssociation"
216 
217     props = {
218         'ResourceId': (basestring, True),
219         'TagOptionId': (basestring, True),
220     }
221
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/troposphere/servicecatalog.py b/troposphere/servicecatalog.py
--- a/troposphere/servicecatalog.py
+++ b/troposphere/servicecatalog.py
@@ -36,6 +36,7 @@
         'Owner': (basestring, True),
         'ProvisioningArtifactParameters':
             ([ProvisioningArtifactProperties], True),
+        'ReplaceProvisioningArtifacts': (boolean, False),
         'SupportDescription': (basestring, False),
         'SupportEmail': (basestring, False),
         'SupportUrl': (basestring, False),

{"golden_diff": "diff --git a/troposphere/servicecatalog.py b/troposphere/servicecatalog.py\n--- a/troposphere/servicecatalog.py\n+++ b/troposphere/servicecatalog.py\n@@ -36,6 +36,7 @@\n         'Owner': (basestring, True),\n         'ProvisioningArtifactParameters':\n             ([ProvisioningArtifactProperties], True),\n+        'ReplaceProvisioningArtifacts': (boolean, False),\n         'SupportDescription': (basestring, False),\n         'SupportEmail': (basestring, False),\n         'SupportUrl': (basestring, False),\n", "issue": "implement AWS::ServiceCatalog changes from May 14, 2020 update\n\n", "before_files": [{"content": "# Copyright (c) 2012-2018, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty, Tags\nfrom .validators import boolean, integer\n\n\nclass AcceptedPortfolioShare(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::AcceptedPortfolioShare\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'PortfolioId': (basestring, True),\n    }\n\n\nclass ProvisioningArtifactProperties(AWSProperty):\n    props = {\n        'Description': (basestring, False),\n        'DisableTemplateValidation': (boolean, False),\n        'Info': (dict, True),\n        'Name': (basestring, False),\n    }\n\n\nclass CloudFormationProduct(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::CloudFormationProduct\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'Distributor': (basestring, False),\n        'Name': (basestring, True),\n        'Owner': (basestring, True),\n        'ProvisioningArtifactParameters':\n            ([ProvisioningArtifactProperties], True),\n        'SupportDescription': (basestring, False),\n        'SupportEmail': (basestring, False),\n        'SupportUrl': (basestring, False),\n        'Tags': (Tags, False),\n    }\n\n\nclass ProvisioningParameter(AWSProperty):\n    props = {\n        'Key': (basestring, False),\n        'Value': (basestring, False),\n    }\n\n\nclass ProvisioningPreferences(AWSProperty):\n    props = {\n        'StackSetAccounts': ([basestring], False),\n        'StackSetFailureToleranceCount': (integer, False),\n        'StackSetFailureTolerancePercentage': (integer, False),\n        'StackSetMaxConcurrencyCount': (integer, False),\n        'StackSetMaxConcurrencyPercentage': (integer, False),\n        'StackSetOperationType': (basestring, False),\n        'StackSetRegions': ([basestring], False),\n    }\n\n\nclass CloudFormationProvisionedProduct(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::CloudFormationProvisionedProduct\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'NotificationArns': ([basestring], False),\n        'PathId': (basestring, False),\n        'ProductId': (basestring, False),\n        'ProductName': (basestring, False),\n        'ProvisionedProductName': (basestring, False),\n        'ProvisioningArtifactId': (basestring, False),\n        'ProvisioningArtifactName': (basestring, False),\n        'ProvisioningParameters': ([ProvisioningParameter], False),\n        'ProvisioningPreferences': (ProvisioningPreferences, False),\n        'Tags': (Tags, False),\n    }\n\n\nclass LaunchNotificationConstraint(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::LaunchNotificationConstraint\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'NotificationArns': ([basestring], True),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n    }\n\n\nclass LaunchRoleConstraint(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::LaunchRoleConstraint\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'LocalRoleName': (basestring, False),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n        'RoleArn': (basestring, True),\n    }\n\n\nclass LaunchTemplateConstraint(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::LaunchTemplateConstraint\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n        'Rules': (basestring, True),\n    }\n\n\nclass Portfolio(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::Portfolio\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'DisplayName': (basestring, True),\n        'ProviderName': (basestring, True),\n        'Tags': (Tags, False),\n    }\n\n\nclass PortfolioPrincipalAssociation(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::PortfolioPrincipalAssociation\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'PortfolioId': (basestring, True),\n        'PrincipalARN': (basestring, True),\n        'PrincipalType': (basestring, True),\n    }\n\n\nclass PortfolioProductAssociation(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::PortfolioProductAssociation\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n        'SourcePortfolioId': (basestring, False),\n    }\n\n\nclass PortfolioShare(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::PortfolioShare\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'AccountId': (basestring, True),\n        'PortfolioId': (basestring, True),\n    }\n\n\ndef validate_tag_update(update):\n    valid_tag_update_values = [\n        \"ALLOWED\",\n        \"NOT_ALLOWED\",\n    ]\n    if update not in valid_tag_update_values:\n        raise ValueError(\n            \"{} is not a valid tag update value\".format(update)\n        )\n    return update\n\n\nclass ResourceUpdateConstraint(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::ResourceUpdateConstraint\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n        'TagUpdateOnProvisionedProduct': (validate_tag_update, True),\n    }\n\n\nclass StackSetConstraint(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::StackSetConstraint\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'AccountList': ([basestring], True),\n        'AdminRole': (basestring, True),\n        'Description': (basestring, True),\n        'ExecutionRole': (basestring, True),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n        'RegionList': ([basestring], True),\n        'StackInstanceControl': (basestring, True),\n    }\n\n\nclass TagOption(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::TagOption\"\n\n    props = {\n        'Active': (boolean, False),\n        'Key': (basestring, True),\n        'Value': (basestring, True),\n    }\n\n\nclass TagOptionAssociation(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::TagOptionAssociation\"\n\n    props = {\n        'ResourceId': (basestring, True),\n        'TagOptionId': (basestring, True),\n    }\n", "path": "troposphere/servicecatalog.py"}], "after_files": [{"content": "# Copyright (c) 2012-2018, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty, Tags\nfrom .validators import boolean, integer\n\n\nclass AcceptedPortfolioShare(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::AcceptedPortfolioShare\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'PortfolioId': (basestring, True),\n    }\n\n\nclass ProvisioningArtifactProperties(AWSProperty):\n    props = {\n        'Description': (basestring, False),\n        'DisableTemplateValidation': (boolean, False),\n        'Info': (dict, True),\n        'Name': (basestring, False),\n    }\n\n\nclass CloudFormationProduct(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::CloudFormationProduct\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'Distributor': (basestring, False),\n        'Name': (basestring, True),\n        'Owner': (basestring, True),\n        'ProvisioningArtifactParameters':\n            ([ProvisioningArtifactProperties], True),\n        'ReplaceProvisioningArtifacts': (boolean, False),\n        'SupportDescription': (basestring, False),\n        'SupportEmail': (basestring, False),\n        'SupportUrl': (basestring, False),\n        'Tags': (Tags, False),\n    }\n\n\nclass ProvisioningParameter(AWSProperty):\n    props = {\n        'Key': (basestring, False),\n        'Value': (basestring, False),\n    }\n\n\nclass ProvisioningPreferences(AWSProperty):\n    props = {\n        'StackSetAccounts': ([basestring], False),\n        'StackSetFailureToleranceCount': (integer, False),\n        'StackSetFailureTolerancePercentage': (integer, False),\n        'StackSetMaxConcurrencyCount': (integer, False),\n        'StackSetMaxConcurrencyPercentage': (integer, False),\n        'StackSetOperationType': (basestring, False),\n        'StackSetRegions': ([basestring], False),\n    }\n\n\nclass CloudFormationProvisionedProduct(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::CloudFormationProvisionedProduct\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'NotificationArns': ([basestring], False),\n        'PathId': (basestring, False),\n        'ProductId': (basestring, False),\n        'ProductName': (basestring, False),\n        'ProvisionedProductName': (basestring, False),\n        'ProvisioningArtifactId': (basestring, False),\n        'ProvisioningArtifactName': (basestring, False),\n        'ProvisioningParameters': ([ProvisioningParameter], False),\n        'ProvisioningPreferences': (ProvisioningPreferences, False),\n        'Tags': (Tags, False),\n    }\n\n\nclass LaunchNotificationConstraint(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::LaunchNotificationConstraint\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'NotificationArns': ([basestring], True),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n    }\n\n\nclass LaunchRoleConstraint(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::LaunchRoleConstraint\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'LocalRoleName': (basestring, False),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n        'RoleArn': (basestring, True),\n    }\n\n\nclass LaunchTemplateConstraint(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::LaunchTemplateConstraint\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n        'Rules': (basestring, True),\n    }\n\n\nclass Portfolio(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::Portfolio\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'DisplayName': (basestring, True),\n        'ProviderName': (basestring, True),\n        'Tags': (Tags, False),\n    }\n\n\nclass PortfolioPrincipalAssociation(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::PortfolioPrincipalAssociation\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'PortfolioId': (basestring, True),\n        'PrincipalARN': (basestring, True),\n        'PrincipalType': (basestring, True),\n    }\n\n\nclass PortfolioProductAssociation(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::PortfolioProductAssociation\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n        'SourcePortfolioId': (basestring, False),\n    }\n\n\nclass PortfolioShare(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::PortfolioShare\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'AccountId': (basestring, True),\n        'PortfolioId': (basestring, True),\n    }\n\n\ndef validate_tag_update(update):\n    valid_tag_update_values = [\n        \"ALLOWED\",\n        \"NOT_ALLOWED\",\n    ]\n    if update not in valid_tag_update_values:\n        raise ValueError(\n            \"{} is not a valid tag update value\".format(update)\n        )\n    return update\n\n\nclass ResourceUpdateConstraint(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::ResourceUpdateConstraint\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'Description': (basestring, False),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n        'TagUpdateOnProvisionedProduct': (validate_tag_update, True),\n    }\n\n\nclass StackSetConstraint(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::StackSetConstraint\"\n\n    props = {\n        'AcceptLanguage': (basestring, False),\n        'AccountList': ([basestring], True),\n        'AdminRole': (basestring, True),\n        'Description': (basestring, True),\n        'ExecutionRole': (basestring, True),\n        'PortfolioId': (basestring, True),\n        'ProductId': (basestring, True),\n        'RegionList': ([basestring], True),\n        'StackInstanceControl': (basestring, True),\n    }\n\n\nclass TagOption(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::TagOption\"\n\n    props = {\n        'Active': (boolean, False),\n        'Key': (basestring, True),\n        'Value': (basestring, True),\n    }\n\n\nclass TagOptionAssociation(AWSObject):\n    resource_type = \"AWS::ServiceCatalog::TagOptionAssociation\"\n\n    props = {\n        'ResourceId': (basestring, True),\n        'TagOptionId': (basestring, True),\n    }\n", "path": "troposphere/servicecatalog.py"}]}