@effect-aws/client-rds 1.0.0

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.
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultRDSServiceLayer = exports.RDSServiceLayer = exports.BaseRDSServiceLayer = exports.makeRDSService = exports.RDSService = void 0;
4
+ /**
5
+ * @since 1.0.0
6
+ */
7
+ const client_rds_1 = require("@aws-sdk/client-rds");
8
+ const effect_1 = require("effect");
9
+ const Errors_1 = require("./Errors");
10
+ const RDSClientInstance_1 = require("./RDSClientInstance");
11
+ const RDSClientInstanceConfig_1 = require("./RDSClientInstanceConfig");
12
+ const commands = {
13
+ AddRoleToDBClusterCommand: client_rds_1.AddRoleToDBClusterCommand,
14
+ AddRoleToDBInstanceCommand: client_rds_1.AddRoleToDBInstanceCommand,
15
+ AddSourceIdentifierToSubscriptionCommand: client_rds_1.AddSourceIdentifierToSubscriptionCommand,
16
+ AddTagsToResourceCommand: client_rds_1.AddTagsToResourceCommand,
17
+ ApplyPendingMaintenanceActionCommand: client_rds_1.ApplyPendingMaintenanceActionCommand,
18
+ AuthorizeDBSecurityGroupIngressCommand: client_rds_1.AuthorizeDBSecurityGroupIngressCommand,
19
+ BacktrackDBClusterCommand: client_rds_1.BacktrackDBClusterCommand,
20
+ CancelExportTaskCommand: client_rds_1.CancelExportTaskCommand,
21
+ CopyDBClusterParameterGroupCommand: client_rds_1.CopyDBClusterParameterGroupCommand,
22
+ CopyDBClusterSnapshotCommand: client_rds_1.CopyDBClusterSnapshotCommand,
23
+ CopyDBParameterGroupCommand: client_rds_1.CopyDBParameterGroupCommand,
24
+ CopyDBSnapshotCommand: client_rds_1.CopyDBSnapshotCommand,
25
+ CopyOptionGroupCommand: client_rds_1.CopyOptionGroupCommand,
26
+ CreateBlueGreenDeploymentCommand: client_rds_1.CreateBlueGreenDeploymentCommand,
27
+ CreateCustomDBEngineVersionCommand: client_rds_1.CreateCustomDBEngineVersionCommand,
28
+ CreateDBClusterCommand: client_rds_1.CreateDBClusterCommand,
29
+ CreateDBClusterEndpointCommand: client_rds_1.CreateDBClusterEndpointCommand,
30
+ CreateDBClusterParameterGroupCommand: client_rds_1.CreateDBClusterParameterGroupCommand,
31
+ CreateDBClusterSnapshotCommand: client_rds_1.CreateDBClusterSnapshotCommand,
32
+ CreateDBInstanceCommand: client_rds_1.CreateDBInstanceCommand,
33
+ CreateDBInstanceReadReplicaCommand: client_rds_1.CreateDBInstanceReadReplicaCommand,
34
+ CreateDBParameterGroupCommand: client_rds_1.CreateDBParameterGroupCommand,
35
+ CreateDBProxyCommand: client_rds_1.CreateDBProxyCommand,
36
+ CreateDBProxyEndpointCommand: client_rds_1.CreateDBProxyEndpointCommand,
37
+ CreateDBSecurityGroupCommand: client_rds_1.CreateDBSecurityGroupCommand,
38
+ CreateDBShardGroupCommand: client_rds_1.CreateDBShardGroupCommand,
39
+ CreateDBSnapshotCommand: client_rds_1.CreateDBSnapshotCommand,
40
+ CreateDBSubnetGroupCommand: client_rds_1.CreateDBSubnetGroupCommand,
41
+ CreateEventSubscriptionCommand: client_rds_1.CreateEventSubscriptionCommand,
42
+ CreateGlobalClusterCommand: client_rds_1.CreateGlobalClusterCommand,
43
+ CreateIntegrationCommand: client_rds_1.CreateIntegrationCommand,
44
+ CreateOptionGroupCommand: client_rds_1.CreateOptionGroupCommand,
45
+ CreateTenantDatabaseCommand: client_rds_1.CreateTenantDatabaseCommand,
46
+ DeleteBlueGreenDeploymentCommand: client_rds_1.DeleteBlueGreenDeploymentCommand,
47
+ DeleteCustomDBEngineVersionCommand: client_rds_1.DeleteCustomDBEngineVersionCommand,
48
+ DeleteDBClusterCommand: client_rds_1.DeleteDBClusterCommand,
49
+ DeleteDBClusterAutomatedBackupCommand: client_rds_1.DeleteDBClusterAutomatedBackupCommand,
50
+ DeleteDBClusterEndpointCommand: client_rds_1.DeleteDBClusterEndpointCommand,
51
+ DeleteDBClusterParameterGroupCommand: client_rds_1.DeleteDBClusterParameterGroupCommand,
52
+ DeleteDBClusterSnapshotCommand: client_rds_1.DeleteDBClusterSnapshotCommand,
53
+ DeleteDBInstanceCommand: client_rds_1.DeleteDBInstanceCommand,
54
+ DeleteDBInstanceAutomatedBackupCommand: client_rds_1.DeleteDBInstanceAutomatedBackupCommand,
55
+ DeleteDBParameterGroupCommand: client_rds_1.DeleteDBParameterGroupCommand,
56
+ DeleteDBProxyCommand: client_rds_1.DeleteDBProxyCommand,
57
+ DeleteDBProxyEndpointCommand: client_rds_1.DeleteDBProxyEndpointCommand,
58
+ DeleteDBSecurityGroupCommand: client_rds_1.DeleteDBSecurityGroupCommand,
59
+ DeleteDBShardGroupCommand: client_rds_1.DeleteDBShardGroupCommand,
60
+ DeleteDBSnapshotCommand: client_rds_1.DeleteDBSnapshotCommand,
61
+ DeleteDBSubnetGroupCommand: client_rds_1.DeleteDBSubnetGroupCommand,
62
+ DeleteEventSubscriptionCommand: client_rds_1.DeleteEventSubscriptionCommand,
63
+ DeleteGlobalClusterCommand: client_rds_1.DeleteGlobalClusterCommand,
64
+ DeleteIntegrationCommand: client_rds_1.DeleteIntegrationCommand,
65
+ DeleteOptionGroupCommand: client_rds_1.DeleteOptionGroupCommand,
66
+ DeleteTenantDatabaseCommand: client_rds_1.DeleteTenantDatabaseCommand,
67
+ DeregisterDBProxyTargetsCommand: client_rds_1.DeregisterDBProxyTargetsCommand,
68
+ DescribeAccountAttributesCommand: client_rds_1.DescribeAccountAttributesCommand,
69
+ DescribeBlueGreenDeploymentsCommand: client_rds_1.DescribeBlueGreenDeploymentsCommand,
70
+ DescribeCertificatesCommand: client_rds_1.DescribeCertificatesCommand,
71
+ DescribeDBClusterAutomatedBackupsCommand: client_rds_1.DescribeDBClusterAutomatedBackupsCommand,
72
+ DescribeDBClusterBacktracksCommand: client_rds_1.DescribeDBClusterBacktracksCommand,
73
+ DescribeDBClusterEndpointsCommand: client_rds_1.DescribeDBClusterEndpointsCommand,
74
+ DescribeDBClusterParameterGroupsCommand: client_rds_1.DescribeDBClusterParameterGroupsCommand,
75
+ DescribeDBClusterParametersCommand: client_rds_1.DescribeDBClusterParametersCommand,
76
+ DescribeDBClusterSnapshotAttributesCommand: client_rds_1.DescribeDBClusterSnapshotAttributesCommand,
77
+ DescribeDBClusterSnapshotsCommand: client_rds_1.DescribeDBClusterSnapshotsCommand,
78
+ DescribeDBClustersCommand: client_rds_1.DescribeDBClustersCommand,
79
+ DescribeDBEngineVersionsCommand: client_rds_1.DescribeDBEngineVersionsCommand,
80
+ DescribeDBInstanceAutomatedBackupsCommand: client_rds_1.DescribeDBInstanceAutomatedBackupsCommand,
81
+ DescribeDBInstancesCommand: client_rds_1.DescribeDBInstancesCommand,
82
+ DescribeDBLogFilesCommand: client_rds_1.DescribeDBLogFilesCommand,
83
+ DescribeDBParameterGroupsCommand: client_rds_1.DescribeDBParameterGroupsCommand,
84
+ DescribeDBParametersCommand: client_rds_1.DescribeDBParametersCommand,
85
+ DescribeDBProxiesCommand: client_rds_1.DescribeDBProxiesCommand,
86
+ DescribeDBProxyEndpointsCommand: client_rds_1.DescribeDBProxyEndpointsCommand,
87
+ DescribeDBProxyTargetGroupsCommand: client_rds_1.DescribeDBProxyTargetGroupsCommand,
88
+ DescribeDBProxyTargetsCommand: client_rds_1.DescribeDBProxyTargetsCommand,
89
+ DescribeDBRecommendationsCommand: client_rds_1.DescribeDBRecommendationsCommand,
90
+ DescribeDBSecurityGroupsCommand: client_rds_1.DescribeDBSecurityGroupsCommand,
91
+ DescribeDBShardGroupsCommand: client_rds_1.DescribeDBShardGroupsCommand,
92
+ DescribeDBSnapshotAttributesCommand: client_rds_1.DescribeDBSnapshotAttributesCommand,
93
+ DescribeDBSnapshotTenantDatabasesCommand: client_rds_1.DescribeDBSnapshotTenantDatabasesCommand,
94
+ DescribeDBSnapshotsCommand: client_rds_1.DescribeDBSnapshotsCommand,
95
+ DescribeDBSubnetGroupsCommand: client_rds_1.DescribeDBSubnetGroupsCommand,
96
+ DescribeEngineDefaultClusterParametersCommand: client_rds_1.DescribeEngineDefaultClusterParametersCommand,
97
+ DescribeEngineDefaultParametersCommand: client_rds_1.DescribeEngineDefaultParametersCommand,
98
+ DescribeEventCategoriesCommand: client_rds_1.DescribeEventCategoriesCommand,
99
+ DescribeEventSubscriptionsCommand: client_rds_1.DescribeEventSubscriptionsCommand,
100
+ DescribeEventsCommand: client_rds_1.DescribeEventsCommand,
101
+ DescribeExportTasksCommand: client_rds_1.DescribeExportTasksCommand,
102
+ DescribeGlobalClustersCommand: client_rds_1.DescribeGlobalClustersCommand,
103
+ DescribeIntegrationsCommand: client_rds_1.DescribeIntegrationsCommand,
104
+ DescribeOptionGroupOptionsCommand: client_rds_1.DescribeOptionGroupOptionsCommand,
105
+ DescribeOptionGroupsCommand: client_rds_1.DescribeOptionGroupsCommand,
106
+ DescribeOrderableDBInstanceOptionsCommand: client_rds_1.DescribeOrderableDBInstanceOptionsCommand,
107
+ DescribePendingMaintenanceActionsCommand: client_rds_1.DescribePendingMaintenanceActionsCommand,
108
+ DescribeReservedDBInstancesCommand: client_rds_1.DescribeReservedDBInstancesCommand,
109
+ DescribeReservedDBInstancesOfferingsCommand: client_rds_1.DescribeReservedDBInstancesOfferingsCommand,
110
+ DescribeSourceRegionsCommand: client_rds_1.DescribeSourceRegionsCommand,
111
+ DescribeTenantDatabasesCommand: client_rds_1.DescribeTenantDatabasesCommand,
112
+ DescribeValidDBInstanceModificationsCommand: client_rds_1.DescribeValidDBInstanceModificationsCommand,
113
+ DisableHttpEndpointCommand: client_rds_1.DisableHttpEndpointCommand,
114
+ DownloadDBLogFilePortionCommand: client_rds_1.DownloadDBLogFilePortionCommand,
115
+ EnableHttpEndpointCommand: client_rds_1.EnableHttpEndpointCommand,
116
+ FailoverDBClusterCommand: client_rds_1.FailoverDBClusterCommand,
117
+ FailoverGlobalClusterCommand: client_rds_1.FailoverGlobalClusterCommand,
118
+ ListTagsForResourceCommand: client_rds_1.ListTagsForResourceCommand,
119
+ ModifyActivityStreamCommand: client_rds_1.ModifyActivityStreamCommand,
120
+ ModifyCertificatesCommand: client_rds_1.ModifyCertificatesCommand,
121
+ ModifyCurrentDBClusterCapacityCommand: client_rds_1.ModifyCurrentDBClusterCapacityCommand,
122
+ ModifyCustomDBEngineVersionCommand: client_rds_1.ModifyCustomDBEngineVersionCommand,
123
+ ModifyDBClusterCommand: client_rds_1.ModifyDBClusterCommand,
124
+ ModifyDBClusterEndpointCommand: client_rds_1.ModifyDBClusterEndpointCommand,
125
+ ModifyDBClusterParameterGroupCommand: client_rds_1.ModifyDBClusterParameterGroupCommand,
126
+ ModifyDBClusterSnapshotAttributeCommand: client_rds_1.ModifyDBClusterSnapshotAttributeCommand,
127
+ ModifyDBInstanceCommand: client_rds_1.ModifyDBInstanceCommand,
128
+ ModifyDBParameterGroupCommand: client_rds_1.ModifyDBParameterGroupCommand,
129
+ ModifyDBProxyCommand: client_rds_1.ModifyDBProxyCommand,
130
+ ModifyDBProxyEndpointCommand: client_rds_1.ModifyDBProxyEndpointCommand,
131
+ ModifyDBProxyTargetGroupCommand: client_rds_1.ModifyDBProxyTargetGroupCommand,
132
+ ModifyDBRecommendationCommand: client_rds_1.ModifyDBRecommendationCommand,
133
+ ModifyDBShardGroupCommand: client_rds_1.ModifyDBShardGroupCommand,
134
+ ModifyDBSnapshotCommand: client_rds_1.ModifyDBSnapshotCommand,
135
+ ModifyDBSnapshotAttributeCommand: client_rds_1.ModifyDBSnapshotAttributeCommand,
136
+ ModifyDBSubnetGroupCommand: client_rds_1.ModifyDBSubnetGroupCommand,
137
+ ModifyEventSubscriptionCommand: client_rds_1.ModifyEventSubscriptionCommand,
138
+ ModifyGlobalClusterCommand: client_rds_1.ModifyGlobalClusterCommand,
139
+ ModifyIntegrationCommand: client_rds_1.ModifyIntegrationCommand,
140
+ ModifyOptionGroupCommand: client_rds_1.ModifyOptionGroupCommand,
141
+ ModifyTenantDatabaseCommand: client_rds_1.ModifyTenantDatabaseCommand,
142
+ PromoteReadReplicaCommand: client_rds_1.PromoteReadReplicaCommand,
143
+ PromoteReadReplicaDBClusterCommand: client_rds_1.PromoteReadReplicaDBClusterCommand,
144
+ PurchaseReservedDBInstancesOfferingCommand: client_rds_1.PurchaseReservedDBInstancesOfferingCommand,
145
+ RebootDBClusterCommand: client_rds_1.RebootDBClusterCommand,
146
+ RebootDBInstanceCommand: client_rds_1.RebootDBInstanceCommand,
147
+ RebootDBShardGroupCommand: client_rds_1.RebootDBShardGroupCommand,
148
+ RegisterDBProxyTargetsCommand: client_rds_1.RegisterDBProxyTargetsCommand,
149
+ RemoveFromGlobalClusterCommand: client_rds_1.RemoveFromGlobalClusterCommand,
150
+ RemoveRoleFromDBClusterCommand: client_rds_1.RemoveRoleFromDBClusterCommand,
151
+ RemoveRoleFromDBInstanceCommand: client_rds_1.RemoveRoleFromDBInstanceCommand,
152
+ RemoveSourceIdentifierFromSubscriptionCommand: client_rds_1.RemoveSourceIdentifierFromSubscriptionCommand,
153
+ RemoveTagsFromResourceCommand: client_rds_1.RemoveTagsFromResourceCommand,
154
+ ResetDBClusterParameterGroupCommand: client_rds_1.ResetDBClusterParameterGroupCommand,
155
+ ResetDBParameterGroupCommand: client_rds_1.ResetDBParameterGroupCommand,
156
+ RestoreDBClusterFromS3Command: client_rds_1.RestoreDBClusterFromS3Command,
157
+ RestoreDBClusterFromSnapshotCommand: client_rds_1.RestoreDBClusterFromSnapshotCommand,
158
+ RestoreDBClusterToPointInTimeCommand: client_rds_1.RestoreDBClusterToPointInTimeCommand,
159
+ RestoreDBInstanceFromDBSnapshotCommand: client_rds_1.RestoreDBInstanceFromDBSnapshotCommand,
160
+ RestoreDBInstanceFromS3Command: client_rds_1.RestoreDBInstanceFromS3Command,
161
+ RestoreDBInstanceToPointInTimeCommand: client_rds_1.RestoreDBInstanceToPointInTimeCommand,
162
+ RevokeDBSecurityGroupIngressCommand: client_rds_1.RevokeDBSecurityGroupIngressCommand,
163
+ StartActivityStreamCommand: client_rds_1.StartActivityStreamCommand,
164
+ StartDBClusterCommand: client_rds_1.StartDBClusterCommand,
165
+ StartDBInstanceCommand: client_rds_1.StartDBInstanceCommand,
166
+ StartDBInstanceAutomatedBackupsReplicationCommand: client_rds_1.StartDBInstanceAutomatedBackupsReplicationCommand,
167
+ StartExportTaskCommand: client_rds_1.StartExportTaskCommand,
168
+ StopActivityStreamCommand: client_rds_1.StopActivityStreamCommand,
169
+ StopDBClusterCommand: client_rds_1.StopDBClusterCommand,
170
+ StopDBInstanceCommand: client_rds_1.StopDBInstanceCommand,
171
+ StopDBInstanceAutomatedBackupsReplicationCommand: client_rds_1.StopDBInstanceAutomatedBackupsReplicationCommand,
172
+ SwitchoverBlueGreenDeploymentCommand: client_rds_1.SwitchoverBlueGreenDeploymentCommand,
173
+ SwitchoverGlobalClusterCommand: client_rds_1.SwitchoverGlobalClusterCommand,
174
+ SwitchoverReadReplicaCommand: client_rds_1.SwitchoverReadReplicaCommand,
175
+ };
176
+ /**
177
+ * @since 1.0.0
178
+ * @category models
179
+ */
180
+ class RDSService extends effect_1.Effect.Tag("@effect-aws/client-rds/RDSService")() {
181
+ }
182
+ exports.RDSService = RDSService;
183
+ /**
184
+ * @since 1.0.0
185
+ * @category constructors
186
+ */
187
+ exports.makeRDSService = effect_1.Effect.gen(function* (_) {
188
+ const client = yield* _(RDSClientInstance_1.RDSClientInstance);
189
+ return effect_1.Record.toEntries(commands).reduce((acc, [command]) => {
190
+ const CommandCtor = commands[command];
191
+ const methodImpl = (args, options) => effect_1.Effect.tryPromise({
192
+ try: (abortSignal) => client.send(new CommandCtor(args), {
193
+ ...(options !== null && options !== void 0 ? options : {}),
194
+ abortSignal,
195
+ }),
196
+ catch: (e) => {
197
+ if (e instanceof client_rds_1.RDSServiceException &&
198
+ Errors_1.AllServiceErrors.includes(e.name)) {
199
+ const ServiceException = effect_1.Data.tagged(e.name);
200
+ return ServiceException({
201
+ ...e,
202
+ message: e.message,
203
+ stack: e.stack,
204
+ });
205
+ }
206
+ if (e instanceof Error) {
207
+ return (0, Errors_1.SdkError)({
208
+ ...e,
209
+ name: "SdkError",
210
+ message: e.message,
211
+ stack: e.stack,
212
+ });
213
+ }
214
+ throw e;
215
+ },
216
+ });
217
+ const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
218
+ return { ...acc, [methodName]: methodImpl };
219
+ }, {});
220
+ });
221
+ /**
222
+ * @since 1.0.0
223
+ * @category layers
224
+ */
225
+ exports.BaseRDSServiceLayer = effect_1.Layer.effect(RDSService, exports.makeRDSService);
226
+ /**
227
+ * @since 1.0.0
228
+ * @category layers
229
+ */
230
+ exports.RDSServiceLayer = exports.BaseRDSServiceLayer.pipe(effect_1.Layer.provide(RDSClientInstance_1.RDSClientInstanceLayer));
231
+ /**
232
+ * @since 1.0.0
233
+ * @category layers
234
+ */
235
+ exports.DefaultRDSServiceLayer = exports.RDSServiceLayer.pipe(effect_1.Layer.provide(RDSClientInstanceConfig_1.DefaultRDSClientConfigLayer));
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUkRTU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9SRFNTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsb0RBd2U2QjtBQUM3QixtQ0FBcUQ7QUFDckQscUNBb0prQjtBQUNsQiwyREFBZ0Y7QUFDaEYsdUVBQXdFO0FBVXhFLE1BQU0sUUFBUSxHQUFHO0lBQ2YseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6QiwwQkFBMEIsRUFBMUIsdUNBQTBCO0lBQzFCLHdDQUF3QyxFQUF4QyxxREFBd0M7SUFDeEMsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4QixvQ0FBb0MsRUFBcEMsaURBQW9DO0lBQ3BDLHNDQUFzQyxFQUF0QyxtREFBc0M7SUFDdEMseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6Qix1QkFBdUIsRUFBdkIsb0NBQXVCO0lBQ3ZCLGtDQUFrQyxFQUFsQywrQ0FBa0M7SUFDbEMsNEJBQTRCLEVBQTVCLHlDQUE0QjtJQUM1QiwyQkFBMkIsRUFBM0Isd0NBQTJCO0lBQzNCLHFCQUFxQixFQUFyQixrQ0FBcUI7SUFDckIsc0JBQXNCLEVBQXRCLG1DQUFzQjtJQUN0QixnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLGtDQUFrQyxFQUFsQywrQ0FBa0M7SUFDbEMsc0JBQXNCLEVBQXRCLG1DQUFzQjtJQUN0Qiw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLG9DQUFvQyxFQUFwQyxpREFBb0M7SUFDcEMsOEJBQThCLEVBQTlCLDJDQUE4QjtJQUM5Qix1QkFBdUIsRUFBdkIsb0NBQXVCO0lBQ3ZCLGtDQUFrQyxFQUFsQywrQ0FBa0M7SUFDbEMsNkJBQTZCLEVBQTdCLDBDQUE2QjtJQUM3QixvQkFBb0IsRUFBcEIsaUNBQW9CO0lBQ3BCLDRCQUE0QixFQUE1Qix5Q0FBNEI7SUFDNUIsNEJBQTRCLEVBQTVCLHlDQUE0QjtJQUM1Qix5QkFBeUIsRUFBekIsc0NBQXlCO0lBQ3pCLHVCQUF1QixFQUF2QixvQ0FBdUI7SUFDdkIsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQiw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4Qix3QkFBd0IsRUFBeEIscUNBQXdCO0lBQ3hCLDJCQUEyQixFQUEzQix3Q0FBMkI7SUFDM0IsZ0NBQWdDLEVBQWhDLDZDQUFnQztJQUNoQyxrQ0FBa0MsRUFBbEMsK0NBQWtDO0lBQ2xDLHNCQUFzQixFQUF0QixtQ0FBc0I7SUFDdEIscUNBQXFDLEVBQXJDLGtEQUFxQztJQUNyQyw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLG9DQUFvQyxFQUFwQyxpREFBb0M7SUFDcEMsOEJBQThCLEVBQTlCLDJDQUE4QjtJQUM5Qix1QkFBdUIsRUFBdkIsb0NBQXVCO0lBQ3ZCLHNDQUFzQyxFQUF0QyxtREFBc0M7SUFDdEMsNkJBQTZCLEVBQTdCLDBDQUE2QjtJQUM3QixvQkFBb0IsRUFBcEIsaUNBQW9CO0lBQ3BCLDRCQUE0QixFQUE1Qix5Q0FBNEI7SUFDNUIsNEJBQTRCLEVBQTVCLHlDQUE0QjtJQUM1Qix5QkFBeUIsRUFBekIsc0NBQXlCO0lBQ3pCLHVCQUF1QixFQUF2QixvQ0FBdUI7SUFDdkIsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQiw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4Qix3QkFBd0IsRUFBeEIscUNBQXdCO0lBQ3hCLDJCQUEyQixFQUEzQix3Q0FBMkI7SUFDM0IsK0JBQStCLEVBQS9CLDRDQUErQjtJQUMvQixnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLG1DQUFtQyxFQUFuQyxnREFBbUM7SUFDbkMsMkJBQTJCLEVBQTNCLHdDQUEyQjtJQUMzQix3Q0FBd0MsRUFBeEMscURBQXdDO0lBQ3hDLGtDQUFrQyxFQUFsQywrQ0FBa0M7SUFDbEMsaUNBQWlDLEVBQWpDLDhDQUFpQztJQUNqQyx1Q0FBdUMsRUFBdkMsb0RBQXVDO0lBQ3ZDLGtDQUFrQyxFQUFsQywrQ0FBa0M7SUFDbEMsMENBQTBDLEVBQTFDLHVEQUEwQztJQUMxQyxpQ0FBaUMsRUFBakMsOENBQWlDO0lBQ2pDLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIsK0JBQStCLEVBQS9CLDRDQUErQjtJQUMvQix5Q0FBeUMsRUFBekMsc0RBQXlDO0lBQ3pDLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6QixnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLDJCQUEyQixFQUEzQix3Q0FBMkI7SUFDM0Isd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4QiwrQkFBK0IsRUFBL0IsNENBQStCO0lBQy9CLGtDQUFrQyxFQUFsQywrQ0FBa0M7SUFDbEMsNkJBQTZCLEVBQTdCLDBDQUE2QjtJQUM3QixnQ0FBZ0MsRUFBaEMsNkNBQWdDO0lBQ2hDLCtCQUErQixFQUEvQiw0Q0FBK0I7SUFDL0IsNEJBQTRCLEVBQTVCLHlDQUE0QjtJQUM1QixtQ0FBbUMsRUFBbkMsZ0RBQW1DO0lBQ25DLHdDQUF3QyxFQUF4QyxxREFBd0M7SUFDeEMsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQiw2QkFBNkIsRUFBN0IsMENBQTZCO0lBQzdCLDZDQUE2QyxFQUE3QywwREFBNkM7SUFDN0Msc0NBQXNDLEVBQXRDLG1EQUFzQztJQUN0Qyw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLGlDQUFpQyxFQUFqQyw4Q0FBaUM7SUFDakMscUJBQXFCLEVBQXJCLGtDQUFxQjtJQUNyQiwwQkFBMEIsRUFBMUIsdUNBQTBCO0lBQzFCLDZCQUE2QixFQUE3QiwwQ0FBNkI7SUFDN0IsMkJBQTJCLEVBQTNCLHdDQUEyQjtJQUMzQixpQ0FBaUMsRUFBakMsOENBQWlDO0lBQ2pDLDJCQUEyQixFQUEzQix3Q0FBMkI7SUFDM0IseUNBQXlDLEVBQXpDLHNEQUF5QztJQUN6Qyx3Q0FBd0MsRUFBeEMscURBQXdDO0lBQ3hDLGtDQUFrQyxFQUFsQywrQ0FBa0M7SUFDbEMsMkNBQTJDLEVBQTNDLHdEQUEyQztJQUMzQyw0QkFBNEIsRUFBNUIseUNBQTRCO0lBQzVCLDhCQUE4QixFQUE5QiwyQ0FBOEI7SUFDOUIsMkNBQTJDLEVBQTNDLHdEQUEyQztJQUMzQywwQkFBMEIsRUFBMUIsdUNBQTBCO0lBQzFCLCtCQUErQixFQUEvQiw0Q0FBK0I7SUFDL0IseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6Qix3QkFBd0IsRUFBeEIscUNBQXdCO0lBQ3hCLDRCQUE0QixFQUE1Qix5Q0FBNEI7SUFDNUIsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQiwyQkFBMkIsRUFBM0Isd0NBQTJCO0lBQzNCLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIscUNBQXFDLEVBQXJDLGtEQUFxQztJQUNyQyxrQ0FBa0MsRUFBbEMsK0NBQWtDO0lBQ2xDLHNCQUFzQixFQUF0QixtQ0FBc0I7SUFDdEIsOEJBQThCLEVBQTlCLDJDQUE4QjtJQUM5QixvQ0FBb0MsRUFBcEMsaURBQW9DO0lBQ3BDLHVDQUF1QyxFQUF2QyxvREFBdUM7SUFDdkMsdUJBQXVCLEVBQXZCLG9DQUF1QjtJQUN2Qiw2QkFBNkIsRUFBN0IsMENBQTZCO0lBQzdCLG9CQUFvQixFQUFwQixpQ0FBb0I7SUFDcEIsNEJBQTRCLEVBQTVCLHlDQUE0QjtJQUM1QiwrQkFBK0IsRUFBL0IsNENBQStCO0lBQy9CLDZCQUE2QixFQUE3QiwwQ0FBNkI7SUFDN0IseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6Qix1QkFBdUIsRUFBdkIsb0NBQXVCO0lBQ3ZCLGdDQUFnQyxFQUFoQyw2Q0FBZ0M7SUFDaEMsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQiw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLDBCQUEwQixFQUExQix1Q0FBMEI7SUFDMUIsd0JBQXdCLEVBQXhCLHFDQUF3QjtJQUN4Qix3QkFBd0IsRUFBeEIscUNBQXdCO0lBQ3hCLDJCQUEyQixFQUEzQix3Q0FBMkI7SUFDM0IseUJBQXlCLEVBQXpCLHNDQUF5QjtJQUN6QixrQ0FBa0MsRUFBbEMsK0NBQWtDO0lBQ2xDLDBDQUEwQyxFQUExQyx1REFBMEM7SUFDMUMsc0JBQXNCLEVBQXRCLG1DQUFzQjtJQUN0Qix1QkFBdUIsRUFBdkIsb0NBQXVCO0lBQ3ZCLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIsNkJBQTZCLEVBQTdCLDBDQUE2QjtJQUM3Qiw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLDhCQUE4QixFQUE5QiwyQ0FBOEI7SUFDOUIsK0JBQStCLEVBQS9CLDRDQUErQjtJQUMvQiw2Q0FBNkMsRUFBN0MsMERBQTZDO0lBQzdDLDZCQUE2QixFQUE3QiwwQ0FBNkI7SUFDN0IsbUNBQW1DLEVBQW5DLGdEQUFtQztJQUNuQyw0QkFBNEIsRUFBNUIseUNBQTRCO0lBQzVCLDZCQUE2QixFQUE3QiwwQ0FBNkI7SUFDN0IsbUNBQW1DLEVBQW5DLGdEQUFtQztJQUNuQyxvQ0FBb0MsRUFBcEMsaURBQW9DO0lBQ3BDLHNDQUFzQyxFQUF0QyxtREFBc0M7SUFDdEMsOEJBQThCLEVBQTlCLDJDQUE4QjtJQUM5QixxQ0FBcUMsRUFBckMsa0RBQXFDO0lBQ3JDLG1DQUFtQyxFQUFuQyxnREFBbUM7SUFDbkMsMEJBQTBCLEVBQTFCLHVDQUEwQjtJQUMxQixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLHNCQUFzQixFQUF0QixtQ0FBc0I7SUFDdEIsaURBQWlELEVBQWpELDhEQUFpRDtJQUNqRCxzQkFBc0IsRUFBdEIsbUNBQXNCO0lBQ3RCLHlCQUF5QixFQUF6QixzQ0FBeUI7SUFDekIsb0JBQW9CLEVBQXBCLGlDQUFvQjtJQUNwQixxQkFBcUIsRUFBckIsa0NBQXFCO0lBQ3JCLGdEQUFnRCxFQUFoRCw2REFBZ0Q7SUFDaEQsb0NBQW9DLEVBQXBDLGlEQUFvQztJQUNwQyw4QkFBOEIsRUFBOUIsMkNBQThCO0lBQzlCLDRCQUE0QixFQUE1Qix5Q0FBNEI7Q0FDN0IsQ0FBQztBQXV5RUY7OztHQUdHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsZUFBTSxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxFQUc1RTtDQUFHO0FBSE4sZ0NBR007QUFFTjs7O0dBR0c7QUFDVSxRQUFBLGNBQWMsR0FBRyxlQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDbkQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFDQUFpQixDQUFDLENBQUM7SUFFM0MsT0FBTyxlQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7UUFDMUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBUSxDQUFDO1FBQzdDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBUyxFQUFFLE9BQTRCLEVBQUUsRUFBRSxDQUM3RCxlQUFNLENBQUMsVUFBVSxDQUFDO1lBQ2hCLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLEdBQUcsQ0FBQyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxFQUFFLENBQUM7Z0JBQ2xCLFdBQVc7YUFDWixDQUFDO1lBQ0osS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsSUFDRSxDQUFDLFlBQVksZ0NBQW1CO29CQUNoQyx5QkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUNqQyxDQUFDO29CQUNELE1BQU0sZ0JBQWdCLEdBQUcsYUFBSSxDQUFDLE1BQU0sQ0FFbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVWLE9BQU8sZ0JBQWdCLENBQUM7d0JBQ3RCLEdBQUcsQ0FBQzt3QkFDSixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87d0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztxQkFDZixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsT0FBTyxJQUFBLGlCQUFRLEVBQUM7d0JBQ2QsR0FBRyxDQUFDO3dCQUNKLElBQUksRUFBRSxVQUFVO3dCQUNoQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87d0JBQ2xCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztxQkFDZixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxNQUFNLENBQUMsQ0FBQztZQUNWLENBQUM7U0FDRixDQUFDLENBQUM7UUFDTCxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUN0RSxVQUFVLEVBQ1YsRUFBRSxDQUNILENBQUM7UUFDRixPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QyxDQUFDLEVBQUUsRUFBRSxDQUFnQixDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxjQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxzQkFBYyxDQUFDLENBQUM7QUFFNUU7OztHQUdHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsMkJBQW1CLENBQUMsSUFBSSxDQUNyRCxjQUFLLENBQUMsT0FBTyxDQUFDLDBDQUFzQixDQUFDLENBQ3RDLENBQUM7QUFFRjs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLHVCQUFlLENBQUMsSUFBSSxDQUN4RCxjQUFLLENBQUMsT0FBTyxDQUFDLHFEQUEyQixDQUFDLENBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQge1xuICBSRFNTZXJ2aWNlRXhjZXB0aW9uLFxuICBBZGRSb2xlVG9EQkNsdXN0ZXJDb21tYW5kLFxuICB0eXBlIEFkZFJvbGVUb0RCQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGRSb2xlVG9EQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBBZGRSb2xlVG9EQkluc3RhbmNlQ29tbWFuZCxcbiAgdHlwZSBBZGRSb2xlVG9EQkluc3RhbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIEFkZFJvbGVUb0RCSW5zdGFuY2VDb21tYW5kT3V0cHV0LFxuICBBZGRTb3VyY2VJZGVudGlmaWVyVG9TdWJzY3JpcHRpb25Db21tYW5kLFxuICB0eXBlIEFkZFNvdXJjZUlkZW50aWZpZXJUb1N1YnNjcmlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBBZGRTb3VyY2VJZGVudGlmaWVyVG9TdWJzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICBBZGRUYWdzVG9SZXNvdXJjZUNvbW1hbmQsXG4gIHR5cGUgQWRkVGFnc1RvUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQWRkVGFnc1RvUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBBcHBseVBlbmRpbmdNYWludGVuYW5jZUFjdGlvbkNvbW1hbmQsXG4gIHR5cGUgQXBwbHlQZW5kaW5nTWFpbnRlbmFuY2VBY3Rpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQXBwbHlQZW5kaW5nTWFpbnRlbmFuY2VBY3Rpb25Db21tYW5kT3V0cHV0LFxuICBBdXRob3JpemVEQlNlY3VyaXR5R3JvdXBJbmdyZXNzQ29tbWFuZCxcbiAgdHlwZSBBdXRob3JpemVEQlNlY3VyaXR5R3JvdXBJbmdyZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIEF1dGhvcml6ZURCU2VjdXJpdHlHcm91cEluZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICBCYWNrdHJhY2tEQkNsdXN0ZXJDb21tYW5kLFxuICB0eXBlIEJhY2t0cmFja0RCQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBCYWNrdHJhY2tEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBDYW5jZWxFeHBvcnRUYXNrQ29tbWFuZCxcbiAgdHlwZSBDYW5jZWxFeHBvcnRUYXNrQ29tbWFuZElucHV0LFxuICB0eXBlIENhbmNlbEV4cG9ydFRhc2tDb21tYW5kT3V0cHV0LFxuICBDb3B5REJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kLFxuICB0eXBlIENvcHlEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb3B5REJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICBDb3B5REJDbHVzdGVyU25hcHNob3RDb21tYW5kLFxuICB0eXBlIENvcHlEQkNsdXN0ZXJTbmFwc2hvdENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb3B5REJDbHVzdGVyU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICBDb3B5REJQYXJhbWV0ZXJHcm91cENvbW1hbmQsXG4gIHR5cGUgQ29weURCUGFyYW1ldGVyR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ29weURCUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICBDb3B5REJTbmFwc2hvdENvbW1hbmQsXG4gIHR5cGUgQ29weURCU25hcHNob3RDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ29weURCU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICBDb3B5T3B0aW9uR3JvdXBDb21tYW5kLFxuICB0eXBlIENvcHlPcHRpb25Hcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDb3B5T3B0aW9uR3JvdXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVCbHVlR3JlZW5EZXBsb3ltZW50Q29tbWFuZCxcbiAgdHlwZSBDcmVhdGVCbHVlR3JlZW5EZXBsb3ltZW50Q29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUJsdWVHcmVlbkRlcGxveW1lbnRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVDdXN0b21EQkVuZ2luZVZlcnNpb25Db21tYW5kLFxuICB0eXBlIENyZWF0ZUN1c3RvbURCRW5naW5lVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVDdXN0b21EQkVuZ2luZVZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQkNsdXN0ZXJDb21tYW5kLFxuICB0eXBlIENyZWF0ZURCQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQkNsdXN0ZXJFbmRwb2ludENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlREJDbHVzdGVyRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlREJDbHVzdGVyRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQkNsdXN0ZXJTbmFwc2hvdENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlREJDbHVzdGVyU25hcHNob3RDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlREJDbHVzdGVyU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQkluc3RhbmNlQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVEQkluc3RhbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZURCSW5zdGFuY2VDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQkluc3RhbmNlUmVhZFJlcGxpY2FDb21tYW5kLFxuICB0eXBlIENyZWF0ZURCSW5zdGFuY2VSZWFkUmVwbGljYUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVEQkluc3RhbmNlUmVhZFJlcGxpY2FDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQlBhcmFtZXRlckdyb3VwQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVEQlBhcmFtZXRlckdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZURCUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQlByb3h5Q29tbWFuZCxcbiAgdHlwZSBDcmVhdGVEQlByb3h5Q29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZURCUHJveHlDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQlByb3h5RW5kcG9pbnRDb21tYW5kLFxuICB0eXBlIENyZWF0ZURCUHJveHlFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVEQlByb3h5RW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQlNlY3VyaXR5R3JvdXBDb21tYW5kLFxuICB0eXBlIENyZWF0ZURCU2VjdXJpdHlHcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVEQlNlY3VyaXR5R3JvdXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQlNoYXJkR3JvdXBDb21tYW5kLFxuICB0eXBlIENyZWF0ZURCU2hhcmRHcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBDcmVhdGVEQlNoYXJkR3JvdXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQlNuYXBzaG90Q29tbWFuZCxcbiAgdHlwZSBDcmVhdGVEQlNuYXBzaG90Q29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZURCU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVEQlN1Ym5ldEdyb3VwQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVEQlN1Ym5ldEdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZURCU3VibmV0R3JvdXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVFdmVudFN1YnNjcmlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlRXZlbnRTdWJzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlRXZlbnRTdWJzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVHbG9iYWxDbHVzdGVyQ29tbWFuZCxcbiAgdHlwZSBDcmVhdGVHbG9iYWxDbHVzdGVyQ29tbWFuZElucHV0LFxuICB0eXBlIENyZWF0ZUdsb2JhbENsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVJbnRlZ3JhdGlvbkNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlSW50ZWdyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlSW50ZWdyYXRpb25Db21tYW5kT3V0cHV0LFxuICBDcmVhdGVPcHRpb25Hcm91cENvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlT3B0aW9uR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlT3B0aW9uR3JvdXBDb21tYW5kT3V0cHV0LFxuICBDcmVhdGVUZW5hbnREYXRhYmFzZUNvbW1hbmQsXG4gIHR5cGUgQ3JlYXRlVGVuYW50RGF0YWJhc2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgQ3JlYXRlVGVuYW50RGF0YWJhc2VDb21tYW5kT3V0cHV0LFxuICBEZWxldGVCbHVlR3JlZW5EZXBsb3ltZW50Q29tbWFuZCxcbiAgdHlwZSBEZWxldGVCbHVlR3JlZW5EZXBsb3ltZW50Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUJsdWVHcmVlbkRlcGxveW1lbnRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVDdXN0b21EQkVuZ2luZVZlcnNpb25Db21tYW5kLFxuICB0eXBlIERlbGV0ZUN1c3RvbURCRW5naW5lVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVDdXN0b21EQkVuZ2luZVZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVEQkNsdXN0ZXJDb21tYW5kLFxuICB0eXBlIERlbGV0ZURCQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQkNsdXN0ZXJBdXRvbWF0ZWRCYWNrdXBDb21tYW5kLFxuICB0eXBlIERlbGV0ZURCQ2x1c3RlckF1dG9tYXRlZEJhY2t1cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVEQkNsdXN0ZXJBdXRvbWF0ZWRCYWNrdXBDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQkNsdXN0ZXJFbmRwb2ludENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlREJDbHVzdGVyRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlREJDbHVzdGVyRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQkNsdXN0ZXJTbmFwc2hvdENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlREJDbHVzdGVyU25hcHNob3RDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlREJDbHVzdGVyU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQkluc3RhbmNlQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVEQkluc3RhbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZURCSW5zdGFuY2VDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQkluc3RhbmNlQXV0b21hdGVkQmFja3VwQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVEQkluc3RhbmNlQXV0b21hdGVkQmFja3VwQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZURCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQlBhcmFtZXRlckdyb3VwQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVEQlBhcmFtZXRlckdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZURCUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQlByb3h5Q29tbWFuZCxcbiAgdHlwZSBEZWxldGVEQlByb3h5Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZURCUHJveHlDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQlByb3h5RW5kcG9pbnRDb21tYW5kLFxuICB0eXBlIERlbGV0ZURCUHJveHlFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVEQlByb3h5RW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQlNlY3VyaXR5R3JvdXBDb21tYW5kLFxuICB0eXBlIERlbGV0ZURCU2VjdXJpdHlHcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVEQlNlY3VyaXR5R3JvdXBDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQlNoYXJkR3JvdXBDb21tYW5kLFxuICB0eXBlIERlbGV0ZURCU2hhcmRHcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZWxldGVEQlNoYXJkR3JvdXBDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQlNuYXBzaG90Q29tbWFuZCxcbiAgdHlwZSBEZWxldGVEQlNuYXBzaG90Q29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZURCU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICBEZWxldGVEQlN1Ym5ldEdyb3VwQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVEQlN1Ym5ldEdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZURCU3VibmV0R3JvdXBDb21tYW5kT3V0cHV0LFxuICBEZWxldGVFdmVudFN1YnNjcmlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlRXZlbnRTdWJzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlRXZlbnRTdWJzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVHbG9iYWxDbHVzdGVyQ29tbWFuZCxcbiAgdHlwZSBEZWxldGVHbG9iYWxDbHVzdGVyQ29tbWFuZElucHV0LFxuICB0eXBlIERlbGV0ZUdsb2JhbENsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBEZWxldGVJbnRlZ3JhdGlvbkNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlSW50ZWdyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlSW50ZWdyYXRpb25Db21tYW5kT3V0cHV0LFxuICBEZWxldGVPcHRpb25Hcm91cENvbW1hbmQsXG4gIHR5cGUgRGVsZXRlT3B0aW9uR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlT3B0aW9uR3JvdXBDb21tYW5kT3V0cHV0LFxuICBEZWxldGVUZW5hbnREYXRhYmFzZUNvbW1hbmQsXG4gIHR5cGUgRGVsZXRlVGVuYW50RGF0YWJhc2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVsZXRlVGVuYW50RGF0YWJhc2VDb21tYW5kT3V0cHV0LFxuICBEZXJlZ2lzdGVyREJQcm94eVRhcmdldHNDb21tYW5kLFxuICB0eXBlIERlcmVnaXN0ZXJEQlByb3h5VGFyZ2V0c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXJlZ2lzdGVyREJQcm94eVRhcmdldHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUFjY291bnRBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUFjY291bnRBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlQWNjb3VudEF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUJsdWVHcmVlbkRlcGxveW1lbnRzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUJsdWVHcmVlbkRlcGxveW1lbnRzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlQmx1ZUdyZWVuRGVwbG95bWVudHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUNlcnRpZmljYXRlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVDZXJ0aWZpY2F0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVDZXJ0aWZpY2F0ZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCQ2x1c3RlckF1dG9tYXRlZEJhY2t1cHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJDbHVzdGVyQXV0b21hdGVkQmFja3Vwc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCQ2x1c3RlckF1dG9tYXRlZEJhY2t1cHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCQ2x1c3RlckJhY2t0cmFja3NDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJDbHVzdGVyQmFja3RyYWNrc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCQ2x1c3RlckJhY2t0cmFja3NDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCQ2x1c3RlckVuZHBvaW50c0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEQkNsdXN0ZXJFbmRwb2ludHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEQkNsdXN0ZXJFbmRwb2ludHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCQ2x1c3RlclBhcmFtZXRlckdyb3Vwc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCQ2x1c3RlclBhcmFtZXRlcnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJDbHVzdGVyUGFyYW1ldGVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCQ2x1c3RlclBhcmFtZXRlcnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCQ2x1c3RlclNuYXBzaG90QXR0cmlidXRlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEQkNsdXN0ZXJTbmFwc2hvdEF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEQkNsdXN0ZXJTbmFwc2hvdEF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCQ2x1c3RlclNuYXBzaG90c0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEQkNsdXN0ZXJTbmFwc2hvdHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEQkNsdXN0ZXJTbmFwc2hvdHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCQ2x1c3RlcnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJDbHVzdGVyc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCQ2x1c3RlcnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCRW5naW5lVmVyc2lvbnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJFbmdpbmVWZXJzaW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCRW5naW5lVmVyc2lvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlREJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCSW5zdGFuY2VzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURCSW5zdGFuY2VzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlREJJbnN0YW5jZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCTG9nRmlsZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJMb2dGaWxlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCTG9nRmlsZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCUGFyYW1ldGVyR3JvdXBzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURCUGFyYW1ldGVyR3JvdXBzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlREJQYXJhbWV0ZXJHcm91cHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCUGFyYW1ldGVyc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEQlBhcmFtZXRlcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEQlBhcmFtZXRlcnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCUHJveGllc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVEQlByb3hpZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVEQlByb3hpZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCUHJveHlFbmRwb2ludHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJQcm94eUVuZHBvaW50c0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCUHJveHlFbmRwb2ludHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCUHJveHlUYXJnZXRHcm91cHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJQcm94eVRhcmdldEdyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCUHJveHlUYXJnZXRHcm91cHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCUHJveHlUYXJnZXRzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURCUHJveHlUYXJnZXRzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlREJQcm94eVRhcmdldHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCUmVjb21tZW5kYXRpb25zQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURCUmVjb21tZW5kYXRpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlREJSZWNvbW1lbmRhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCU2VjdXJpdHlHcm91cHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJTZWN1cml0eUdyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCU2VjdXJpdHlHcm91cHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCU2hhcmRHcm91cHNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJTaGFyZEdyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCU2hhcmRHcm91cHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCU25hcHNob3RBdHRyaWJ1dGVzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURCU25hcHNob3RBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlREJTbmFwc2hvdEF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCU25hcHNob3RUZW5hbnREYXRhYmFzZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlREJTbmFwc2hvdFRlbmFudERhdGFiYXNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZURCU25hcHNob3RUZW5hbnREYXRhYmFzZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCU25hcHNob3RzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURCU25hcHNob3RzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlREJTbmFwc2hvdHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZURCU3VibmV0R3JvdXBzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZURCU3VibmV0R3JvdXBzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlREJTdWJuZXRHcm91cHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUVuZ2luZURlZmF1bHRDbHVzdGVyUGFyYW1ldGVyc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVFbmdpbmVEZWZhdWx0Q2x1c3RlclBhcmFtZXRlcnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVFbmdpbmVEZWZhdWx0Q2x1c3RlclBhcmFtZXRlcnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUVuZ2luZURlZmF1bHRQYXJhbWV0ZXJzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUVuZ2luZURlZmF1bHRQYXJhbWV0ZXJzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRW5naW5lRGVmYXVsdFBhcmFtZXRlcnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUV2ZW50Q2F0ZWdvcmllc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVFdmVudENhdGVnb3JpZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVFdmVudENhdGVnb3JpZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUV2ZW50U3Vic2NyaXB0aW9uc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVFdmVudFN1YnNjcmlwdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVFdmVudFN1YnNjcmlwdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUV2ZW50c0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVFdmVudHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVFdmVudHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUV4cG9ydFRhc2tzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUV4cG9ydFRhc2tzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlRXhwb3J0VGFza3NDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUdsb2JhbENsdXN0ZXJzQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZUdsb2JhbENsdXN0ZXJzQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlR2xvYmFsQ2x1c3RlcnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZUludGVncmF0aW9uc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVJbnRlZ3JhdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVJbnRlZ3JhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZU9wdGlvbkdyb3VwT3B0aW9uc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVPcHRpb25Hcm91cE9wdGlvbnNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVPcHRpb25Hcm91cE9wdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZU9wdGlvbkdyb3Vwc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVPcHRpb25Hcm91cHNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVPcHRpb25Hcm91cHNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZU9yZGVyYWJsZURCSW5zdGFuY2VPcHRpb25zQ29tbWFuZCxcbiAgdHlwZSBEZXNjcmliZU9yZGVyYWJsZURCSW5zdGFuY2VPcHRpb25zQ29tbWFuZElucHV0LFxuICB0eXBlIERlc2NyaWJlT3JkZXJhYmxlREJJbnN0YW5jZU9wdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVBlbmRpbmdNYWludGVuYW5jZUFjdGlvbnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUGVuZGluZ01haW50ZW5hbmNlQWN0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVBlbmRpbmdNYWludGVuYW5jZUFjdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJlc2VydmVkREJJbnN0YW5jZXNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUmVzZXJ2ZWREQkluc3RhbmNlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlc2VydmVkREJJbnN0YW5jZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVJlc2VydmVkREJJbnN0YW5jZXNPZmZlcmluZ3NDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlUmVzZXJ2ZWREQkluc3RhbmNlc09mZmVyaW5nc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVJlc2VydmVkREJJbnN0YW5jZXNPZmZlcmluZ3NDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVNvdXJjZVJlZ2lvbnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlU291cmNlUmVnaW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVNvdXJjZVJlZ2lvbnNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVRlbmFudERhdGFiYXNlc0NvbW1hbmQsXG4gIHR5cGUgRGVzY3JpYmVUZW5hbnREYXRhYmFzZXNDb21tYW5kSW5wdXQsXG4gIHR5cGUgRGVzY3JpYmVUZW5hbnREYXRhYmFzZXNDb21tYW5kT3V0cHV0LFxuICBEZXNjcmliZVZhbGlkREJJbnN0YW5jZU1vZGlmaWNhdGlvbnNDb21tYW5kLFxuICB0eXBlIERlc2NyaWJlVmFsaWREQkluc3RhbmNlTW9kaWZpY2F0aW9uc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBEZXNjcmliZVZhbGlkREJJbnN0YW5jZU1vZGlmaWNhdGlvbnNDb21tYW5kT3V0cHV0LFxuICBEaXNhYmxlSHR0cEVuZHBvaW50Q29tbWFuZCxcbiAgdHlwZSBEaXNhYmxlSHR0cEVuZHBvaW50Q29tbWFuZElucHV0LFxuICB0eXBlIERpc2FibGVIdHRwRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBEb3dubG9hZERCTG9nRmlsZVBvcnRpb25Db21tYW5kLFxuICB0eXBlIERvd25sb2FkREJMb2dGaWxlUG9ydGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBEb3dubG9hZERCTG9nRmlsZVBvcnRpb25Db21tYW5kT3V0cHV0LFxuICBFbmFibGVIdHRwRW5kcG9pbnRDb21tYW5kLFxuICB0eXBlIEVuYWJsZUh0dHBFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgdHlwZSBFbmFibGVIdHRwRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBGYWlsb3ZlckRCQ2x1c3RlckNvbW1hbmQsXG4gIHR5cGUgRmFpbG92ZXJEQkNsdXN0ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgRmFpbG92ZXJEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBGYWlsb3Zlckdsb2JhbENsdXN0ZXJDb21tYW5kLFxuICB0eXBlIEZhaWxvdmVyR2xvYmFsQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBGYWlsb3Zlckdsb2JhbENsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlBY3Rpdml0eVN0cmVhbUNvbW1hbmQsXG4gIHR5cGUgTW9kaWZ5QWN0aXZpdHlTdHJlYW1Db21tYW5kSW5wdXQsXG4gIHR5cGUgTW9kaWZ5QWN0aXZpdHlTdHJlYW1Db21tYW5kT3V0cHV0LFxuICBNb2RpZnlDZXJ0aWZpY2F0ZXNDb21tYW5kLFxuICB0eXBlIE1vZGlmeUNlcnRpZmljYXRlc0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBNb2RpZnlDZXJ0aWZpY2F0ZXNDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlDdXJyZW50REJDbHVzdGVyQ2FwYWNpdHlDb21tYW5kLFxuICB0eXBlIE1vZGlmeUN1cnJlbnREQkNsdXN0ZXJDYXBhY2l0eUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBNb2RpZnlDdXJyZW50REJDbHVzdGVyQ2FwYWNpdHlDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlDdXN0b21EQkVuZ2luZVZlcnNpb25Db21tYW5kLFxuICB0eXBlIE1vZGlmeUN1c3RvbURCRW5naW5lVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBNb2RpZnlDdXN0b21EQkVuZ2luZVZlcnNpb25Db21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQkNsdXN0ZXJDb21tYW5kLFxuICB0eXBlIE1vZGlmeURCQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBNb2RpZnlEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQkNsdXN0ZXJFbmRwb2ludENvbW1hbmQsXG4gIHR5cGUgTW9kaWZ5REJDbHVzdGVyRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgTW9kaWZ5REJDbHVzdGVyRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmQsXG4gIHR5cGUgTW9kaWZ5REJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgTW9kaWZ5REJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQkNsdXN0ZXJTbmFwc2hvdEF0dHJpYnV0ZUNvbW1hbmQsXG4gIHR5cGUgTW9kaWZ5REJDbHVzdGVyU25hcHNob3RBdHRyaWJ1dGVDb21tYW5kSW5wdXQsXG4gIHR5cGUgTW9kaWZ5REJDbHVzdGVyU25hcHNob3RBdHRyaWJ1dGVDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQkluc3RhbmNlQ29tbWFuZCxcbiAgdHlwZSBNb2RpZnlEQkluc3RhbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIE1vZGlmeURCSW5zdGFuY2VDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQlBhcmFtZXRlckdyb3VwQ29tbWFuZCxcbiAgdHlwZSBNb2RpZnlEQlBhcmFtZXRlckdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIE1vZGlmeURCUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQlByb3h5Q29tbWFuZCxcbiAgdHlwZSBNb2RpZnlEQlByb3h5Q29tbWFuZElucHV0LFxuICB0eXBlIE1vZGlmeURCUHJveHlDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQlByb3h5RW5kcG9pbnRDb21tYW5kLFxuICB0eXBlIE1vZGlmeURCUHJveHlFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgdHlwZSBNb2RpZnlEQlByb3h5RW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQlByb3h5VGFyZ2V0R3JvdXBDb21tYW5kLFxuICB0eXBlIE1vZGlmeURCUHJveHlUYXJnZXRHcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBNb2RpZnlEQlByb3h5VGFyZ2V0R3JvdXBDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQlJlY29tbWVuZGF0aW9uQ29tbWFuZCxcbiAgdHlwZSBNb2RpZnlEQlJlY29tbWVuZGF0aW9uQ29tbWFuZElucHV0LFxuICB0eXBlIE1vZGlmeURCUmVjb21tZW5kYXRpb25Db21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQlNoYXJkR3JvdXBDb21tYW5kLFxuICB0eXBlIE1vZGlmeURCU2hhcmRHcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBNb2RpZnlEQlNoYXJkR3JvdXBDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQlNuYXBzaG90Q29tbWFuZCxcbiAgdHlwZSBNb2RpZnlEQlNuYXBzaG90Q29tbWFuZElucHV0LFxuICB0eXBlIE1vZGlmeURCU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQlNuYXBzaG90QXR0cmlidXRlQ29tbWFuZCxcbiAgdHlwZSBNb2RpZnlEQlNuYXBzaG90QXR0cmlidXRlQ29tbWFuZElucHV0LFxuICB0eXBlIE1vZGlmeURCU25hcHNob3RBdHRyaWJ1dGVDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlEQlN1Ym5ldEdyb3VwQ29tbWFuZCxcbiAgdHlwZSBNb2RpZnlEQlN1Ym5ldEdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIE1vZGlmeURCU3VibmV0R3JvdXBDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlFdmVudFN1YnNjcmlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgTW9kaWZ5RXZlbnRTdWJzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgTW9kaWZ5RXZlbnRTdWJzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICBNb2RpZnlHbG9iYWxDbHVzdGVyQ29tbWFuZCxcbiAgdHlwZSBNb2RpZnlHbG9iYWxDbHVzdGVyQ29tbWFuZElucHV0LFxuICB0eXBlIE1vZGlmeUdsb2JhbENsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlJbnRlZ3JhdGlvbkNvbW1hbmQsXG4gIHR5cGUgTW9kaWZ5SW50ZWdyYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgTW9kaWZ5SW50ZWdyYXRpb25Db21tYW5kT3V0cHV0LFxuICBNb2RpZnlPcHRpb25Hcm91cENvbW1hbmQsXG4gIHR5cGUgTW9kaWZ5T3B0aW9uR3JvdXBDb21tYW5kSW5wdXQsXG4gIHR5cGUgTW9kaWZ5T3B0aW9uR3JvdXBDb21tYW5kT3V0cHV0LFxuICBNb2RpZnlUZW5hbnREYXRhYmFzZUNvbW1hbmQsXG4gIHR5cGUgTW9kaWZ5VGVuYW50RGF0YWJhc2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgTW9kaWZ5VGVuYW50RGF0YWJhc2VDb21tYW5kT3V0cHV0LFxuICBQcm9tb3RlUmVhZFJlcGxpY2FDb21tYW5kLFxuICB0eXBlIFByb21vdGVSZWFkUmVwbGljYUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQcm9tb3RlUmVhZFJlcGxpY2FDb21tYW5kT3V0cHV0LFxuICBQcm9tb3RlUmVhZFJlcGxpY2FEQkNsdXN0ZXJDb21tYW5kLFxuICB0eXBlIFByb21vdGVSZWFkUmVwbGljYURCQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBQcm9tb3RlUmVhZFJlcGxpY2FEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBQdXJjaGFzZVJlc2VydmVkREJJbnN0YW5jZXNPZmZlcmluZ0NvbW1hbmQsXG4gIHR5cGUgUHVyY2hhc2VSZXNlcnZlZERCSW5zdGFuY2VzT2ZmZXJpbmdDb21tYW5kSW5wdXQsXG4gIHR5cGUgUHVyY2hhc2VSZXNlcnZlZERCSW5zdGFuY2VzT2ZmZXJpbmdDb21tYW5kT3V0cHV0LFxuICBSZWJvb3REQkNsdXN0ZXJDb21tYW5kLFxuICB0eXBlIFJlYm9vdERCQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZWJvb3REQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBSZWJvb3REQkluc3RhbmNlQ29tbWFuZCxcbiAgdHlwZSBSZWJvb3REQkluc3RhbmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFJlYm9vdERCSW5zdGFuY2VDb21tYW5kT3V0cHV0LFxuICBSZWJvb3REQlNoYXJkR3JvdXBDb21tYW5kLFxuICB0eXBlIFJlYm9vdERCU2hhcmRHcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZWJvb3REQlNoYXJkR3JvdXBDb21tYW5kT3V0cHV0LFxuICBSZWdpc3RlckRCUHJveHlUYXJnZXRzQ29tbWFuZCxcbiAgdHlwZSBSZWdpc3RlckRCUHJveHlUYXJnZXRzQ29tbWFuZElucHV0LFxuICB0eXBlIFJlZ2lzdGVyREJQcm94eVRhcmdldHNDb21tYW5kT3V0cHV0LFxuICBSZW1vdmVGcm9tR2xvYmFsQ2x1c3RlckNvbW1hbmQsXG4gIHR5cGUgUmVtb3ZlRnJvbUdsb2JhbENsdXN0ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmVtb3ZlRnJvbUdsb2JhbENsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBSZW1vdmVSb2xlRnJvbURCQ2x1c3RlckNvbW1hbmQsXG4gIHR5cGUgUmVtb3ZlUm9sZUZyb21EQkNsdXN0ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmVtb3ZlUm9sZUZyb21EQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBSZW1vdmVSb2xlRnJvbURCSW5zdGFuY2VDb21tYW5kLFxuICB0eXBlIFJlbW92ZVJvbGVGcm9tREJJbnN0YW5jZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZW1vdmVSb2xlRnJvbURCSW5zdGFuY2VDb21tYW5kT3V0cHV0LFxuICBSZW1vdmVTb3VyY2VJZGVudGlmaWVyRnJvbVN1YnNjcmlwdGlvbkNvbW1hbmQsXG4gIHR5cGUgUmVtb3ZlU291cmNlSWRlbnRpZmllckZyb21TdWJzY3JpcHRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgUmVtb3ZlU291cmNlSWRlbnRpZmllckZyb21TdWJzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICBSZW1vdmVUYWdzRnJvbVJlc291cmNlQ29tbWFuZCxcbiAgdHlwZSBSZW1vdmVUYWdzRnJvbVJlc291cmNlQ29tbWFuZElucHV0LFxuICB0eXBlIFJlbW92ZVRhZ3NGcm9tUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICBSZXNldERCQ2x1c3RlclBhcmFtZXRlckdyb3VwQ29tbWFuZCxcbiAgdHlwZSBSZXNldERCQ2x1c3RlclBhcmFtZXRlckdyb3VwQ29tbWFuZElucHV0LFxuICB0eXBlIFJlc2V0REJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICBSZXNldERCUGFyYW1ldGVyR3JvdXBDb21tYW5kLFxuICB0eXBlIFJlc2V0REJQYXJhbWV0ZXJHcm91cENvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXNldERCUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICBSZXN0b3JlREJDbHVzdGVyRnJvbVMzQ29tbWFuZCxcbiAgdHlwZSBSZXN0b3JlREJDbHVzdGVyRnJvbVMzQ29tbWFuZElucHV0LFxuICB0eXBlIFJlc3RvcmVEQkNsdXN0ZXJGcm9tUzNDb21tYW5kT3V0cHV0LFxuICBSZXN0b3JlREJDbHVzdGVyRnJvbVNuYXBzaG90Q29tbWFuZCxcbiAgdHlwZSBSZXN0b3JlREJDbHVzdGVyRnJvbVNuYXBzaG90Q29tbWFuZElucHV0LFxuICB0eXBlIFJlc3RvcmVEQkNsdXN0ZXJGcm9tU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICBSZXN0b3JlREJDbHVzdGVyVG9Qb2ludEluVGltZUNvbW1hbmQsXG4gIHR5cGUgUmVzdG9yZURCQ2x1c3RlclRvUG9pbnRJblRpbWVDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmVzdG9yZURCQ2x1c3RlclRvUG9pbnRJblRpbWVDb21tYW5kT3V0cHV0LFxuICBSZXN0b3JlREJJbnN0YW5jZUZyb21EQlNuYXBzaG90Q29tbWFuZCxcbiAgdHlwZSBSZXN0b3JlREJJbnN0YW5jZUZyb21EQlNuYXBzaG90Q29tbWFuZElucHV0LFxuICB0eXBlIFJlc3RvcmVEQkluc3RhbmNlRnJvbURCU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICBSZXN0b3JlREJJbnN0YW5jZUZyb21TM0NvbW1hbmQsXG4gIHR5cGUgUmVzdG9yZURCSW5zdGFuY2VGcm9tUzNDb21tYW5kSW5wdXQsXG4gIHR5cGUgUmVzdG9yZURCSW5zdGFuY2VGcm9tUzNDb21tYW5kT3V0cHV0LFxuICBSZXN0b3JlREJJbnN0YW5jZVRvUG9pbnRJblRpbWVDb21tYW5kLFxuICB0eXBlIFJlc3RvcmVEQkluc3RhbmNlVG9Qb2ludEluVGltZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBSZXN0b3JlREJJbnN0YW5jZVRvUG9pbnRJblRpbWVDb21tYW5kT3V0cHV0LFxuICBSZXZva2VEQlNlY3VyaXR5R3JvdXBJbmdyZXNzQ29tbWFuZCxcbiAgdHlwZSBSZXZva2VEQlNlY3VyaXR5R3JvdXBJbmdyZXNzQ29tbWFuZElucHV0LFxuICB0eXBlIFJldm9rZURCU2VjdXJpdHlHcm91cEluZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICBTdGFydEFjdGl2aXR5U3RyZWFtQ29tbWFuZCxcbiAgdHlwZSBTdGFydEFjdGl2aXR5U3RyZWFtQ29tbWFuZElucHV0LFxuICB0eXBlIFN0YXJ0QWN0aXZpdHlTdHJlYW1Db21tYW5kT3V0cHV0LFxuICBTdGFydERCQ2x1c3RlckNvbW1hbmQsXG4gIHR5cGUgU3RhcnREQkNsdXN0ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3RhcnREQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBTdGFydERCSW5zdGFuY2VDb21tYW5kLFxuICB0eXBlIFN0YXJ0REJJbnN0YW5jZUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTdGFydERCSW5zdGFuY2VDb21tYW5kT3V0cHV0LFxuICBTdGFydERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBzUmVwbGljYXRpb25Db21tYW5kLFxuICB0eXBlIFN0YXJ0REJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cHNSZXBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTdGFydERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBzUmVwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBTdGFydEV4cG9ydFRhc2tDb21tYW5kLFxuICB0eXBlIFN0YXJ0RXhwb3J0VGFza0NvbW1hbmRJbnB1dCxcbiAgdHlwZSBTdGFydEV4cG9ydFRhc2tDb21tYW5kT3V0cHV0LFxuICBTdG9wQWN0aXZpdHlTdHJlYW1Db21tYW5kLFxuICB0eXBlIFN0b3BBY3Rpdml0eVN0cmVhbUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTdG9wQWN0aXZpdHlTdHJlYW1Db21tYW5kT3V0cHV0LFxuICBTdG9wREJDbHVzdGVyQ29tbWFuZCxcbiAgdHlwZSBTdG9wREJDbHVzdGVyQ29tbWFuZElucHV0LFxuICB0eXBlIFN0b3BEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBTdG9wREJJbnN0YW5jZUNvbW1hbmQsXG4gIHR5cGUgU3RvcERCSW5zdGFuY2VDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3RvcERCSW5zdGFuY2VDb21tYW5kT3V0cHV0LFxuICBTdG9wREJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cHNSZXBsaWNhdGlvbkNvbW1hbmQsXG4gIHR5cGUgU3RvcERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBzUmVwbGljYXRpb25Db21tYW5kSW5wdXQsXG4gIHR5cGUgU3RvcERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBzUmVwbGljYXRpb25Db21tYW5kT3V0cHV0LFxuICBTd2l0Y2hvdmVyQmx1ZUdyZWVuRGVwbG95bWVudENvbW1hbmQsXG4gIHR5cGUgU3dpdGNob3ZlckJsdWVHcmVlbkRlcGxveW1lbnRDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3dpdGNob3ZlckJsdWVHcmVlbkRlcGxveW1lbnRDb21tYW5kT3V0cHV0LFxuICBTd2l0Y2hvdmVyR2xvYmFsQ2x1c3RlckNvbW1hbmQsXG4gIHR5cGUgU3dpdGNob3Zlckdsb2JhbENsdXN0ZXJDb21tYW5kSW5wdXQsXG4gIHR5cGUgU3dpdGNob3Zlckdsb2JhbENsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICBTd2l0Y2hvdmVyUmVhZFJlcGxpY2FDb21tYW5kLFxuICB0eXBlIFN3aXRjaG92ZXJSZWFkUmVwbGljYUNvbW1hbmRJbnB1dCxcbiAgdHlwZSBTd2l0Y2hvdmVyUmVhZFJlcGxpY2FDb21tYW5kT3V0cHV0LFxufSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LXJkc1wiO1xuaW1wb3J0IHsgRGF0YSwgRWZmZWN0LCBMYXllciwgUmVjb3JkIH0gZnJvbSBcImVmZmVjdFwiO1xuaW1wb3J0IHtcbiAgQWxsU2VydmljZUVycm9ycyxcbiAgQXV0aG9yaXphdGlvbkFscmVhZHlFeGlzdHNGYXVsdEVycm9yLFxuICBBdXRob3JpemF0aW9uTm90Rm91bmRGYXVsdEVycm9yLFxuICBBdXRob3JpemF0aW9uUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3IsXG4gIEJhY2t1cFBvbGljeU5vdEZvdW5kRmF1bHRFcnJvcixcbiAgQmx1ZUdyZWVuRGVwbG95bWVudEFscmVhZHlFeGlzdHNGYXVsdEVycm9yLFxuICBCbHVlR3JlZW5EZXBsb3ltZW50Tm90Rm91bmRGYXVsdEVycm9yLFxuICBDZXJ0aWZpY2F0ZU5vdEZvdW5kRmF1bHRFcnJvcixcbiAgQ3JlYXRlQ3VzdG9tREJFbmdpbmVWZXJzaW9uRmF1bHRFcnJvcixcbiAgQ3VzdG9tQXZhaWxhYmlsaXR5Wm9uZU5vdEZvdW5kRmF1bHRFcnJvcixcbiAgQ3VzdG9tREJFbmdpbmVWZXJzaW9uQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3IsXG4gIEN1c3RvbURCRW5naW5lVmVyc2lvbk5vdEZvdW5kRmF1bHRFcnJvcixcbiAgQ3VzdG9tREJFbmdpbmVWZXJzaW9uUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3IsXG4gIERCQ2x1c3RlckFscmVhZHlFeGlzdHNGYXVsdEVycm9yLFxuICBEQkNsdXN0ZXJBdXRvbWF0ZWRCYWNrdXBOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIERCQ2x1c3RlckF1dG9tYXRlZEJhY2t1cFF1b3RhRXhjZWVkZWRGYXVsdEVycm9yLFxuICBEQkNsdXN0ZXJCYWNrdHJhY2tOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIERCQ2x1c3RlckVuZHBvaW50QWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3IsXG4gIERCQ2x1c3RlckVuZHBvaW50Tm90Rm91bmRGYXVsdEVycm9yLFxuICBEQkNsdXN0ZXJFbmRwb2ludFF1b3RhRXhjZWVkZWRGYXVsdEVycm9yLFxuICBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIERCQ2x1c3RlclBhcmFtZXRlckdyb3VwTm90Rm91bmRGYXVsdEVycm9yLFxuICBEQkNsdXN0ZXJRdW90YUV4Y2VlZGVkRmF1bHRFcnJvcixcbiAgREJDbHVzdGVyUm9sZUFscmVhZHlFeGlzdHNGYXVsdEVycm9yLFxuICBEQkNsdXN0ZXJSb2xlTm90Rm91bmRGYXVsdEVycm9yLFxuICBEQkNsdXN0ZXJSb2xlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3IsXG4gIERCQ2x1c3RlclNuYXBzaG90QWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3IsXG4gIERCQ2x1c3RlclNuYXBzaG90Tm90Rm91bmRGYXVsdEVycm9yLFxuICBEQkluc3RhbmNlQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3IsXG4gIERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBRdW90YUV4Y2VlZGVkRmF1bHRFcnJvcixcbiAgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvcixcbiAgREJJbnN0YW5jZVJvbGVBbHJlYWR5RXhpc3RzRmF1bHRFcnJvcixcbiAgREJJbnN0YW5jZVJvbGVOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIERCSW5zdGFuY2VSb2xlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3IsXG4gIERCTG9nRmlsZU5vdEZvdW5kRmF1bHRFcnJvcixcbiAgREJQYXJhbWV0ZXJHcm91cEFscmVhZHlFeGlzdHNGYXVsdEVycm9yLFxuICBEQlBhcmFtZXRlckdyb3VwTm90Rm91bmRGYXVsdEVycm9yLFxuICBEQlBhcmFtZXRlckdyb3VwUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3IsXG4gIERCUHJveHlBbHJlYWR5RXhpc3RzRmF1bHRFcnJvcixcbiAgREJQcm94eUVuZHBvaW50QWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3IsXG4gIERCUHJveHlFbmRwb2ludE5vdEZvdW5kRmF1bHRFcnJvcixcbiAgREJQcm94eUVuZHBvaW50UXVvdGFFeGNlZWRlZEZhdWx0RXJyb3IsXG4gIERCUHJveHlOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIERCUHJveHlRdW90YUV4Y2VlZGVkRmF1bHRFcnJvcixcbiAgREJQcm94eVRhcmdldEFscmVhZHlSZWdpc3RlcmVkRmF1bHRFcnJvcixcbiAgREJQcm94eVRhcmdldEdyb3VwTm90Rm91bmRGYXVsdEVycm9yLFxuICBEQlByb3h5VGFyZ2V0Tm90Rm91bmRGYXVsdEVycm9yLFxuICBEQlNlY3VyaXR5R3JvdXBBbHJlYWR5RXhpc3RzRmF1bHRFcnJvcixcbiAgREJTZWN1cml0eUdyb3VwTm90Rm91bmRGYXVsdEVycm9yLFxuICBEQlNlY3VyaXR5R3JvdXBOb3RTdXBwb3J0ZWRGYXVsdEVycm9yLFxuICBEQlNlY3VyaXR5R3JvdXBRdW90YUV4Y2VlZGVkRmF1bHRFcnJvcixcbiAgREJTaGFyZEdyb3VwQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3IsXG4gIERCU2hhcmRHcm91cE5vdEZvdW5kRmF1bHRFcnJvcixcbiAgREJTbmFwc2hvdEFscmVhZHlFeGlzdHNGYXVsdEVycm9yLFxuICBEQlNuYXBzaG90Tm90Rm91bmRGYXVsdEVycm9yLFxuICBEQlNuYXBzaG90VGVuYW50RGF0YWJhc2VOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIERCU3VibmV0R3JvdXBBbHJlYWR5RXhpc3RzRmF1bHRFcnJvcixcbiAgREJTdWJuZXRHcm91cERvZXNOb3RDb3ZlckVub3VnaEFac0Vycm9yLFxuICBEQlN1Ym5ldEdyb3VwTm90QWxsb3dlZEZhdWx0RXJyb3IsXG4gIERCU3VibmV0R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIERCU3VibmV0R3JvdXBRdW90YUV4Y2VlZGVkRmF1bHRFcnJvcixcbiAgREJTdWJuZXRRdW90YUV4Y2VlZGVkRmF1bHRFcnJvcixcbiAgREJVcGdyYWRlRGVwZW5kZW5jeUZhaWx1cmVGYXVsdEVycm9yLFxuICBEb21haW5Ob3RGb3VuZEZhdWx0RXJyb3IsXG4gIEVjMkltYWdlUHJvcGVydGllc05vdFN1cHBvcnRlZEZhdWx0RXJyb3IsXG4gIEV2ZW50U3Vic2NyaXB0aW9uUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3IsXG4gIEV4cG9ydFRhc2tBbHJlYWR5RXhpc3RzRmF1bHRFcnJvcixcbiAgRXhwb3J0VGFza05vdEZvdW5kRmF1bHRFcnJvcixcbiAgR2xvYmFsQ2x1c3RlckFscmVhZHlFeGlzdHNGYXVsdEVycm9yLFxuICBHbG9iYWxDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yLFxuICBHbG9iYWxDbHVzdGVyUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3IsXG4gIElhbVJvbGVNaXNzaW5nUGVybWlzc2lvbnNGYXVsdEVycm9yLFxuICBJYW1Sb2xlTm90Rm91bmRGYXVsdEVycm9yLFxuICBJbnN0YW5jZVF1b3RhRXhjZWVkZWRGYXVsdEVycm9yLFxuICBJbnN1ZmZpY2llbnRBdmFpbGFibGVJUHNJblN1Ym5ldEZhdWx0RXJyb3IsXG4gIEluc3VmZmljaWVudERCQ2x1c3RlckNhcGFjaXR5RmF1bHRFcnJvcixcbiAgSW5zdWZmaWNpZW50REJJbnN0YW5jZUNhcGFjaXR5RmF1bHRFcnJvcixcbiAgSW5zdWZmaWNpZW50U3RvcmFnZUNsdXN0ZXJDYXBhY2l0eUZhdWx0RXJyb3IsXG4gIEludGVncmF0aW9uQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3IsXG4gIEludGVncmF0aW9uQ29uZmxpY3RPcGVyYXRpb25GYXVsdEVycm9yLFxuICBJbnRlZ3JhdGlvbk5vdEZvdW5kRmF1bHRFcnJvcixcbiAgSW50ZWdyYXRpb25RdW90YUV4Y2VlZGVkRmF1bHRFcnJvcixcbiAgSW52YWxpZEJsdWVHcmVlbkRlcGxveW1lbnRTdGF0ZUZhdWx0RXJyb3IsXG4gIEludmFsaWRDdXN0b21EQkVuZ2luZVZlcnNpb25TdGF0ZUZhdWx0RXJyb3IsXG4gIEludmFsaWREQkNsdXN0ZXJBdXRvbWF0ZWRCYWNrdXBTdGF0ZUZhdWx0RXJyb3IsXG4gIEludmFsaWREQkNsdXN0ZXJDYXBhY2l0eUZhdWx0RXJyb3IsXG4gIEludmFsaWREQkNsdXN0ZXJFbmRwb2ludFN0YXRlRmF1bHRFcnJvcixcbiAgSW52YWxpZERCQ2x1c3RlclNuYXBzaG90U3RhdGVGYXVsdEVycm9yLFxuICBJbnZhbGlkREJDbHVzdGVyU3RhdGVGYXVsdEVycm9yLFxuICBJbnZhbGlkREJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cFN0YXRlRmF1bHRFcnJvcixcbiAgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3IsXG4gIEludmFsaWREQlBhcmFtZXRlckdyb3VwU3RhdGVGYXVsdEVycm9yLFxuICBJbnZhbGlkREJQcm94eUVuZHBvaW50U3RhdGVGYXVsdEVycm9yLFxuICBJbnZhbGlkREJQcm94eVN0YXRlRmF1bHRFcnJvcixcbiAgSW52YWxpZERCU2VjdXJpdHlHcm91cFN0YXRlRmF1bHRFcnJvcixcbiAgSW52YWxpZERCU2hhcmRHcm91cFN0YXRlRmF1bHRFcnJvcixcbiAgSW52YWxpZERCU25hcHNob3RTdGF0ZUZhdWx0RXJyb3IsXG4gIEludmFsaWREQlN1Ym5ldEdyb3VwRmF1bHRFcnJvcixcbiAgSW52YWxpZERCU3VibmV0R3JvdXBTdGF0ZUZhdWx0RXJyb3IsXG4gIEludmFsaWREQlN1Ym5ldFN0YXRlRmF1bHRFcnJvcixcbiAgSW52YWxpZEV2ZW50U3Vic2NyaXB0aW9uU3RhdGVGYXVsdEVycm9yLFxuICBJbnZhbGlkRXhwb3J0T25seUZhdWx0RXJyb3IsXG4gIEludmFsaWRFeHBvcnRTb3VyY2VTdGF0ZUZhdWx0RXJyb3IsXG4gIEludmFsaWRFeHBvcnRUYXNrU3RhdGVGYXVsdEVycm9yLFxuICBJbnZhbGlkR2xvYmFsQ2x1c3RlclN0YXRlRmF1bHRFcnJvcixcbiAgSW52YWxpZEludGVncmF0aW9uU3RhdGVGYXVsdEVycm9yLFxuICBJbnZhbGlkT3B0aW9uR3JvdXBTdGF0ZUZhdWx0RXJyb3IsXG4gIEludmFsaWRSZXNvdXJjZVN0YXRlRmF1bHRFcnJvcixcbiAgSW52YWxpZFJlc3RvcmVGYXVsdEVycm9yLFxuICBJbnZhbGlkUzNCdWNrZXRGYXVsdEVycm9yLFxuICBJbnZhbGlkU3VibmV0RXJyb3IsXG4gIEludmFsaWRWUENOZXR3b3JrU3RhdGVGYXVsdEVycm9yLFxuICBLTVNLZXlOb3RBY2Nlc3NpYmxlRmF1bHRFcnJvcixcbiAgTWF4REJTaGFyZEdyb3VwTGltaXRSZWFjaGVkRXJyb3IsXG4gIE5ldHdvcmtUeXBlTm90U3VwcG9ydGVkRXJyb3IsXG4gIE9wdGlvbkdyb3VwQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3IsXG4gIE9wdGlvbkdyb3VwTm90Rm91bmRGYXVsdEVycm9yLFxuICBPcHRpb25Hcm91cFF1b3RhRXhjZWVkZWRGYXVsdEVycm9yLFxuICBQb2ludEluVGltZVJlc3RvcmVOb3RFbmFibGVkRmF1bHRFcnJvcixcbiAgUHJvdmlzaW9uZWRJb3BzTm90QXZhaWxhYmxlSW5BWkZhdWx0RXJyb3IsXG4gIFJlc2VydmVkREJJbnN0YW5jZUFscmVhZHlFeGlzdHNGYXVsdEVycm9yLFxuICBSZXNlcnZlZERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIFJlc2VydmVkREJJbnN0YW5jZVF1b3RhRXhjZWVkZWRGYXVsdEVycm9yLFxuICBSZXNlcnZlZERCSW5zdGFuY2VzT2ZmZXJpbmdOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIFJlc291cmNlTm90Rm91bmRGYXVsdEVycm9yLFxuICBTTlNJbnZhbGlkVG9waWNGYXVsdEVycm9yLFxuICBTTlNOb0F1dGhvcml6YXRpb25GYXVsdEVycm9yLFxuICBTTlNUb3BpY0Fybk5vdEZvdW5kRmF1bHRFcnJvcixcbiAgU2hhcmVkU25hcHNob3RRdW90YUV4Y2VlZGVkRmF1bHRFcnJvcixcbiAgU25hcHNob3RRdW90YUV4Y2VlZGVkRmF1bHRFcnJvcixcbiAgU291cmNlQ2x1c3Rlck5vdFN1cHBvcnRlZEZhdWx0RXJyb3IsXG4gIFNvdXJjZURhdGFiYXNlTm90U3VwcG9ydGVkRmF1bHRFcnJvcixcbiAgU291cmNlTm90Rm91bmRGYXVsdEVycm9yLFxuICBTdG9yYWdlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3IsXG4gIFN0b3JhZ2VUeXBlTm90QXZhaWxhYmxlRmF1bHRFcnJvcixcbiAgU3RvcmFnZVR5cGVOb3RTdXBwb3J0ZWRGYXVsdEVycm9yLFxuICBTdWJuZXRBbHJlYWR5SW5Vc2VFcnJvcixcbiAgU3Vic2NyaXB0aW9uQWxyZWFkeUV4aXN0RmF1bHRFcnJvcixcbiAgU3Vic2NyaXB0aW9uQ2F0ZWdvcnlOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIFN1YnNjcmlwdGlvbk5vdEZvdW5kRmF1bHRFcnJvcixcbiAgVGVuYW50RGF0YWJhc2VBbHJlYWR5RXhpc3RzRmF1bHRFcnJvcixcbiAgVGVuYW50RGF0YWJhc2VOb3RGb3VuZEZhdWx0RXJyb3IsXG4gIFRlbmFudERhdGFiYXNlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3IsXG4gIFVuc3VwcG9ydGVkREJFbmdpbmVWZXJzaW9uRmF1bHRFcnJvcixcbiAgU2RrRXJyb3IsXG4gIFRhZ2dlZEV4Y2VwdGlvbixcbn0gZnJvbSBcIi4vRXJyb3JzXCI7XG5pbXBvcnQgeyBSRFNDbGllbnRJbnN0YW5jZSwgUkRTQ2xpZW50SW5zdGFuY2VMYXllciB9IGZyb20gXCIuL1JEU0NsaWVudEluc3RhbmNlXCI7XG5pbXBvcnQgeyBEZWZhdWx0UkRTQ2xpZW50Q29uZmlnTGF5ZXIgfSBmcm9tIFwiLi9SRFNDbGllbnRJbnN0YW5jZUNvbmZpZ1wiO1xuXG5pbnRlcmZhY2UgSHR0cEhhbmRsZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGhlIGNvbm5lY3Rpb24gcGhhc2Ugb2YgYSByZXF1ZXN0XG4gICAqIG1heSB0YWtlIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IGlzIGFiYW5kb25lZC5cbiAgICovXG4gIHJlcXVlc3RUaW1lb3V0PzogbnVtYmVyO1xufVxuXG5jb25zdCBjb21tYW5kcyA9IHtcbiAgQWRkUm9sZVRvREJDbHVzdGVyQ29tbWFuZCxcbiAgQWRkUm9sZVRvREJJbnN0YW5jZUNvbW1hbmQsXG4gIEFkZFNvdXJjZUlkZW50aWZpZXJUb1N1YnNjcmlwdGlvbkNvbW1hbmQsXG4gIEFkZFRhZ3NUb1Jlc291cmNlQ29tbWFuZCxcbiAgQXBwbHlQZW5kaW5nTWFpbnRlbmFuY2VBY3Rpb25Db21tYW5kLFxuICBBdXRob3JpemVEQlNlY3VyaXR5R3JvdXBJbmdyZXNzQ29tbWFuZCxcbiAgQmFja3RyYWNrREJDbHVzdGVyQ29tbWFuZCxcbiAgQ2FuY2VsRXhwb3J0VGFza0NvbW1hbmQsXG4gIENvcHlEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmQsXG4gIENvcHlEQkNsdXN0ZXJTbmFwc2hvdENvbW1hbmQsXG4gIENvcHlEQlBhcmFtZXRlckdyb3VwQ29tbWFuZCxcbiAgQ29weURCU25hcHNob3RDb21tYW5kLFxuICBDb3B5T3B0aW9uR3JvdXBDb21tYW5kLFxuICBDcmVhdGVCbHVlR3JlZW5EZXBsb3ltZW50Q29tbWFuZCxcbiAgQ3JlYXRlQ3VzdG9tREJFbmdpbmVWZXJzaW9uQ29tbWFuZCxcbiAgQ3JlYXRlREJDbHVzdGVyQ29tbWFuZCxcbiAgQ3JlYXRlREJDbHVzdGVyRW5kcG9pbnRDb21tYW5kLFxuICBDcmVhdGVEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmQsXG4gIENyZWF0ZURCQ2x1c3RlclNuYXBzaG90Q29tbWFuZCxcbiAgQ3JlYXRlREJJbnN0YW5jZUNvbW1hbmQsXG4gIENyZWF0ZURCSW5zdGFuY2VSZWFkUmVwbGljYUNvbW1hbmQsXG4gIENyZWF0ZURCUGFyYW1ldGVyR3JvdXBDb21tYW5kLFxuICBDcmVhdGVEQlByb3h5Q29tbWFuZCxcbiAgQ3JlYXRlREJQcm94eUVuZHBvaW50Q29tbWFuZCxcbiAgQ3JlYXRlREJTZWN1cml0eUdyb3VwQ29tbWFuZCxcbiAgQ3JlYXRlREJTaGFyZEdyb3VwQ29tbWFuZCxcbiAgQ3JlYXRlREJTbmFwc2hvdENvbW1hbmQsXG4gIENyZWF0ZURCU3VibmV0R3JvdXBDb21tYW5kLFxuICBDcmVhdGVFdmVudFN1YnNjcmlwdGlvbkNvbW1hbmQsXG4gIENyZWF0ZUdsb2JhbENsdXN0ZXJDb21tYW5kLFxuICBDcmVhdGVJbnRlZ3JhdGlvbkNvbW1hbmQsXG4gIENyZWF0ZU9wdGlvbkdyb3VwQ29tbWFuZCxcbiAgQ3JlYXRlVGVuYW50RGF0YWJhc2VDb21tYW5kLFxuICBEZWxldGVCbHVlR3JlZW5EZXBsb3ltZW50Q29tbWFuZCxcbiAgRGVsZXRlQ3VzdG9tREJFbmdpbmVWZXJzaW9uQ29tbWFuZCxcbiAgRGVsZXRlREJDbHVzdGVyQ29tbWFuZCxcbiAgRGVsZXRlREJDbHVzdGVyQXV0b21hdGVkQmFja3VwQ29tbWFuZCxcbiAgRGVsZXRlREJDbHVzdGVyRW5kcG9pbnRDb21tYW5kLFxuICBEZWxldGVEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmQsXG4gIERlbGV0ZURCQ2x1c3RlclNuYXBzaG90Q29tbWFuZCxcbiAgRGVsZXRlREJJbnN0YW5jZUNvbW1hbmQsXG4gIERlbGV0ZURCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBDb21tYW5kLFxuICBEZWxldGVEQlBhcmFtZXRlckdyb3VwQ29tbWFuZCxcbiAgRGVsZXRlREJQcm94eUNvbW1hbmQsXG4gIERlbGV0ZURCUHJveHlFbmRwb2ludENvbW1hbmQsXG4gIERlbGV0ZURCU2VjdXJpdHlHcm91cENvbW1hbmQsXG4gIERlbGV0ZURCU2hhcmRHcm91cENvbW1hbmQsXG4gIERlbGV0ZURCU25hcHNob3RDb21tYW5kLFxuICBEZWxldGVEQlN1Ym5ldEdyb3VwQ29tbWFuZCxcbiAgRGVsZXRlRXZlbnRTdWJzY3JpcHRpb25Db21tYW5kLFxuICBEZWxldGVHbG9iYWxDbHVzdGVyQ29tbWFuZCxcbiAgRGVsZXRlSW50ZWdyYXRpb25Db21tYW5kLFxuICBEZWxldGVPcHRpb25Hcm91cENvbW1hbmQsXG4gIERlbGV0ZVRlbmFudERhdGFiYXNlQ29tbWFuZCxcbiAgRGVyZWdpc3RlckRCUHJveHlUYXJnZXRzQ29tbWFuZCxcbiAgRGVzY3JpYmVBY2NvdW50QXR0cmlidXRlc0NvbW1hbmQsXG4gIERlc2NyaWJlQmx1ZUdyZWVuRGVwbG95bWVudHNDb21tYW5kLFxuICBEZXNjcmliZUNlcnRpZmljYXRlc0NvbW1hbmQsXG4gIERlc2NyaWJlREJDbHVzdGVyQXV0b21hdGVkQmFja3Vwc0NvbW1hbmQsXG4gIERlc2NyaWJlREJDbHVzdGVyQmFja3RyYWNrc0NvbW1hbmQsXG4gIERlc2NyaWJlREJDbHVzdGVyRW5kcG9pbnRzQ29tbWFuZCxcbiAgRGVzY3JpYmVEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cHNDb21tYW5kLFxuICBEZXNjcmliZURCQ2x1c3RlclBhcmFtZXRlcnNDb21tYW5kLFxuICBEZXNjcmliZURCQ2x1c3RlclNuYXBzaG90QXR0cmlidXRlc0NvbW1hbmQsXG4gIERlc2NyaWJlREJDbHVzdGVyU25hcHNob3RzQ29tbWFuZCxcbiAgRGVzY3JpYmVEQkNsdXN0ZXJzQ29tbWFuZCxcbiAgRGVzY3JpYmVEQkVuZ2luZVZlcnNpb25zQ29tbWFuZCxcbiAgRGVzY3JpYmVEQkluc3RhbmNlQXV0b21hdGVkQmFja3Vwc0NvbW1hbmQsXG4gIERlc2NyaWJlREJJbnN0YW5jZXNDb21tYW5kLFxuICBEZXNjcmliZURCTG9nRmlsZXNDb21tYW5kLFxuICBEZXNjcmliZURCUGFyYW1ldGVyR3JvdXBzQ29tbWFuZCxcbiAgRGVzY3JpYmVEQlBhcmFtZXRlcnNDb21tYW5kLFxuICBEZXNjcmliZURCUHJveGllc0NvbW1hbmQsXG4gIERlc2NyaWJlREJQcm94eUVuZHBvaW50c0NvbW1hbmQsXG4gIERlc2NyaWJlREJQcm94eVRhcmdldEdyb3Vwc0NvbW1hbmQsXG4gIERlc2NyaWJlREJQcm94eVRhcmdldHNDb21tYW5kLFxuICBEZXNjcmliZURCUmVjb21tZW5kYXRpb25zQ29tbWFuZCxcbiAgRGVzY3JpYmVEQlNlY3VyaXR5R3JvdXBzQ29tbWFuZCxcbiAgRGVzY3JpYmVEQlNoYXJkR3JvdXBzQ29tbWFuZCxcbiAgRGVzY3JpYmVEQlNuYXBzaG90QXR0cmlidXRlc0NvbW1hbmQsXG4gIERlc2NyaWJlREJTbmFwc2hvdFRlbmFudERhdGFiYXNlc0NvbW1hbmQsXG4gIERlc2NyaWJlREJTbmFwc2hvdHNDb21tYW5kLFxuICBEZXNjcmliZURCU3VibmV0R3JvdXBzQ29tbWFuZCxcbiAgRGVzY3JpYmVFbmdpbmVEZWZhdWx0Q2x1c3RlclBhcmFtZXRlcnNDb21tYW5kLFxuICBEZXNjcmliZUVuZ2luZURlZmF1bHRQYXJhbWV0ZXJzQ29tbWFuZCxcbiAgRGVzY3JpYmVFdmVudENhdGVnb3JpZXNDb21tYW5kLFxuICBEZXNjcmliZUV2ZW50U3Vic2NyaXB0aW9uc0NvbW1hbmQsXG4gIERlc2NyaWJlRXZlbnRzQ29tbWFuZCxcbiAgRGVzY3JpYmVFeHBvcnRUYXNrc0NvbW1hbmQsXG4gIERlc2NyaWJlR2xvYmFsQ2x1c3RlcnNDb21tYW5kLFxuICBEZXNjcmliZUludGVncmF0aW9uc0NvbW1hbmQsXG4gIERlc2NyaWJlT3B0aW9uR3JvdXBPcHRpb25zQ29tbWFuZCxcbiAgRGVzY3JpYmVPcHRpb25Hcm91cHNDb21tYW5kLFxuICBEZXNjcmliZU9yZGVyYWJsZURCSW5zdGFuY2VPcHRpb25zQ29tbWFuZCxcbiAgRGVzY3JpYmVQZW5kaW5nTWFpbnRlbmFuY2VBY3Rpb25zQ29tbWFuZCxcbiAgRGVzY3JpYmVSZXNlcnZlZERCSW5zdGFuY2VzQ29tbWFuZCxcbiAgRGVzY3JpYmVSZXNlcnZlZERCSW5zdGFuY2VzT2ZmZXJpbmdzQ29tbWFuZCxcbiAgRGVzY3JpYmVTb3VyY2VSZWdpb25zQ29tbWFuZCxcbiAgRGVzY3JpYmVUZW5hbnREYXRhYmFzZXNDb21tYW5kLFxuICBEZXNjcmliZVZhbGlkREJJbnN0YW5jZU1vZGlmaWNhdGlvbnNDb21tYW5kLFxuICBEaXNhYmxlSHR0cEVuZHBvaW50Q29tbWFuZCxcbiAgRG93bmxvYWREQkxvZ0ZpbGVQb3J0aW9uQ29tbWFuZCxcbiAgRW5hYmxlSHR0cEVuZHBvaW50Q29tbWFuZCxcbiAgRmFpbG92ZXJEQkNsdXN0ZXJDb21tYW5kLFxuICBGYWlsb3Zlckdsb2JhbENsdXN0ZXJDb21tYW5kLFxuICBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZCxcbiAgTW9kaWZ5QWN0aXZpdHlTdHJlYW1Db21tYW5kLFxuICBNb2RpZnlDZXJ0aWZpY2F0ZXNDb21tYW5kLFxuICBNb2RpZnlDdXJyZW50REJDbHVzdGVyQ2FwYWNpdHlDb21tYW5kLFxuICBNb2RpZnlDdXN0b21EQkVuZ2luZVZlcnNpb25Db21tYW5kLFxuICBNb2RpZnlEQkNsdXN0ZXJDb21tYW5kLFxuICBNb2RpZnlEQkNsdXN0ZXJFbmRwb2ludENvbW1hbmQsXG4gIE1vZGlmeURCQ2x1c3RlclBhcmFtZXRlckdyb3VwQ29tbWFuZCxcbiAgTW9kaWZ5REJDbHVzdGVyU25hcHNob3RBdHRyaWJ1dGVDb21tYW5kLFxuICBNb2RpZnlEQkluc3RhbmNlQ29tbWFuZCxcbiAgTW9kaWZ5REJQYXJhbWV0ZXJHcm91cENvbW1hbmQsXG4gIE1vZGlmeURCUHJveHlDb21tYW5kLFxuICBNb2RpZnlEQlByb3h5RW5kcG9pbnRDb21tYW5kLFxuICBNb2RpZnlEQlByb3h5VGFyZ2V0R3JvdXBDb21tYW5kLFxuICBNb2RpZnlEQlJlY29tbWVuZGF0aW9uQ29tbWFuZCxcbiAgTW9kaWZ5REJTaGFyZEdyb3VwQ29tbWFuZCxcbiAgTW9kaWZ5REJTbmFwc2hvdENvbW1hbmQsXG4gIE1vZGlmeURCU25hcHNob3RBdHRyaWJ1dGVDb21tYW5kLFxuICBNb2RpZnlEQlN1Ym5ldEdyb3VwQ29tbWFuZCxcbiAgTW9kaWZ5RXZlbnRTdWJzY3JpcHRpb25Db21tYW5kLFxuICBNb2RpZnlHbG9iYWxDbHVzdGVyQ29tbWFuZCxcbiAgTW9kaWZ5SW50ZWdyYXRpb25Db21tYW5kLFxuICBNb2RpZnlPcHRpb25Hcm91cENvbW1hbmQsXG4gIE1vZGlmeVRlbmFudERhdGFiYXNlQ29tbWFuZCxcbiAgUHJvbW90ZVJlYWRSZXBsaWNhQ29tbWFuZCxcbiAgUHJvbW90ZVJlYWRSZXBsaWNhREJDbHVzdGVyQ29tbWFuZCxcbiAgUHVyY2hhc2VSZXNlcnZlZERCSW5zdGFuY2VzT2ZmZXJpbmdDb21tYW5kLFxuICBSZWJvb3REQkNsdXN0ZXJDb21tYW5kLFxuICBSZWJvb3REQkluc3RhbmNlQ29tbWFuZCxcbiAgUmVib290REJTaGFyZEdyb3VwQ29tbWFuZCxcbiAgUmVnaXN0ZXJEQlByb3h5VGFyZ2V0c0NvbW1hbmQsXG4gIFJlbW92ZUZyb21HbG9iYWxDbHVzdGVyQ29tbWFuZCxcbiAgUmVtb3ZlUm9sZUZyb21EQkNsdXN0ZXJDb21tYW5kLFxuICBSZW1vdmVSb2xlRnJvbURCSW5zdGFuY2VDb21tYW5kLFxuICBSZW1vdmVTb3VyY2VJZGVudGlmaWVyRnJvbVN1YnNjcmlwdGlvbkNvbW1hbmQsXG4gIFJlbW92ZVRhZ3NGcm9tUmVzb3VyY2VDb21tYW5kLFxuICBSZXNldERCQ2x1c3RlclBhcmFtZXRlckdyb3VwQ29tbWFuZCxcbiAgUmVzZXREQlBhcmFtZXRlckdyb3VwQ29tbWFuZCxcbiAgUmVzdG9yZURCQ2x1c3RlckZyb21TM0NvbW1hbmQsXG4gIFJlc3RvcmVEQkNsdXN0ZXJGcm9tU25hcHNob3RDb21tYW5kLFxuICBSZXN0b3JlREJDbHVzdGVyVG9Qb2ludEluVGltZUNvbW1hbmQsXG4gIFJlc3RvcmVEQkluc3RhbmNlRnJvbURCU25hcHNob3RDb21tYW5kLFxuICBSZXN0b3JlREJJbnN0YW5jZUZyb21TM0NvbW1hbmQsXG4gIFJlc3RvcmVEQkluc3RhbmNlVG9Qb2ludEluVGltZUNvbW1hbmQsXG4gIFJldm9rZURCU2VjdXJpdHlHcm91cEluZ3Jlc3NDb21tYW5kLFxuICBTdGFydEFjdGl2aXR5U3RyZWFtQ29tbWFuZCxcbiAgU3RhcnREQkNsdXN0ZXJDb21tYW5kLFxuICBTdGFydERCSW5zdGFuY2VDb21tYW5kLFxuICBTdGFydERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBzUmVwbGljYXRpb25Db21tYW5kLFxuICBTdGFydEV4cG9ydFRhc2tDb21tYW5kLFxuICBTdG9wQWN0aXZpdHlTdHJlYW1Db21tYW5kLFxuICBTdG9wREJDbHVzdGVyQ29tbWFuZCxcbiAgU3RvcERCSW5zdGFuY2VDb21tYW5kLFxuICBTdG9wREJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cHNSZXBsaWNhdGlvbkNvbW1hbmQsXG4gIFN3aXRjaG92ZXJCbHVlR3JlZW5EZXBsb3ltZW50Q29tbWFuZCxcbiAgU3dpdGNob3Zlckdsb2JhbENsdXN0ZXJDb21tYW5kLFxuICBTd2l0Y2hvdmVyUmVhZFJlcGxpY2FDb21tYW5kLFxufTtcblxuaW50ZXJmYWNlIFJEU1NlcnZpY2UkIHtcbiAgcmVhZG9ubHkgXzogdW5pcXVlIHN5bWJvbDtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkUm9sZVRvREJDbHVzdGVyQ29tbWFuZH1cbiAgICovXG4gIGFkZFJvbGVUb0RCQ2x1c3RlcihcbiAgICBhcmdzOiBBZGRSb2xlVG9EQkNsdXN0ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRSb2xlVG9EQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyUm9sZUFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJSb2xlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkUm9sZVRvREJJbnN0YW5jZUNvbW1hbmR9XG4gICAqL1xuICBhZGRSb2xlVG9EQkluc3RhbmNlKFxuICAgIGFyZ3M6IEFkZFJvbGVUb0RCSW5zdGFuY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRSb2xlVG9EQkluc3RhbmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkluc3RhbmNlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkluc3RhbmNlUm9sZUFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQkluc3RhbmNlUm9sZVF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBZGRTb3VyY2VJZGVudGlmaWVyVG9TdWJzY3JpcHRpb25Db21tYW5kfVxuICAgKi9cbiAgYWRkU291cmNlSWRlbnRpZmllclRvU3Vic2NyaXB0aW9uKFxuICAgIGFyZ3M6IEFkZFNvdXJjZUlkZW50aWZpZXJUb1N1YnNjcmlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEFkZFNvdXJjZUlkZW50aWZpZXJUb1N1YnNjcmlwdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBTb3VyY2VOb3RGb3VuZEZhdWx0RXJyb3IgfCBTdWJzY3JpcHRpb25Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQWRkVGFnc1RvUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgYWRkVGFnc1RvUmVzb3VyY2UoXG4gICAgYXJnczogQWRkVGFnc1RvUmVzb3VyY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBBZGRUYWdzVG9SZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmx1ZUdyZWVuRGVwbG95bWVudE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkluc3RhbmNlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5VGFyZ2V0R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU25hcHNob3ROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU25hcHNob3RUZW5hbnREYXRhYmFzZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW50ZWdyYXRpb25Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IFRlbmFudERhdGFiYXNlTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIEFwcGx5UGVuZGluZ01haW50ZW5hbmNlQWN0aW9uQ29tbWFuZH1cbiAgICovXG4gIGFwcGx5UGVuZGluZ01haW50ZW5hbmNlQWN0aW9uKFxuICAgIGFyZ3M6IEFwcGx5UGVuZGluZ01haW50ZW5hbmNlQWN0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQXBwbHlQZW5kaW5nTWFpbnRlbmFuY2VBY3Rpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBBdXRob3JpemVEQlNlY3VyaXR5R3JvdXBJbmdyZXNzQ29tbWFuZH1cbiAgICovXG4gIGF1dGhvcml6ZURCU2VjdXJpdHlHcm91cEluZ3Jlc3MoXG4gICAgYXJnczogQXV0aG9yaXplREJTZWN1cml0eUdyb3VwSW5ncmVzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEF1dGhvcml6ZURCU2VjdXJpdHlHcm91cEluZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25BbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgQXV0aG9yaXphdGlvblF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gICAgfCBEQlNlY3VyaXR5R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlNlY3VyaXR5R3JvdXBTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQmFja3RyYWNrREJDbHVzdGVyQ29tbWFuZH1cbiAgICovXG4gIGJhY2t0cmFja0RCQ2x1c3RlcihcbiAgICBhcmdzOiBCYWNrdHJhY2tEQkNsdXN0ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBCYWNrdHJhY2tEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgREJDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDYW5jZWxFeHBvcnRUYXNrQ29tbWFuZH1cbiAgICovXG4gIGNhbmNlbEV4cG9ydFRhc2soXG4gICAgYXJnczogQ2FuY2VsRXhwb3J0VGFza0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENhbmNlbEV4cG9ydFRhc2tDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgRXhwb3J0VGFza05vdEZvdW5kRmF1bHRFcnJvciB8IEludmFsaWRFeHBvcnRUYXNrU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENvcHlEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmR9XG4gICAqL1xuICBjb3B5REJDbHVzdGVyUGFyYW1ldGVyR3JvdXAoXG4gICAgYXJnczogQ29weURCQ2x1c3RlclBhcmFtZXRlckdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ29weURCQ2x1c3RlclBhcmFtZXRlckdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQlBhcmFtZXRlckdyb3VwQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IERCUGFyYW1ldGVyR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCUGFyYW1ldGVyR3JvdXBRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDb3B5REJDbHVzdGVyU25hcHNob3RDb21tYW5kfVxuICAgKi9cbiAgY29weURCQ2x1c3RlclNuYXBzaG90KFxuICAgIGFyZ3M6IENvcHlEQkNsdXN0ZXJTbmFwc2hvdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENvcHlEQkNsdXN0ZXJTbmFwc2hvdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJDbHVzdGVyU25hcHNob3RBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyU25hcHNob3ROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTbmFwc2hvdFN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICAgIHwgS01TS2V5Tm90QWNjZXNzaWJsZUZhdWx0RXJyb3JcbiAgICB8IFNuYXBzaG90UXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29weURCUGFyYW1ldGVyR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgY29weURCUGFyYW1ldGVyR3JvdXAoXG4gICAgYXJnczogQ29weURCUGFyYW1ldGVyR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb3B5REJQYXJhbWV0ZXJHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJQYXJhbWV0ZXJHcm91cEFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQlBhcmFtZXRlckdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlBhcmFtZXRlckdyb3VwUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29weURCU25hcHNob3RDb21tYW5kfVxuICAgKi9cbiAgY29weURCU25hcHNob3QoXG4gICAgYXJnczogQ29weURCU25hcHNob3RDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb3B5REJTbmFwc2hvdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tQXZhaWxhYmlsaXR5Wm9uZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTbmFwc2hvdEFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQlNuYXBzaG90Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJTbmFwc2hvdFN0YXRlRmF1bHRFcnJvclxuICAgIHwgS01TS2V5Tm90QWNjZXNzaWJsZUZhdWx0RXJyb3JcbiAgICB8IFNuYXBzaG90UXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ29weU9wdGlvbkdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGNvcHlPcHRpb25Hcm91cChcbiAgICBhcmdzOiBDb3B5T3B0aW9uR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDb3B5T3B0aW9uR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IE9wdGlvbkdyb3VwQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IE9wdGlvbkdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBPcHRpb25Hcm91cFF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZUJsdWVHcmVlbkRlcGxveW1lbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlQmx1ZUdyZWVuRGVwbG95bWVudChcbiAgICBhcmdzOiBDcmVhdGVCbHVlR3JlZW5EZXBsb3ltZW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlQmx1ZUdyZWVuRGVwbG95bWVudENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmx1ZUdyZWVuRGVwbG95bWVudEFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3RlclBhcmFtZXRlckdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJQYXJhbWV0ZXJHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW5zdGFuY2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IFNvdXJjZUNsdXN0ZXJOb3RTdXBwb3J0ZWRGYXVsdEVycm9yXG4gICAgfCBTb3VyY2VEYXRhYmFzZU5vdFN1cHBvcnRlZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlQ3VzdG9tREJFbmdpbmVWZXJzaW9uQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUN1c3RvbURCRW5naW5lVmVyc2lvbihcbiAgICBhcmdzOiBDcmVhdGVDdXN0b21EQkVuZ2luZVZlcnNpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVDdXN0b21EQkVuZ2luZVZlcnNpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENyZWF0ZUN1c3RvbURCRW5naW5lVmVyc2lvbkZhdWx0RXJyb3JcbiAgICB8IEN1c3RvbURCRW5naW5lVmVyc2lvbkFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBDdXN0b21EQkVuZ2luZVZlcnNpb25RdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgRWMySW1hZ2VQcm9wZXJ0aWVzTm90U3VwcG9ydGVkRmF1bHRFcnJvclxuICAgIHwgS01TS2V5Tm90QWNjZXNzaWJsZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlREJDbHVzdGVyQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZURCQ2x1c3RlcihcbiAgICBhcmdzOiBDcmVhdGVEQkNsdXN0ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3RlckFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3RlclBhcmFtZXRlckdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTdWJuZXRHcm91cERvZXNOb3RDb3ZlckVub3VnaEFac0Vycm9yXG4gICAgfCBEQlN1Ym5ldEdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEb21haW5Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEdsb2JhbENsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEluc3VmZmljaWVudERCSW5zdGFuY2VDYXBhY2l0eUZhdWx0RXJyb3JcbiAgICB8IEluc3VmZmljaWVudFN0b3JhZ2VDbHVzdGVyQ2FwYWNpdHlGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCU3VibmV0R3JvdXBGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJTdWJuZXRHcm91cFN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZEdsb2JhbENsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRFcnJvclxuICAgIHwgSW52YWxpZFZQQ05ldHdvcmtTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEtNU0tleU5vdEFjY2Vzc2libGVGYXVsdEVycm9yXG4gICAgfCBPcHRpb25Hcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgU3RvcmFnZVF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZURCQ2x1c3RlckVuZHBvaW50Q29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZURCQ2x1c3RlckVuZHBvaW50KFxuICAgIGFyZ3M6IENyZWF0ZURCQ2x1c3RlckVuZHBvaW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlREJDbHVzdGVyRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3RlckVuZHBvaW50QWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3RlckVuZHBvaW50UXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXAoXG4gICAgYXJnczogQ3JlYXRlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJQYXJhbWV0ZXJHcm91cEFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQlBhcmFtZXRlckdyb3VwUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlREJDbHVzdGVyU25hcHNob3RDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlREJDbHVzdGVyU25hcHNob3QoXG4gICAgYXJnczogQ3JlYXRlREJDbHVzdGVyU25hcHNob3RDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVEQkNsdXN0ZXJTbmFwc2hvdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJTbmFwc2hvdEFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU25hcHNob3RTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IFNuYXBzaG90UXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlREJJbnN0YW5jZUNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVEQkluc3RhbmNlKFxuICAgIGFyZ3M6IENyZWF0ZURCSW5zdGFuY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVEQkluc3RhbmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBCYWNrdXBQb2xpY3lOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IENlcnRpZmljYXRlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCSW5zdGFuY2VBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgREJQYXJhbWV0ZXJHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTZWN1cml0eUdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlN1Ym5ldEdyb3VwRG9lc05vdENvdmVyRW5vdWdoQVpzRXJyb3JcbiAgICB8IERCU3VibmV0R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERvbWFpbk5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW5zdGFuY2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgSW5zdWZmaWNpZW50REJJbnN0YW5jZUNhcGFjaXR5RmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZFN1Ym5ldEVycm9yXG4gICAgfCBJbnZhbGlkVlBDTmV0d29ya1N0YXRlRmF1bHRFcnJvclxuICAgIHwgS01TS2V5Tm90QWNjZXNzaWJsZUZhdWx0RXJyb3JcbiAgICB8IE5ldHdvcmtUeXBlTm90U3VwcG9ydGVkRXJyb3JcbiAgICB8IE9wdGlvbkdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBQcm92aXNpb25lZElvcHNOb3RBdmFpbGFibGVJbkFaRmF1bHRFcnJvclxuICAgIHwgU3RvcmFnZVF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gICAgfCBTdG9yYWdlVHlwZU5vdFN1cHBvcnRlZEZhdWx0RXJyb3JcbiAgICB8IFRlbmFudERhdGFiYXNlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlREJJbnN0YW5jZVJlYWRSZXBsaWNhQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZURCSW5zdGFuY2VSZWFkUmVwbGljYShcbiAgICBhcmdzOiBDcmVhdGVEQkluc3RhbmNlUmVhZFJlcGxpY2FDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVEQkluc3RhbmNlUmVhZFJlcGxpY2FDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IENlcnRpZmljYXRlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCSW5zdGFuY2VBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJQYXJhbWV0ZXJHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTZWN1cml0eUdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlN1Ym5ldEdyb3VwRG9lc05vdENvdmVyRW5vdWdoQVpzRXJyb3JcbiAgICB8IERCU3VibmV0R3JvdXBOb3RBbGxvd2VkRmF1bHRFcnJvclxuICAgIHwgREJTdWJuZXRHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgRG9tYWluTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnN0YW5jZVF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gICAgfCBJbnN1ZmZpY2llbnREQkluc3RhbmNlQ2FwYWNpdHlGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCU3VibmV0R3JvdXBGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkU3VibmV0RXJyb3JcbiAgICB8IEludmFsaWRWUENOZXR3b3JrU3RhdGVGYXVsdEVycm9yXG4gICAgfCBLTVNLZXlOb3RBY2Nlc3NpYmxlRmF1bHRFcnJvclxuICAgIHwgTmV0d29ya1R5cGVOb3RTdXBwb3J0ZWRFcnJvclxuICAgIHwgT3B0aW9uR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IFByb3Zpc2lvbmVkSW9wc05vdEF2YWlsYWJsZUluQVpGYXVsdEVycm9yXG4gICAgfCBTdG9yYWdlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IFN0b3JhZ2VUeXBlTm90U3VwcG9ydGVkRmF1bHRFcnJvclxuICAgIHwgVGVuYW50RGF0YWJhc2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVEQlBhcmFtZXRlckdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZURCUGFyYW1ldGVyR3JvdXAoXG4gICAgYXJnczogQ3JlYXRlREJQYXJhbWV0ZXJHcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZURCUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCUGFyYW1ldGVyR3JvdXBBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgREJQYXJhbWV0ZXJHcm91cFF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZURCUHJveHlDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlREJQcm94eShcbiAgICBhcmdzOiBDcmVhdGVEQlByb3h5Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlREJQcm94eUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJQcm94eUFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5UXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVEQlByb3h5RW5kcG9pbnRDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlREJQcm94eUVuZHBvaW50KFxuICAgIGFyZ3M6IENyZWF0ZURCUHJveHlFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZURCUHJveHlFbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJQcm94eUVuZHBvaW50QWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IERCUHJveHlFbmRwb2ludFF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJQcm94eVN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZFN1Ym5ldEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZURCU2VjdXJpdHlHcm91cENvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVEQlNlY3VyaXR5R3JvdXAoXG4gICAgYXJnczogQ3JlYXRlREJTZWN1cml0eUdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlREJTZWN1cml0eUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQlNlY3VyaXR5R3JvdXBBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgREJTZWN1cml0eUdyb3VwTm90U3VwcG9ydGVkRmF1bHRFcnJvclxuICAgIHwgREJTZWN1cml0eUdyb3VwUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlREJTaGFyZEdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZURCU2hhcmRHcm91cChcbiAgICBhcmdzOiBDcmVhdGVEQlNoYXJkR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVEQlNoYXJkR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTaGFyZEdyb3VwQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRWUENOZXR3b3JrU3RhdGVGYXVsdEVycm9yXG4gICAgfCBNYXhEQlNoYXJkR3JvdXBMaW1pdFJlYWNoZWRFcnJvclxuICAgIHwgTmV0d29ya1R5cGVOb3RTdXBwb3J0ZWRFcnJvclxuICAgIHwgVW5zdXBwb3J0ZWREQkVuZ2luZVZlcnNpb25GYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIENyZWF0ZURCU25hcHNob3RDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlREJTbmFwc2hvdChcbiAgICBhcmdzOiBDcmVhdGVEQlNuYXBzaG90Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgQ3JlYXRlREJTbmFwc2hvdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTbmFwc2hvdEFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICAgIHwgU25hcHNob3RRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVEQlN1Ym5ldEdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZURCU3VibmV0R3JvdXAoXG4gICAgYXJnczogQ3JlYXRlREJTdWJuZXRHcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZURCU3VibmV0R3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCU3VibmV0R3JvdXBBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgREJTdWJuZXRHcm91cERvZXNOb3RDb3ZlckVub3VnaEFac0Vycm9yXG4gICAgfCBEQlN1Ym5ldEdyb3VwUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IERCU3VibmV0UXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVFdmVudFN1YnNjcmlwdGlvbkNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVFdmVudFN1YnNjcmlwdGlvbihcbiAgICBhcmdzOiBDcmVhdGVFdmVudFN1YnNjcmlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBFdmVudFN1YnNjcmlwdGlvblF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gICAgfCBTTlNJbnZhbGlkVG9waWNGYXVsdEVycm9yXG4gICAgfCBTTlNOb0F1dGhvcml6YXRpb25GYXVsdEVycm9yXG4gICAgfCBTTlNUb3BpY0Fybk5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgU291cmNlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBTdWJzY3JpcHRpb25BbHJlYWR5RXhpc3RGYXVsdEVycm9yXG4gICAgfCBTdWJzY3JpcHRpb25DYXRlZ29yeU5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVHbG9iYWxDbHVzdGVyQ29tbWFuZH1cbiAgICovXG4gIGNyZWF0ZUdsb2JhbENsdXN0ZXIoXG4gICAgYXJnczogQ3JlYXRlR2xvYmFsQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZUdsb2JhbENsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgR2xvYmFsQ2x1c3RlckFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBHbG9iYWxDbHVzdGVyUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlSW50ZWdyYXRpb25Db21tYW5kfVxuICAgKi9cbiAgY3JlYXRlSW50ZWdyYXRpb24oXG4gICAgYXJnczogQ3JlYXRlSW50ZWdyYXRpb25Db21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVJbnRlZ3JhdGlvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkluc3RhbmNlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnRlZ3JhdGlvbkFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBJbnRlZ3JhdGlvbkNvbmZsaWN0T3BlcmF0aW9uRmF1bHRFcnJvclxuICAgIHwgSW50ZWdyYXRpb25RdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgS01TS2V5Tm90QWNjZXNzaWJsZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgQ3JlYXRlT3B0aW9uR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgY3JlYXRlT3B0aW9uR3JvdXAoXG4gICAgYXJnczogQ3JlYXRlT3B0aW9uR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBDcmVhdGVPcHRpb25Hcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgT3B0aW9uR3JvdXBBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgT3B0aW9uR3JvdXBRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBDcmVhdGVUZW5hbnREYXRhYmFzZUNvbW1hbmR9XG4gICAqL1xuICBjcmVhdGVUZW5hbnREYXRhYmFzZShcbiAgICBhcmdzOiBDcmVhdGVUZW5hbnREYXRhYmFzZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIENyZWF0ZVRlbmFudERhdGFiYXNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkluc3RhbmNlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICAgIHwgVGVuYW50RGF0YWJhc2VBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgVGVuYW50RGF0YWJhc2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVCbHVlR3JlZW5EZXBsb3ltZW50Q29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUJsdWVHcmVlbkRlcGxveW1lbnQoXG4gICAgYXJnczogRGVsZXRlQmx1ZUdyZWVuRGVwbG95bWVudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUJsdWVHcmVlbkRlcGxveW1lbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJsdWVHcmVlbkRlcGxveW1lbnROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRCbHVlR3JlZW5EZXBsb3ltZW50U3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUN1c3RvbURCRW5naW5lVmVyc2lvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVDdXN0b21EQkVuZ2luZVZlcnNpb24oXG4gICAgYXJnczogRGVsZXRlQ3VzdG9tREJFbmdpbmVWZXJzaW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlQ3VzdG9tREJFbmdpbmVWZXJzaW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBDdXN0b21EQkVuZ2luZVZlcnNpb25Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRDdXN0b21EQkVuZ2luZVZlcnNpb25TdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlREJDbHVzdGVyQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURCQ2x1c3RlcihcbiAgICBhcmdzOiBEZWxldGVEQkNsdXN0ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3RlckF1dG9tYXRlZEJhY2t1cFF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3RlclNuYXBzaG90QWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTbmFwc2hvdFN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICAgIHwgU25hcHNob3RRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVEQkNsdXN0ZXJBdXRvbWF0ZWRCYWNrdXBDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlREJDbHVzdGVyQXV0b21hdGVkQmFja3VwKFxuICAgIGFyZ3M6IERlbGV0ZURCQ2x1c3RlckF1dG9tYXRlZEJhY2t1cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZURCQ2x1c3RlckF1dG9tYXRlZEJhY2t1cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJDbHVzdGVyQXV0b21hdGVkQmFja3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyQXV0b21hdGVkQmFja3VwU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZURCQ2x1c3RlckVuZHBvaW50Q29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURCQ2x1c3RlckVuZHBvaW50KFxuICAgIGFyZ3M6IERlbGV0ZURCQ2x1c3RlckVuZHBvaW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlREJDbHVzdGVyRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3RlckVuZHBvaW50Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyRW5kcG9pbnRTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXAoXG4gICAgYXJnczogRGVsZXRlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJQYXJhbWV0ZXJHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCUGFyYW1ldGVyR3JvdXBTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlREJDbHVzdGVyU25hcHNob3RDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlREJDbHVzdGVyU25hcHNob3QoXG4gICAgYXJnczogRGVsZXRlREJDbHVzdGVyU25hcHNob3RDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVEQkNsdXN0ZXJTbmFwc2hvdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJDbHVzdGVyU25hcHNob3ROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTbmFwc2hvdFN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVEQkluc3RhbmNlQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURCSW5zdGFuY2UoXG4gICAgYXJnczogRGVsZXRlREJJbnN0YW5jZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZURCSW5zdGFuY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTbmFwc2hvdEFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICAgIHwgU25hcHNob3RRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVEQkluc3RhbmNlQXV0b21hdGVkQmFja3VwQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXAoXG4gICAgYXJnczogRGVsZXRlREJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZURCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlQXV0b21hdGVkQmFja3VwU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZURCUGFyYW1ldGVyR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlREJQYXJhbWV0ZXJHcm91cChcbiAgICBhcmdzOiBEZWxldGVEQlBhcmFtZXRlckdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlREJQYXJhbWV0ZXJHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJQYXJhbWV0ZXJHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCUGFyYW1ldGVyR3JvdXBTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlREJQcm94eUNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVEQlByb3h5KFxuICAgIGFyZ3M6IERlbGV0ZURCUHJveHlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVEQlByb3h5Q29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERCUHJveHlOb3RGb3VuZEZhdWx0RXJyb3IgfCBJbnZhbGlkREJQcm94eVN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVEQlByb3h5RW5kcG9pbnRDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlREJQcm94eUVuZHBvaW50KFxuICAgIGFyZ3M6IERlbGV0ZURCUHJveHlFbmRwb2ludENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZURCUHJveHlFbmRwb2ludENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJQcm94eUVuZHBvaW50Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJQcm94eUVuZHBvaW50U3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZURCU2VjdXJpdHlHcm91cENvbW1hbmR9XG4gICAqL1xuICBkZWxldGVEQlNlY3VyaXR5R3JvdXAoXG4gICAgYXJnczogRGVsZXRlREJTZWN1cml0eUdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlREJTZWN1cml0eUdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQlNlY3VyaXR5R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlNlY3VyaXR5R3JvdXBTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlREJTaGFyZEdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURCU2hhcmRHcm91cChcbiAgICBhcmdzOiBEZWxldGVEQlNoYXJkR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVEQlNoYXJkR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCU2hhcmRHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCU2hhcmRHcm91cFN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVEQlNuYXBzaG90Q29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZURCU25hcHNob3QoXG4gICAgYXJnczogRGVsZXRlREJTbmFwc2hvdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZURCU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgREJTbmFwc2hvdE5vdEZvdW5kRmF1bHRFcnJvciB8IEludmFsaWREQlNuYXBzaG90U3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZURCU3VibmV0R3JvdXBDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlREJTdWJuZXRHcm91cChcbiAgICBhcmdzOiBEZWxldGVEQlN1Ym5ldEdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlREJTdWJuZXRHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJTdWJuZXRHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCU3VibmV0R3JvdXBTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlN1Ym5ldFN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVFdmVudFN1YnNjcmlwdGlvbkNvbW1hbmR9XG4gICAqL1xuICBkZWxldGVFdmVudFN1YnNjcmlwdGlvbihcbiAgICBhcmdzOiBEZWxldGVFdmVudFN1YnNjcmlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUV2ZW50U3Vic2NyaXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBJbnZhbGlkRXZlbnRTdWJzY3JpcHRpb25TdGF0ZUZhdWx0RXJyb3JcbiAgICB8IFN1YnNjcmlwdGlvbk5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZWxldGVHbG9iYWxDbHVzdGVyQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUdsb2JhbENsdXN0ZXIoXG4gICAgYXJnczogRGVsZXRlR2xvYmFsQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlbGV0ZUdsb2JhbENsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEdsb2JhbENsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRHbG9iYWxDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZUludGVncmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZUludGVncmF0aW9uKFxuICAgIGFyZ3M6IERlbGV0ZUludGVncmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlSW50ZWdyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVncmF0aW9uQ29uZmxpY3RPcGVyYXRpb25GYXVsdEVycm9yXG4gICAgfCBJbnRlZ3JhdGlvbk5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZEludGVncmF0aW9uU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlbGV0ZU9wdGlvbkdyb3VwQ29tbWFuZH1cbiAgICovXG4gIGRlbGV0ZU9wdGlvbkdyb3VwKFxuICAgIGFyZ3M6IERlbGV0ZU9wdGlvbkdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVsZXRlT3B0aW9uR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZE9wdGlvbkdyb3VwU3RhdGVGYXVsdEVycm9yIHwgT3B0aW9uR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVsZXRlVGVuYW50RGF0YWJhc2VDb21tYW5kfVxuICAgKi9cbiAgZGVsZXRlVGVuYW50RGF0YWJhc2UoXG4gICAgYXJnczogRGVsZXRlVGVuYW50RGF0YWJhc2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZWxldGVUZW5hbnREYXRhYmFzZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IFRlbmFudERhdGFiYXNlTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlcmVnaXN0ZXJEQlByb3h5VGFyZ2V0c0NvbW1hbmR9XG4gICAqL1xuICBkZXJlZ2lzdGVyREJQcm94eVRhcmdldHMoXG4gICAgYXJnczogRGVyZWdpc3RlckRCUHJveHlUYXJnZXRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVyZWdpc3RlckRCUHJveHlUYXJnZXRzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQlByb3h5Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5VGFyZ2V0R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCUHJveHlUYXJnZXROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlByb3h5U3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlQWNjb3VudEF0dHJpYnV0ZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVBY2NvdW50QXR0cmlidXRlcyhcbiAgICBhcmdzOiBEZXNjcmliZUFjY291bnRBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8RGVzY3JpYmVBY2NvdW50QXR0cmlidXRlc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVCbHVlR3JlZW5EZXBsb3ltZW50c0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZUJsdWVHcmVlbkRlcGxveW1lbnRzKFxuICAgIGFyZ3M6IERlc2NyaWJlQmx1ZUdyZWVuRGVwbG95bWVudHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUJsdWVHcmVlbkRlcGxveW1lbnRzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEJsdWVHcmVlbkRlcGxveW1lbnROb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVDZXJ0aWZpY2F0ZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVDZXJ0aWZpY2F0ZXMoXG4gICAgYXJnczogRGVzY3JpYmVDZXJ0aWZpY2F0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZUNlcnRpZmljYXRlc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBDZXJ0aWZpY2F0ZU5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURCQ2x1c3RlckF1dG9tYXRlZEJhY2t1cHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEQkNsdXN0ZXJBdXRvbWF0ZWRCYWNrdXBzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJDbHVzdGVyQXV0b21hdGVkQmFja3Vwc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlREJDbHVzdGVyQXV0b21hdGVkQmFja3Vwc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQkNsdXN0ZXJBdXRvbWF0ZWRCYWNrdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEQkNsdXN0ZXJCYWNrdHJhY2tzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlREJDbHVzdGVyQmFja3RyYWNrcyhcbiAgICBhcmdzOiBEZXNjcmliZURCQ2x1c3RlckJhY2t0cmFja3NDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURCQ2x1c3RlckJhY2t0cmFja3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3RlckJhY2t0cmFja05vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlREJDbHVzdGVyRW5kcG9pbnRzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlREJDbHVzdGVyRW5kcG9pbnRzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJDbHVzdGVyRW5kcG9pbnRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEQkNsdXN0ZXJFbmRwb2ludHNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgREJDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cHNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgREJQYXJhbWV0ZXJHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURCQ2x1c3RlclBhcmFtZXRlcnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEQkNsdXN0ZXJQYXJhbWV0ZXJzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJDbHVzdGVyUGFyYW1ldGVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlREJDbHVzdGVyUGFyYW1ldGVyc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQlBhcmFtZXRlckdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlREJDbHVzdGVyU25hcHNob3RBdHRyaWJ1dGVzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlREJDbHVzdGVyU25hcHNob3RBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJDbHVzdGVyU25hcHNob3RBdHRyaWJ1dGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEQkNsdXN0ZXJTbmFwc2hvdEF0dHJpYnV0ZXNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgREJDbHVzdGVyU25hcHNob3ROb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEQkNsdXN0ZXJTbmFwc2hvdHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEQkNsdXN0ZXJTbmFwc2hvdHMoXG4gICAgYXJnczogRGVzY3JpYmVEQkNsdXN0ZXJTbmFwc2hvdHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURCQ2x1c3RlclNuYXBzaG90c0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQkNsdXN0ZXJTbmFwc2hvdE5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURCQ2x1c3RlcnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEQkNsdXN0ZXJzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJDbHVzdGVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlREJDbHVzdGVyc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEQkVuZ2luZVZlcnNpb25zQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlREJFbmdpbmVWZXJzaW9ucyhcbiAgICBhcmdzOiBEZXNjcmliZURCRW5naW5lVmVyc2lvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZXNjcmliZURCRW5naW5lVmVyc2lvbnNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlREJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEQkluc3RhbmNlQXV0b21hdGVkQmFja3VwcyhcbiAgICBhcmdzOiBEZXNjcmliZURCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEQkluc3RhbmNlQXV0b21hdGVkQmFja3Vwc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQkluc3RhbmNlQXV0b21hdGVkQmFja3VwTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlREJJbnN0YW5jZXNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEQkluc3RhbmNlcyhcbiAgICBhcmdzOiBEZXNjcmliZURCSW5zdGFuY2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEQkluc3RhbmNlc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQkluc3RhbmNlTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlREJMb2dGaWxlc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURCTG9nRmlsZXMoXG4gICAgYXJnczogRGVzY3JpYmVEQkxvZ0ZpbGVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEQkxvZ0ZpbGVzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEQlBhcmFtZXRlckdyb3Vwc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURCUGFyYW1ldGVyR3JvdXBzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJQYXJhbWV0ZXJHcm91cHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURCUGFyYW1ldGVyR3JvdXBzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERCUGFyYW1ldGVyR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEQlBhcmFtZXRlcnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEQlBhcmFtZXRlcnMoXG4gICAgYXJnczogRGVzY3JpYmVEQlBhcmFtZXRlcnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURCUGFyYW1ldGVyc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQlBhcmFtZXRlckdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlREJQcm94aWVzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlREJQcm94aWVzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJQcm94aWVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEQlByb3hpZXNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgREJQcm94eU5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURCUHJveHlFbmRwb2ludHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEQlByb3h5RW5kcG9pbnRzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJQcm94eUVuZHBvaW50c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlREJQcm94eUVuZHBvaW50c0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQlByb3h5RW5kcG9pbnROb3RGb3VuZEZhdWx0RXJyb3IgfCBEQlByb3h5Tm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlREJQcm94eVRhcmdldEdyb3Vwc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURCUHJveHlUYXJnZXRHcm91cHMoXG4gICAgYXJnczogRGVzY3JpYmVEQlByb3h5VGFyZ2V0R3JvdXBzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEQlByb3h5VGFyZ2V0R3JvdXBzQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQlByb3h5Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5VGFyZ2V0R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlByb3h5U3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlREJQcm94eVRhcmdldHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEQlByb3h5VGFyZ2V0cyhcbiAgICBhcmdzOiBEZXNjcmliZURCUHJveHlUYXJnZXRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEQlByb3h5VGFyZ2V0c0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJQcm94eU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJQcm94eVRhcmdldEdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5VGFyZ2V0Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJQcm94eVN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURCUmVjb21tZW5kYXRpb25zQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlREJSZWNvbW1lbmRhdGlvbnMoXG4gICAgYXJnczogRGVzY3JpYmVEQlJlY29tbWVuZGF0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlc2NyaWJlREJSZWNvbW1lbmRhdGlvbnNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlREJTZWN1cml0eUdyb3Vwc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURCU2VjdXJpdHlHcm91cHMoXG4gICAgYXJnczogRGVzY3JpYmVEQlNlY3VyaXR5R3JvdXBzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVEQlNlY3VyaXR5R3JvdXBzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERCU2VjdXJpdHlHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURCU2hhcmRHcm91cHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVEQlNoYXJkR3JvdXBzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJTaGFyZEdyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlREJTaGFyZEdyb3Vwc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3IgfCBEQlNoYXJkR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEQlNuYXBzaG90QXR0cmlidXRlc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZURCU25hcHNob3RBdHRyaWJ1dGVzKFxuICAgIGFyZ3M6IERlc2NyaWJlREJTbmFwc2hvdEF0dHJpYnV0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURCU25hcHNob3RBdHRyaWJ1dGVzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERCU25hcHNob3ROb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVEQlNuYXBzaG90VGVuYW50RGF0YWJhc2VzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlREJTbmFwc2hvdFRlbmFudERhdGFiYXNlcyhcbiAgICBhcmdzOiBEZXNjcmliZURCU25hcHNob3RUZW5hbnREYXRhYmFzZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZURCU25hcHNob3RUZW5hbnREYXRhYmFzZXNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgREJTbmFwc2hvdE5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURCU25hcHNob3RzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlREJTbmFwc2hvdHMoXG4gICAgYXJnczogRGVzY3JpYmVEQlNuYXBzaG90c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlREJTbmFwc2hvdHNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgREJTbmFwc2hvdE5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZURCU3VibmV0R3JvdXBzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlREJTdWJuZXRHcm91cHMoXG4gICAgYXJnczogRGVzY3JpYmVEQlN1Ym5ldEdyb3Vwc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlREJTdWJuZXRHcm91cHNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgREJTdWJuZXRHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZUVuZ2luZURlZmF1bHRDbHVzdGVyUGFyYW1ldGVyc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZUVuZ2luZURlZmF1bHRDbHVzdGVyUGFyYW1ldGVycyhcbiAgICBhcmdzOiBEZXNjcmliZUVuZ2luZURlZmF1bHRDbHVzdGVyUGFyYW1ldGVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlRW5naW5lRGVmYXVsdENsdXN0ZXJQYXJhbWV0ZXJzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZUVuZ2luZURlZmF1bHRQYXJhbWV0ZXJzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRW5naW5lRGVmYXVsdFBhcmFtZXRlcnMoXG4gICAgYXJnczogRGVzY3JpYmVFbmdpbmVEZWZhdWx0UGFyYW1ldGVyc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlc2NyaWJlRW5naW5lRGVmYXVsdFBhcmFtZXRlcnNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRXZlbnRDYXRlZ29yaWVzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRXZlbnRDYXRlZ29yaWVzKFxuICAgIGFyZ3M6IERlc2NyaWJlRXZlbnRDYXRlZ29yaWVzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8RGVzY3JpYmVFdmVudENhdGVnb3JpZXNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRXZlbnRTdWJzY3JpcHRpb25zQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRXZlbnRTdWJzY3JpcHRpb25zKFxuICAgIGFyZ3M6IERlc2NyaWJlRXZlbnRTdWJzY3JpcHRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVFdmVudFN1YnNjcmlwdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgU3Vic2NyaXB0aW9uTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRXZlbnRzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlRXZlbnRzKFxuICAgIGFyZ3M6IERlc2NyaWJlRXZlbnRzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8RGVzY3JpYmVFdmVudHNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlRXhwb3J0VGFza3NDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVFeHBvcnRUYXNrcyhcbiAgICBhcmdzOiBEZXNjcmliZUV4cG9ydFRhc2tzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVFeHBvcnRUYXNrc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBFeHBvcnRUYXNrTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlR2xvYmFsQ2x1c3RlcnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVHbG9iYWxDbHVzdGVycyhcbiAgICBhcmdzOiBEZXNjcmliZUdsb2JhbENsdXN0ZXJzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVHbG9iYWxDbHVzdGVyc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBHbG9iYWxDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlSW50ZWdyYXRpb25zQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlSW50ZWdyYXRpb25zKFxuICAgIGFyZ3M6IERlc2NyaWJlSW50ZWdyYXRpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVJbnRlZ3JhdGlvbnNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW50ZWdyYXRpb25Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVPcHRpb25Hcm91cE9wdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVPcHRpb25Hcm91cE9wdGlvbnMoXG4gICAgYXJnczogRGVzY3JpYmVPcHRpb25Hcm91cE9wdGlvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZXNjcmliZU9wdGlvbkdyb3VwT3B0aW9uc0NvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVPcHRpb25Hcm91cHNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVPcHRpb25Hcm91cHMoXG4gICAgYXJnczogRGVzY3JpYmVPcHRpb25Hcm91cHNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEZXNjcmliZU9wdGlvbkdyb3Vwc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBPcHRpb25Hcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZU9yZGVyYWJsZURCSW5zdGFuY2VPcHRpb25zQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlT3JkZXJhYmxlREJJbnN0YW5jZU9wdGlvbnMoXG4gICAgYXJnczogRGVzY3JpYmVPcmRlcmFibGVEQkluc3RhbmNlT3B0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PERlc2NyaWJlT3JkZXJhYmxlREJJbnN0YW5jZU9wdGlvbnNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlUGVuZGluZ01haW50ZW5hbmNlQWN0aW9uc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVBlbmRpbmdNYWludGVuYW5jZUFjdGlvbnMoXG4gICAgYXJnczogRGVzY3JpYmVQZW5kaW5nTWFpbnRlbmFuY2VBY3Rpb25zQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVQZW5kaW5nTWFpbnRlbmFuY2VBY3Rpb25zQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFJlc291cmNlTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlUmVzZXJ2ZWREQkluc3RhbmNlc0NvbW1hbmR9XG4gICAqL1xuICBkZXNjcmliZVJlc2VydmVkREJJbnN0YW5jZXMoXG4gICAgYXJnczogRGVzY3JpYmVSZXNlcnZlZERCSW5zdGFuY2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVSZXNlcnZlZERCSW5zdGFuY2VzQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IFJlc2VydmVkREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVJlc2VydmVkREJJbnN0YW5jZXNPZmZlcmluZ3NDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVSZXNlcnZlZERCSW5zdGFuY2VzT2ZmZXJpbmdzKFxuICAgIGFyZ3M6IERlc2NyaWJlUmVzZXJ2ZWREQkluc3RhbmNlc09mZmVyaW5nc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlUmVzZXJ2ZWREQkluc3RhbmNlc09mZmVyaW5nc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBSZXNlcnZlZERCSW5zdGFuY2VzT2ZmZXJpbmdOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGVzY3JpYmVTb3VyY2VSZWdpb25zQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlU291cmNlUmVnaW9ucyhcbiAgICBhcmdzOiBEZXNjcmliZVNvdXJjZVJlZ2lvbnNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxEZXNjcmliZVNvdXJjZVJlZ2lvbnNDb21tYW5kT3V0cHV0LCBTZGtFcnJvcj47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERlc2NyaWJlVGVuYW50RGF0YWJhc2VzQ29tbWFuZH1cbiAgICovXG4gIGRlc2NyaWJlVGVuYW50RGF0YWJhc2VzKFxuICAgIGFyZ3M6IERlc2NyaWJlVGVuYW50RGF0YWJhc2VzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRGVzY3JpYmVUZW5hbnREYXRhYmFzZXNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBEZXNjcmliZVZhbGlkREJJbnN0YW5jZU1vZGlmaWNhdGlvbnNDb21tYW5kfVxuICAgKi9cbiAgZGVzY3JpYmVWYWxpZERCSW5zdGFuY2VNb2RpZmljYXRpb25zKFxuICAgIGFyZ3M6IERlc2NyaWJlVmFsaWREQkluc3RhbmNlTW9kaWZpY2F0aW9uc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIERlc2NyaWJlVmFsaWREQkluc3RhbmNlTW9kaWZpY2F0aW9uc0NvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQkluc3RhbmNlTm90Rm91bmRGYXVsdEVycm9yIHwgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRGlzYWJsZUh0dHBFbmRwb2ludENvbW1hbmR9XG4gICAqL1xuICBkaXNhYmxlSHR0cEVuZHBvaW50KFxuICAgIGFyZ3M6IERpc2FibGVIdHRwRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBEaXNhYmxlSHR0cEVuZHBvaW50Q29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IEludmFsaWRSZXNvdXJjZVN0YXRlRmF1bHRFcnJvciB8IFJlc291cmNlTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIERvd25sb2FkREJMb2dGaWxlUG9ydGlvbkNvbW1hbmR9XG4gICAqL1xuICBkb3dubG9hZERCTG9nRmlsZVBvcnRpb24oXG4gICAgYXJnczogRG93bmxvYWREQkxvZ0ZpbGVQb3J0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgRG93bmxvYWREQkxvZ0ZpbGVQb3J0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3IgfCBEQkxvZ0ZpbGVOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRW5hYmxlSHR0cEVuZHBvaW50Q29tbWFuZH1cbiAgICovXG4gIGVuYWJsZUh0dHBFbmRwb2ludChcbiAgICBhcmdzOiBFbmFibGVIdHRwRW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBFbmFibGVIdHRwRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZFJlc291cmNlU3RhdGVGYXVsdEVycm9yIHwgUmVzb3VyY2VOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgRmFpbG92ZXJEQkNsdXN0ZXJDb21tYW5kfVxuICAgKi9cbiAgZmFpbG92ZXJEQkNsdXN0ZXIoXG4gICAgYXJnczogRmFpbG92ZXJEQkNsdXN0ZXJDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBGYWlsb3ZlckRCQ2x1c3RlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBGYWlsb3Zlckdsb2JhbENsdXN0ZXJDb21tYW5kfVxuICAgKi9cbiAgZmFpbG92ZXJHbG9iYWxDbHVzdGVyKFxuICAgIGFyZ3M6IEZhaWxvdmVyR2xvYmFsQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIEZhaWxvdmVyR2xvYmFsQ2x1c3RlckNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBHbG9iYWxDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkR2xvYmFsQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBMaXN0VGFnc0ZvclJlc291cmNlQ29tbWFuZH1cbiAgICovXG4gIGxpc3RUYWdzRm9yUmVzb3VyY2UoXG4gICAgYXJnczogTGlzdFRhZ3NGb3JSZXNvdXJjZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIExpc3RUYWdzRm9yUmVzb3VyY2VDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEJsdWVHcmVlbkRlcGxveW1lbnROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJQcm94eU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJQcm94eVRhcmdldEdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlNuYXBzaG90Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlNuYXBzaG90VGVuYW50RGF0YWJhc2VOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludGVncmF0aW9uTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBUZW5hbnREYXRhYmFzZU5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBNb2RpZnlBY3Rpdml0eVN0cmVhbUNvbW1hbmR9XG4gICAqL1xuICBtb2RpZnlBY3Rpdml0eVN0cmVhbShcbiAgICBhcmdzOiBNb2RpZnlBY3Rpdml0eVN0cmVhbUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIE1vZGlmeUFjdGl2aXR5U3RyZWFtQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkluc3RhbmNlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICAgIHwgUmVzb3VyY2VOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTW9kaWZ5Q2VydGlmaWNhdGVzQ29tbWFuZH1cbiAgICovXG4gIG1vZGlmeUNlcnRpZmljYXRlcyhcbiAgICBhcmdzOiBNb2RpZnlDZXJ0aWZpY2F0ZXNDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBNb2RpZnlDZXJ0aWZpY2F0ZXNDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgQ2VydGlmaWNhdGVOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTW9kaWZ5Q3VycmVudERCQ2x1c3RlckNhcGFjaXR5Q29tbWFuZH1cbiAgICovXG4gIG1vZGlmeUN1cnJlbnREQkNsdXN0ZXJDYXBhY2l0eShcbiAgICBhcmdzOiBNb2RpZnlDdXJyZW50REJDbHVzdGVyQ2FwYWNpdHlDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBNb2RpZnlDdXJyZW50REJDbHVzdGVyQ2FwYWNpdHlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlckNhcGFjaXR5RmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBNb2RpZnlDdXN0b21EQkVuZ2luZVZlcnNpb25Db21tYW5kfVxuICAgKi9cbiAgbW9kaWZ5Q3VzdG9tREJFbmdpbmVWZXJzaW9uKFxuICAgIGFyZ3M6IE1vZGlmeUN1c3RvbURCRW5naW5lVmVyc2lvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIE1vZGlmeUN1c3RvbURCRW5naW5lVmVyc2lvbkNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQ3VzdG9tREJFbmdpbmVWZXJzaW9uTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkQ3VzdG9tREJFbmdpbmVWZXJzaW9uU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE1vZGlmeURCQ2x1c3RlckNvbW1hbmR9XG4gICAqL1xuICBtb2RpZnlEQkNsdXN0ZXIoXG4gICAgYXJnczogTW9kaWZ5REJDbHVzdGVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTW9kaWZ5REJDbHVzdGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkNsdXN0ZXJBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJJbnN0YW5jZUFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQlN1Ym5ldEdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEb21haW5Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJTZWN1cml0eUdyb3VwU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJTdWJuZXRHcm91cFN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZFN1Ym5ldEVycm9yXG4gICAgfCBJbnZhbGlkVlBDTmV0d29ya1N0YXRlRmF1bHRFcnJvclxuICAgIHwgT3B0aW9uR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IFN0b3JhZ2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgU3RvcmFnZVR5cGVOb3RBdmFpbGFibGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE1vZGlmeURCQ2x1c3RlckVuZHBvaW50Q29tbWFuZH1cbiAgICovXG4gIG1vZGlmeURCQ2x1c3RlckVuZHBvaW50KFxuICAgIGFyZ3M6IE1vZGlmeURCQ2x1c3RlckVuZHBvaW50Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTW9kaWZ5REJDbHVzdGVyRW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3RlckVuZHBvaW50Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkluc3RhbmNlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyRW5kcG9pbnRTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE1vZGlmeURCQ2x1c3RlclBhcmFtZXRlckdyb3VwQ29tbWFuZH1cbiAgICovXG4gIG1vZGlmeURCQ2x1c3RlclBhcmFtZXRlckdyb3VwKFxuICAgIGFyZ3M6IE1vZGlmeURCQ2x1c3RlclBhcmFtZXRlckdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTW9kaWZ5REJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCUGFyYW1ldGVyR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlBhcmFtZXRlckdyb3VwU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE1vZGlmeURCQ2x1c3RlclNuYXBzaG90QXR0cmlidXRlQ29tbWFuZH1cbiAgICovXG4gIG1vZGlmeURCQ2x1c3RlclNuYXBzaG90QXR0cmlidXRlKFxuICAgIGFyZ3M6IE1vZGlmeURCQ2x1c3RlclNuYXBzaG90QXR0cmlidXRlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTW9kaWZ5REJDbHVzdGVyU25hcHNob3RBdHRyaWJ1dGVDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3RlclNuYXBzaG90Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU25hcHNob3RTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IFNoYXJlZFNuYXBzaG90UXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTW9kaWZ5REJJbnN0YW5jZUNvbW1hbmR9XG4gICAqL1xuICBtb2RpZnlEQkluc3RhbmNlKFxuICAgIGFyZ3M6IE1vZGlmeURCSW5zdGFuY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBNb2RpZnlEQkluc3RhbmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBCYWNrdXBQb2xpY3lOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IENlcnRpZmljYXRlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkluc3RhbmNlQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCUGFyYW1ldGVyR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU2VjdXJpdHlHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJVcGdyYWRlRGVwZW5kZW5jeUZhaWx1cmVGYXVsdEVycm9yXG4gICAgfCBEb21haW5Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEluc3VmZmljaWVudERCSW5zdGFuY2VDYXBhY2l0eUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJTZWN1cml0eUdyb3VwU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkVlBDTmV0d29ya1N0YXRlRmF1bHRFcnJvclxuICAgIHwgS01TS2V5Tm90QWNjZXNzaWJsZUZhdWx0RXJyb3JcbiAgICB8IE5ldHdvcmtUeXBlTm90U3VwcG9ydGVkRXJyb3JcbiAgICB8IE9wdGlvbkdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBQcm92aXNpb25lZElvcHNOb3RBdmFpbGFibGVJbkFaRmF1bHRFcnJvclxuICAgIHwgU3RvcmFnZVF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gICAgfCBTdG9yYWdlVHlwZU5vdFN1cHBvcnRlZEZhdWx0RXJyb3JcbiAgICB8IFRlbmFudERhdGFiYXNlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTW9kaWZ5REJQYXJhbWV0ZXJHcm91cENvbW1hbmR9XG4gICAqL1xuICBtb2RpZnlEQlBhcmFtZXRlckdyb3VwKFxuICAgIGFyZ3M6IE1vZGlmeURCUGFyYW1ldGVyR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBNb2RpZnlEQlBhcmFtZXRlckdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQlBhcmFtZXRlckdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJQYXJhbWV0ZXJHcm91cFN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBNb2RpZnlEQlByb3h5Q29tbWFuZH1cbiAgICovXG4gIG1vZGlmeURCUHJveHkoXG4gICAgYXJnczogTW9kaWZ5REJQcm94eUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIE1vZGlmeURCUHJveHlDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCUHJveHlBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgREJQcm94eU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCUHJveHlTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTW9kaWZ5REJQcm94eUVuZHBvaW50Q29tbWFuZH1cbiAgICovXG4gIG1vZGlmeURCUHJveHlFbmRwb2ludChcbiAgICBhcmdzOiBNb2RpZnlEQlByb3h5RW5kcG9pbnRDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBNb2RpZnlEQlByb3h5RW5kcG9pbnRDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCUHJveHlFbmRwb2ludEFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5RW5kcG9pbnROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlByb3h5RW5kcG9pbnRTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlByb3h5U3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE1vZGlmeURCUHJveHlUYXJnZXRHcm91cENvbW1hbmR9XG4gICAqL1xuICBtb2RpZnlEQlByb3h5VGFyZ2V0R3JvdXAoXG4gICAgYXJnczogTW9kaWZ5REJQcm94eVRhcmdldEdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTW9kaWZ5REJQcm94eVRhcmdldEdyb3VwQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQlByb3h5Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5VGFyZ2V0R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlByb3h5U3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE1vZGlmeURCUmVjb21tZW5kYXRpb25Db21tYW5kfVxuICAgKi9cbiAgbW9kaWZ5REJSZWNvbW1lbmRhdGlvbihcbiAgICBhcmdzOiBNb2RpZnlEQlJlY29tbWVuZGF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8TW9kaWZ5REJSZWNvbW1lbmRhdGlvbkNvbW1hbmRPdXRwdXQsIFNka0Vycm9yPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTW9kaWZ5REJTaGFyZEdyb3VwQ29tbWFuZH1cbiAgICovXG4gIG1vZGlmeURCU2hhcmRHcm91cChcbiAgICBhcmdzOiBNb2RpZnlEQlNoYXJkR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBNb2RpZnlEQlNoYXJkR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCU2hhcmRHcm91cEFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBEQlNoYXJkR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTW9kaWZ5REJTbmFwc2hvdENvbW1hbmR9XG4gICAqL1xuICBtb2RpZnlEQlNuYXBzaG90KFxuICAgIGFyZ3M6IE1vZGlmeURCU25hcHNob3RDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBNb2RpZnlEQlNuYXBzaG90Q29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERCU25hcHNob3ROb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTW9kaWZ5REJTbmFwc2hvdEF0dHJpYnV0ZUNvbW1hbmR9XG4gICAqL1xuICBtb2RpZnlEQlNuYXBzaG90QXR0cmlidXRlKFxuICAgIGFyZ3M6IE1vZGlmeURCU25hcHNob3RBdHRyaWJ1dGVDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBNb2RpZnlEQlNuYXBzaG90QXR0cmlidXRlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQlNuYXBzaG90Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJTbmFwc2hvdFN0YXRlRmF1bHRFcnJvclxuICAgIHwgU2hhcmVkU25hcHNob3RRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBNb2RpZnlEQlN1Ym5ldEdyb3VwQ29tbWFuZH1cbiAgICovXG4gIG1vZGlmeURCU3VibmV0R3JvdXAoXG4gICAgYXJnczogTW9kaWZ5REJTdWJuZXRHcm91cENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIE1vZGlmeURCU3VibmV0R3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCU3VibmV0R3JvdXBEb2VzTm90Q292ZXJFbm91Z2hBWnNFcnJvclxuICAgIHwgREJTdWJuZXRHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTdWJuZXRRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZFN1Ym5ldEVycm9yXG4gICAgfCBTdWJuZXRBbHJlYWR5SW5Vc2VFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBNb2RpZnlFdmVudFN1YnNjcmlwdGlvbkNvbW1hbmR9XG4gICAqL1xuICBtb2RpZnlFdmVudFN1YnNjcmlwdGlvbihcbiAgICBhcmdzOiBNb2RpZnlFdmVudFN1YnNjcmlwdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIE1vZGlmeUV2ZW50U3Vic2NyaXB0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBFdmVudFN1YnNjcmlwdGlvblF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gICAgfCBTTlNJbnZhbGlkVG9waWNGYXVsdEVycm9yXG4gICAgfCBTTlNOb0F1dGhvcml6YXRpb25GYXVsdEVycm9yXG4gICAgfCBTTlNUb3BpY0Fybk5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgU3Vic2NyaXB0aW9uQ2F0ZWdvcnlOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IFN1YnNjcmlwdGlvbk5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBNb2RpZnlHbG9iYWxDbHVzdGVyQ29tbWFuZH1cbiAgICovXG4gIG1vZGlmeUdsb2JhbENsdXN0ZXIoXG4gICAgYXJnczogTW9kaWZ5R2xvYmFsQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIE1vZGlmeUdsb2JhbENsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEdsb2JhbENsdXN0ZXJBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgR2xvYmFsQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRHbG9iYWxDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE1vZGlmeUludGVncmF0aW9uQ29tbWFuZH1cbiAgICovXG4gIG1vZGlmeUludGVncmF0aW9uKFxuICAgIGFyZ3M6IE1vZGlmeUludGVncmF0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTW9kaWZ5SW50ZWdyYXRpb25Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEludGVncmF0aW9uQ29uZmxpY3RPcGVyYXRpb25GYXVsdEVycm9yXG4gICAgfCBJbnRlZ3JhdGlvbk5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZEludGVncmF0aW9uU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIE1vZGlmeU9wdGlvbkdyb3VwQ29tbWFuZH1cbiAgICovXG4gIG1vZGlmeU9wdGlvbkdyb3VwKFxuICAgIGFyZ3M6IE1vZGlmeU9wdGlvbkdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgTW9kaWZ5T3B0aW9uR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgSW52YWxpZE9wdGlvbkdyb3VwU3RhdGVGYXVsdEVycm9yIHwgT3B0aW9uR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgTW9kaWZ5VGVuYW50RGF0YWJhc2VDb21tYW5kfVxuICAgKi9cbiAgbW9kaWZ5VGVuYW50RGF0YWJhc2UoXG4gICAgYXJnczogTW9kaWZ5VGVuYW50RGF0YWJhc2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBNb2RpZnlUZW5hbnREYXRhYmFzZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IFRlbmFudERhdGFiYXNlQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IFRlbmFudERhdGFiYXNlTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFByb21vdGVSZWFkUmVwbGljYUNvbW1hbmR9XG4gICAqL1xuICBwcm9tb3RlUmVhZFJlcGxpY2EoXG4gICAgYXJnczogUHJvbW90ZVJlYWRSZXBsaWNhQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHJvbW90ZVJlYWRSZXBsaWNhQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3IgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBQcm9tb3RlUmVhZFJlcGxpY2FEQkNsdXN0ZXJDb21tYW5kfVxuICAgKi9cbiAgcHJvbW90ZVJlYWRSZXBsaWNhREJDbHVzdGVyKFxuICAgIGFyZ3M6IFByb21vdGVSZWFkUmVwbGljYURCQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFByb21vdGVSZWFkUmVwbGljYURCQ2x1c3RlckNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3IgfCBJbnZhbGlkREJDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFB1cmNoYXNlUmVzZXJ2ZWREQkluc3RhbmNlc09mZmVyaW5nQ29tbWFuZH1cbiAgICovXG4gIHB1cmNoYXNlUmVzZXJ2ZWREQkluc3RhbmNlc09mZmVyaW5nKFxuICAgIGFyZ3M6IFB1cmNoYXNlUmVzZXJ2ZWREQkluc3RhbmNlc09mZmVyaW5nQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUHVyY2hhc2VSZXNlcnZlZERCSW5zdGFuY2VzT2ZmZXJpbmdDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IFJlc2VydmVkREJJbnN0YW5jZUFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBSZXNlcnZlZERCSW5zdGFuY2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgUmVzZXJ2ZWREQkluc3RhbmNlc09mZmVyaW5nTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlYm9vdERCQ2x1c3RlckNvbW1hbmR9XG4gICAqL1xuICByZWJvb3REQkNsdXN0ZXIoXG4gICAgYXJnczogUmVib290REJDbHVzdGVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVib290REJDbHVzdGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlYm9vdERCSW5zdGFuY2VDb21tYW5kfVxuICAgKi9cbiAgcmVib290REJJbnN0YW5jZShcbiAgICBhcmdzOiBSZWJvb3REQkluc3RhbmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVib290REJJbnN0YW5jZUNvbW1hbmRPdXRwdXQsXG4gICAgU2RrRXJyb3IgfCBEQkluc3RhbmNlTm90Rm91bmRGYXVsdEVycm9yIHwgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVib290REJTaGFyZEdyb3VwQ29tbWFuZH1cbiAgICovXG4gIHJlYm9vdERCU2hhcmRHcm91cChcbiAgICBhcmdzOiBSZWJvb3REQlNoYXJkR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZWJvb3REQlNoYXJkR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCU2hhcmRHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCU2hhcmRHcm91cFN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZWdpc3RlckRCUHJveHlUYXJnZXRzQ29tbWFuZH1cbiAgICovXG4gIHJlZ2lzdGVyREJQcm94eVRhcmdldHMoXG4gICAgYXJnczogUmVnaXN0ZXJEQlByb3h5VGFyZ2V0c0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlZ2lzdGVyREJQcm94eVRhcmdldHNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJQcm94eU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJQcm94eVRhcmdldEFscmVhZHlSZWdpc3RlcmVkRmF1bHRFcnJvclxuICAgIHwgREJQcm94eVRhcmdldEdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnN1ZmZpY2llbnRBdmFpbGFibGVJUHNJblN1Ym5ldEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJQcm94eVN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZW1vdmVGcm9tR2xvYmFsQ2x1c3RlckNvbW1hbmR9XG4gICAqL1xuICByZW1vdmVGcm9tR2xvYmFsQ2x1c3RlcihcbiAgICBhcmdzOiBSZW1vdmVGcm9tR2xvYmFsQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlbW92ZUZyb21HbG9iYWxDbHVzdGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEdsb2JhbENsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRHbG9iYWxDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlbW92ZVJvbGVGcm9tREJDbHVzdGVyQ29tbWFuZH1cbiAgICovXG4gIHJlbW92ZVJvbGVGcm9tREJDbHVzdGVyKFxuICAgIGFyZ3M6IFJlbW92ZVJvbGVGcm9tREJDbHVzdGVyQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVtb3ZlUm9sZUZyb21EQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyUm9sZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZW1vdmVSb2xlRnJvbURCSW5zdGFuY2VDb21tYW5kfVxuICAgKi9cbiAgcmVtb3ZlUm9sZUZyb21EQkluc3RhbmNlKFxuICAgIGFyZ3M6IFJlbW92ZVJvbGVGcm9tREJJbnN0YW5jZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlbW92ZVJvbGVGcm9tREJJbnN0YW5jZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJJbnN0YW5jZVJvbGVOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlbW92ZVNvdXJjZUlkZW50aWZpZXJGcm9tU3Vic2NyaXB0aW9uQ29tbWFuZH1cbiAgICovXG4gIHJlbW92ZVNvdXJjZUlkZW50aWZpZXJGcm9tU3Vic2NyaXB0aW9uKFxuICAgIGFyZ3M6IFJlbW92ZVNvdXJjZUlkZW50aWZpZXJGcm9tU3Vic2NyaXB0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVtb3ZlU291cmNlSWRlbnRpZmllckZyb21TdWJzY3JpcHRpb25Db21tYW5kT3V0cHV0LFxuICAgIFNka0Vycm9yIHwgU291cmNlTm90Rm91bmRGYXVsdEVycm9yIHwgU3Vic2NyaXB0aW9uTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlbW92ZVRhZ3NGcm9tUmVzb3VyY2VDb21tYW5kfVxuICAgKi9cbiAgcmVtb3ZlVGFnc0Zyb21SZXNvdXJjZShcbiAgICBhcmdzOiBSZW1vdmVUYWdzRnJvbVJlc291cmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVtb3ZlVGFnc0Zyb21SZXNvdXJjZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgQmx1ZUdyZWVuRGVwbG95bWVudE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkluc3RhbmNlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlByb3h5VGFyZ2V0R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU25hcHNob3ROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU25hcHNob3RUZW5hbnREYXRhYmFzZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW50ZWdyYXRpb25Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IFRlbmFudERhdGFiYXNlTm90Rm91bmRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc2V0REJDbHVzdGVyUGFyYW1ldGVyR3JvdXBDb21tYW5kfVxuICAgKi9cbiAgcmVzZXREQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cChcbiAgICBhcmdzOiBSZXNldERCQ2x1c3RlclBhcmFtZXRlckdyb3VwQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVzZXREQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJQYXJhbWV0ZXJHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCUGFyYW1ldGVyR3JvdXBTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgUmVzZXREQlBhcmFtZXRlckdyb3VwQ29tbWFuZH1cbiAgICovXG4gIHJlc2V0REJQYXJhbWV0ZXJHcm91cChcbiAgICBhcmdzOiBSZXNldERCUGFyYW1ldGVyR3JvdXBDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBSZXNldERCUGFyYW1ldGVyR3JvdXBDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCUGFyYW1ldGVyR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlBhcmFtZXRlckdyb3VwU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc3RvcmVEQkNsdXN0ZXJGcm9tUzNDb21tYW5kfVxuICAgKi9cbiAgcmVzdG9yZURCQ2x1c3RlckZyb21TMyhcbiAgICBhcmdzOiBSZXN0b3JlREJDbHVzdGVyRnJvbVMzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVzdG9yZURCQ2x1c3RlckZyb21TM0NvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJDbHVzdGVyQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyUGFyYW1ldGVyR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3RlclF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gICAgfCBEQlN1Ym5ldEdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEb21haW5Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEluc3VmZmljaWVudFN0b3JhZ2VDbHVzdGVyQ2FwYWNpdHlGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJTdWJuZXRHcm91cFN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZFMzQnVja2V0RmF1bHRFcnJvclxuICAgIHwgSW52YWxpZFN1Ym5ldEVycm9yXG4gICAgfCBJbnZhbGlkVlBDTmV0d29ya1N0YXRlRmF1bHRFcnJvclxuICAgIHwgS01TS2V5Tm90QWNjZXNzaWJsZUZhdWx0RXJyb3JcbiAgICB8IFN0b3JhZ2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgU3RvcmFnZVR5cGVOb3RTdXBwb3J0ZWRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc3RvcmVEQkNsdXN0ZXJGcm9tU25hcHNob3RDb21tYW5kfVxuICAgKi9cbiAgcmVzdG9yZURCQ2x1c3RlckZyb21TbmFwc2hvdChcbiAgICBhcmdzOiBSZXN0b3JlREJDbHVzdGVyRnJvbVNuYXBzaG90Q29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVzdG9yZURCQ2x1c3RlckZyb21TbmFwc2hvdENvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJDbHVzdGVyQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3RlclBhcmFtZXRlckdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyU25hcHNob3ROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU25hcHNob3ROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU3VibmV0R3JvdXBEb2VzTm90Q292ZXJFbm91Z2hBWnNFcnJvclxuICAgIHwgREJTdWJuZXRHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgRG9tYWluTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnN1ZmZpY2llbnREQkNsdXN0ZXJDYXBhY2l0eUZhdWx0RXJyb3JcbiAgICB8IEluc3VmZmljaWVudERCSW5zdGFuY2VDYXBhY2l0eUZhdWx0RXJyb3JcbiAgICB8IEluc3VmZmljaWVudFN0b3JhZ2VDbHVzdGVyQ2FwYWNpdHlGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU25hcHNob3RTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJTbmFwc2hvdFN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZFJlc3RvcmVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkU3VibmV0RXJyb3JcbiAgICB8IEludmFsaWRWUENOZXR3b3JrU3RhdGVGYXVsdEVycm9yXG4gICAgfCBLTVNLZXlOb3RBY2Nlc3NpYmxlRmF1bHRFcnJvclxuICAgIHwgT3B0aW9uR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IFN0b3JhZ2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXN0b3JlREJDbHVzdGVyVG9Qb2ludEluVGltZUNvbW1hbmR9XG4gICAqL1xuICByZXN0b3JlREJDbHVzdGVyVG9Qb2ludEluVGltZShcbiAgICBhcmdzOiBSZXN0b3JlREJDbHVzdGVyVG9Qb2ludEluVGltZUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlc3RvcmVEQkNsdXN0ZXJUb1BvaW50SW5UaW1lQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkNsdXN0ZXJBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyQXV0b21hdGVkQmFja3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3RlclBhcmFtZXRlckdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgREJDbHVzdGVyU25hcHNob3ROb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU3VibmV0R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERvbWFpbk5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW5zdWZmaWNpZW50REJDbHVzdGVyQ2FwYWNpdHlGYXVsdEVycm9yXG4gICAgfCBJbnN1ZmZpY2llbnREQkluc3RhbmNlQ2FwYWNpdHlGYXVsdEVycm9yXG4gICAgfCBJbnN1ZmZpY2llbnRTdG9yYWdlQ2x1c3RlckNhcGFjaXR5RmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclNuYXBzaG90U3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJTbmFwc2hvdFN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZFJlc3RvcmVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkU3VibmV0RXJyb3JcbiAgICB8IEludmFsaWRWUENOZXR3b3JrU3RhdGVGYXVsdEVycm9yXG4gICAgfCBLTVNLZXlOb3RBY2Nlc3NpYmxlRmF1bHRFcnJvclxuICAgIHwgT3B0aW9uR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IFN0b3JhZ2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXN0b3JlREJJbnN0YW5jZUZyb21EQlNuYXBzaG90Q29tbWFuZH1cbiAgICovXG4gIHJlc3RvcmVEQkluc3RhbmNlRnJvbURCU25hcHNob3QoXG4gICAgYXJnczogUmVzdG9yZURCSW5zdGFuY2VGcm9tREJTbmFwc2hvdENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJlc3RvcmVEQkluc3RhbmNlRnJvbURCU25hcHNob3RDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEJhY2t1cFBvbGljeU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgQ2VydGlmaWNhdGVOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3RlclNuYXBzaG90Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkluc3RhbmNlQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IERCUGFyYW1ldGVyR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU2VjdXJpdHlHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTbmFwc2hvdE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTdWJuZXRHcm91cERvZXNOb3RDb3ZlckVub3VnaEFac0Vycm9yXG4gICAgfCBEQlN1Ym5ldEdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEb21haW5Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEluc3RhbmNlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IEluc3VmZmljaWVudERCSW5zdGFuY2VDYXBhY2l0eUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQlNuYXBzaG90U3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkUmVzdG9yZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRFcnJvclxuICAgIHwgSW52YWxpZFZQQ05ldHdvcmtTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEtNU0tleU5vdEFjY2Vzc2libGVGYXVsdEVycm9yXG4gICAgfCBOZXR3b3JrVHlwZU5vdFN1cHBvcnRlZEVycm9yXG4gICAgfCBPcHRpb25Hcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgUHJvdmlzaW9uZWRJb3BzTm90QXZhaWxhYmxlSW5BWkZhdWx0RXJyb3JcbiAgICB8IFN0b3JhZ2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgU3RvcmFnZVR5cGVOb3RTdXBwb3J0ZWRGYXVsdEVycm9yXG4gICAgfCBUZW5hbnREYXRhYmFzZVF1b3RhRXhjZWVkZWRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc3RvcmVEQkluc3RhbmNlRnJvbVMzQ29tbWFuZH1cbiAgICovXG4gIHJlc3RvcmVEQkluc3RhbmNlRnJvbVMzKFxuICAgIGFyZ3M6IFJlc3RvcmVEQkluc3RhbmNlRnJvbVMzQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVzdG9yZURCSW5zdGFuY2VGcm9tUzNDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEJhY2t1cFBvbGljeU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgQ2VydGlmaWNhdGVOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCSW5zdGFuY2VBbHJlYWR5RXhpc3RzRmF1bHRFcnJvclxuICAgIHwgREJQYXJhbWV0ZXJHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTZWN1cml0eUdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlN1Ym5ldEdyb3VwRG9lc05vdENvdmVyRW5vdWdoQVpzRXJyb3JcbiAgICB8IERCU3VibmV0R3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEluc3RhbmNlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IEluc3VmZmljaWVudERCSW5zdGFuY2VDYXBhY2l0eUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRTM0J1Y2tldEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRFcnJvclxuICAgIHwgSW52YWxpZFZQQ05ldHdvcmtTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEtNU0tleU5vdEFjY2Vzc2libGVGYXVsdEVycm9yXG4gICAgfCBOZXR3b3JrVHlwZU5vdFN1cHBvcnRlZEVycm9yXG4gICAgfCBPcHRpb25Hcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgUHJvdmlzaW9uZWRJb3BzTm90QXZhaWxhYmxlSW5BWkZhdWx0RXJyb3JcbiAgICB8IFN0b3JhZ2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICAgIHwgU3RvcmFnZVR5cGVOb3RTdXBwb3J0ZWRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFJlc3RvcmVEQkluc3RhbmNlVG9Qb2ludEluVGltZUNvbW1hbmR9XG4gICAqL1xuICByZXN0b3JlREJJbnN0YW5jZVRvUG9pbnRJblRpbWUoXG4gICAgYXJnczogUmVzdG9yZURCSW5zdGFuY2VUb1BvaW50SW5UaW1lQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgUmVzdG9yZURCSW5zdGFuY2VUb1BvaW50SW5UaW1lQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBCYWNrdXBQb2xpY3lOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IENlcnRpZmljYXRlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkluc3RhbmNlQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCUGFyYW1ldGVyR3JvdXBOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU2VjdXJpdHlHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTdWJuZXRHcm91cERvZXNOb3RDb3ZlckVub3VnaEFac0Vycm9yXG4gICAgfCBEQlN1Ym5ldEdyb3VwTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEb21haW5Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEluc3RhbmNlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IEluc3VmZmljaWVudERCSW5zdGFuY2VDYXBhY2l0eUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkUmVzdG9yZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRFcnJvclxuICAgIHwgSW52YWxpZFZQQ05ldHdvcmtTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEtNU0tleU5vdEFjY2Vzc2libGVGYXVsdEVycm9yXG4gICAgfCBOZXR3b3JrVHlwZU5vdFN1cHBvcnRlZEVycm9yXG4gICAgfCBPcHRpb25Hcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgUG9pbnRJblRpbWVSZXN0b3JlTm90RW5hYmxlZEZhdWx0RXJyb3JcbiAgICB8IFByb3Zpc2lvbmVkSW9wc05vdEF2YWlsYWJsZUluQVpGYXVsdEVycm9yXG4gICAgfCBTdG9yYWdlUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IFN0b3JhZ2VUeXBlTm90U3VwcG9ydGVkRmF1bHRFcnJvclxuICAgIHwgVGVuYW50RGF0YWJhc2VRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBSZXZva2VEQlNlY3VyaXR5R3JvdXBJbmdyZXNzQ29tbWFuZH1cbiAgICovXG4gIHJldm9rZURCU2VjdXJpdHlHcm91cEluZ3Jlc3MoXG4gICAgYXJnczogUmV2b2tlREJTZWN1cml0eUdyb3VwSW5ncmVzc0NvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFJldm9rZURCU2VjdXJpdHlHcm91cEluZ3Jlc3NDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IEF1dGhvcml6YXRpb25Ob3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU2VjdXJpdHlHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCU2VjdXJpdHlHcm91cFN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTdGFydEFjdGl2aXR5U3RyZWFtQ29tbWFuZH1cbiAgICovXG4gIHN0YXJ0QWN0aXZpdHlTdHJlYW0oXG4gICAgYXJnczogU3RhcnRBY3Rpdml0eVN0cmVhbUNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN0YXJ0QWN0aXZpdHlTdHJlYW1Db21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEtNU0tleU5vdEFjY2Vzc2libGVGYXVsdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTdGFydERCQ2x1c3RlckNvbW1hbmR9XG4gICAqL1xuICBzdGFydERCQ2x1c3RlcihcbiAgICBhcmdzOiBTdGFydERCQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN0YXJ0REJDbHVzdGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0YXJ0REJJbnN0YW5jZUNvbW1hbmR9XG4gICAqL1xuICBzdGFydERCSW5zdGFuY2UoXG4gICAgYXJnczogU3RhcnREQkluc3RhbmNlQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3RhcnREQkluc3RhbmNlQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBBdXRob3JpemF0aW9uTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCU3VibmV0R3JvdXBEb2VzTm90Q292ZXJFbm91Z2hBWnNFcnJvclxuICAgIHwgREJTdWJuZXRHcm91cE5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW5zdWZmaWNpZW50REJJbnN0YW5jZUNhcGFjaXR5RmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRTdWJuZXRFcnJvclxuICAgIHwgSW52YWxpZFZQQ05ldHdvcmtTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEtNU0tleU5vdEFjY2Vzc2libGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0YXJ0REJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cHNSZXBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBzdGFydERCSW5zdGFuY2VBdXRvbWF0ZWRCYWNrdXBzUmVwbGljYXRpb24oXG4gICAgYXJnczogU3RhcnREQkluc3RhbmNlQXV0b21hdGVkQmFja3Vwc1JlcGxpY2F0aW9uQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3RhcnREQkluc3RhbmNlQXV0b21hdGVkQmFja3Vwc1JlcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkluc3RhbmNlQXV0b21hdGVkQmFja3VwUXVvdGFFeGNlZWRlZEZhdWx0RXJyb3JcbiAgICB8IERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gICAgfCBLTVNLZXlOb3RBY2Nlc3NpYmxlRmF1bHRFcnJvclxuICAgIHwgU3RvcmFnZVR5cGVOb3RTdXBwb3J0ZWRGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0YXJ0RXhwb3J0VGFza0NvbW1hbmR9XG4gICAqL1xuICBzdGFydEV4cG9ydFRhc2soXG4gICAgYXJnczogU3RhcnRFeHBvcnRUYXNrQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3RhcnRFeHBvcnRUYXNrQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCQ2x1c3RlclNuYXBzaG90Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBEQlNuYXBzaG90Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBFeHBvcnRUYXNrQWxyZWFkeUV4aXN0c0ZhdWx0RXJyb3JcbiAgICB8IElhbVJvbGVNaXNzaW5nUGVybWlzc2lvbnNGYXVsdEVycm9yXG4gICAgfCBJYW1Sb2xlTm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkRXhwb3J0T25seUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRFeHBvcnRTb3VyY2VTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRTM0J1Y2tldEZhdWx0RXJyb3JcbiAgICB8IEtNU0tleU5vdEFjY2Vzc2libGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN0b3BBY3Rpdml0eVN0cmVhbUNvbW1hbmR9XG4gICAqL1xuICBzdG9wQWN0aXZpdHlTdHJlYW0oXG4gICAgYXJnczogU3RvcEFjdGl2aXR5U3RyZWFtQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3RvcEFjdGl2aXR5U3RyZWFtQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkluc3RhbmNlU3RhdGVGYXVsdEVycm9yXG4gICAgfCBSZXNvdXJjZU5vdEZvdW5kRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTdG9wREJDbHVzdGVyQ29tbWFuZH1cbiAgICovXG4gIHN0b3BEQkNsdXN0ZXIoXG4gICAgYXJnczogU3RvcERCQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN0b3BEQkNsdXN0ZXJDb21tYW5kT3V0cHV0LFxuICAgIHwgU2RrRXJyb3JcbiAgICB8IERCQ2x1c3Rlck5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCQ2x1c3RlclN0YXRlRmF1bHRFcnJvclxuICAgIHwgSW52YWxpZERCSW5zdGFuY2VTdGF0ZUZhdWx0RXJyb3JcbiAgPjtcblxuICAvKipcbiAgICogQHNlZSB7QGxpbmsgU3RvcERCSW5zdGFuY2VDb21tYW5kfVxuICAgKi9cbiAgc3RvcERCSW5zdGFuY2UoXG4gICAgYXJnczogU3RvcERCSW5zdGFuY2VDb21tYW5kSW5wdXQsXG4gICAgb3B0aW9ucz86IEh0dHBIYW5kbGVyT3B0aW9ucyxcbiAgKTogRWZmZWN0LkVmZmVjdDxcbiAgICBTdG9wREJJbnN0YW5jZUNvbW1hbmRPdXRwdXQsXG4gICAgfCBTZGtFcnJvclxuICAgIHwgREJJbnN0YW5jZU5vdEZvdW5kRmF1bHRFcnJvclxuICAgIHwgREJTbmFwc2hvdEFscmVhZHlFeGlzdHNGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICAgIHwgU25hcHNob3RRdW90YUV4Y2VlZGVkRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTdG9wREJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cHNSZXBsaWNhdGlvbkNvbW1hbmR9XG4gICAqL1xuICBzdG9wREJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cHNSZXBsaWNhdGlvbihcbiAgICBhcmdzOiBTdG9wREJJbnN0YW5jZUF1dG9tYXRlZEJhY2t1cHNSZXBsaWNhdGlvbkNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN0b3BEQkluc3RhbmNlQXV0b21hdGVkQmFja3Vwc1JlcGxpY2F0aW9uQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3IgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTd2l0Y2hvdmVyQmx1ZUdyZWVuRGVwbG95bWVudENvbW1hbmR9XG4gICAqL1xuICBzd2l0Y2hvdmVyQmx1ZUdyZWVuRGVwbG95bWVudChcbiAgICBhcmdzOiBTd2l0Y2hvdmVyQmx1ZUdyZWVuRGVwbG95bWVudENvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN3aXRjaG92ZXJCbHVlR3JlZW5EZXBsb3ltZW50Q29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBCbHVlR3JlZW5EZXBsb3ltZW50Tm90Rm91bmRGYXVsdEVycm9yXG4gICAgfCBJbnZhbGlkQmx1ZUdyZWVuRGVwbG95bWVudFN0YXRlRmF1bHRFcnJvclxuICA+O1xuXG4gIC8qKlxuICAgKiBAc2VlIHtAbGluayBTd2l0Y2hvdmVyR2xvYmFsQ2x1c3RlckNvbW1hbmR9XG4gICAqL1xuICBzd2l0Y2hvdmVyR2xvYmFsQ2x1c3RlcihcbiAgICBhcmdzOiBTd2l0Y2hvdmVyR2xvYmFsQ2x1c3RlckNvbW1hbmRJbnB1dCxcbiAgICBvcHRpb25zPzogSHR0cEhhbmRsZXJPcHRpb25zLFxuICApOiBFZmZlY3QuRWZmZWN0PFxuICAgIFN3aXRjaG92ZXJHbG9iYWxDbHVzdGVyQ29tbWFuZE91dHB1dCxcbiAgICB8IFNka0Vycm9yXG4gICAgfCBEQkNsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEdsb2JhbENsdXN0ZXJOb3RGb3VuZEZhdWx0RXJyb3JcbiAgICB8IEludmFsaWREQkNsdXN0ZXJTdGF0ZUZhdWx0RXJyb3JcbiAgICB8IEludmFsaWRHbG9iYWxDbHVzdGVyU3RhdGVGYXVsdEVycm9yXG4gID47XG5cbiAgLyoqXG4gICAqIEBzZWUge0BsaW5rIFN3aXRjaG92ZXJSZWFkUmVwbGljYUNvbW1hbmR9XG4gICAqL1xuICBzd2l0Y2hvdmVyUmVhZFJlcGxpY2EoXG4gICAgYXJnczogU3dpdGNob3ZlclJlYWRSZXBsaWNhQ29tbWFuZElucHV0LFxuICAgIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMsXG4gICk6IEVmZmVjdC5FZmZlY3Q8XG4gICAgU3dpdGNob3ZlclJlYWRSZXBsaWNhQ29tbWFuZE91dHB1dCxcbiAgICBTZGtFcnJvciB8IERCSW5zdGFuY2VOb3RGb3VuZEZhdWx0RXJyb3IgfCBJbnZhbGlkREJJbnN0YW5jZVN0YXRlRmF1bHRFcnJvclxuICA+O1xufVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IG1vZGVsc1xuICovXG5leHBvcnQgY2xhc3MgUkRTU2VydmljZSBleHRlbmRzIEVmZmVjdC5UYWcoXCJAZWZmZWN0LWF3cy9jbGllbnQtcmRzL1JEU1NlcnZpY2VcIik8XG4gIFJEU1NlcnZpY2UsXG4gIFJEU1NlcnZpY2UkXG4+KCkge31cblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG1ha2VSRFNTZXJ2aWNlID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKF8pIHtcbiAgY29uc3QgY2xpZW50ID0geWllbGQqIF8oUkRTQ2xpZW50SW5zdGFuY2UpO1xuXG4gIHJldHVybiBSZWNvcmQudG9FbnRyaWVzKGNvbW1hbmRzKS5yZWR1Y2UoKGFjYywgW2NvbW1hbmRdKSA9PiB7XG4gICAgY29uc3QgQ29tbWFuZEN0b3IgPSBjb21tYW5kc1tjb21tYW5kXSBhcyBhbnk7XG4gICAgY29uc3QgbWV0aG9kSW1wbCA9IChhcmdzOiBhbnksIG9wdGlvbnM/OiBIdHRwSGFuZGxlck9wdGlvbnMpID0+XG4gICAgICBFZmZlY3QudHJ5UHJvbWlzZSh7XG4gICAgICAgIHRyeTogKGFib3J0U2lnbmFsKSA9PlxuICAgICAgICAgIGNsaWVudC5zZW5kKG5ldyBDb21tYW5kQ3RvcihhcmdzKSwge1xuICAgICAgICAgICAgLi4uKG9wdGlvbnMgPz8ge30pLFxuICAgICAgICAgICAgYWJvcnRTaWduYWwsXG4gICAgICAgICAgfSksXG4gICAgICAgIGNhdGNoOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGUgaW5zdGFuY2VvZiBSRFNTZXJ2aWNlRXhjZXB0aW9uICYmXG4gICAgICAgICAgICBBbGxTZXJ2aWNlRXJyb3JzLmluY2x1ZGVzKGUubmFtZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IFNlcnZpY2VFeGNlcHRpb24gPSBEYXRhLnRhZ2dlZDxcbiAgICAgICAgICAgICAgVGFnZ2VkRXhjZXB0aW9uPFJEU1NlcnZpY2VFeGNlcHRpb24+XG4gICAgICAgICAgICA+KGUubmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlRXhjZXB0aW9uKHtcbiAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLFxuICAgICAgICAgICAgICBzdGFjazogZS5zdGFjayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gU2RrRXJyb3Ioe1xuICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICBuYW1lOiBcIlNka0Vycm9yXCIsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGUubWVzc2FnZSxcbiAgICAgICAgICAgICAgc3RhY2s6IGUuc3RhY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSAoY29tbWFuZFswXS50b0xvd2VyQ2FzZSgpICsgY29tbWFuZC5zbGljZSgxKSkucmVwbGFjZShcbiAgICAgIC9Db21tYW5kJC8sXG4gICAgICBcIlwiLFxuICAgICk7XG4gICAgcmV0dXJuIHsgLi4uYWNjLCBbbWV0aG9kTmFtZV06IG1ldGhvZEltcGwgfTtcbiAgfSwge30pIGFzIFJEU1NlcnZpY2UkO1xufSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBCYXNlUkRTU2VydmljZUxheWVyID0gTGF5ZXIuZWZmZWN0KFJEU1NlcnZpY2UsIG1ha2VSRFNTZXJ2aWNlKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFJEU1NlcnZpY2VMYXllciA9IEJhc2VSRFNTZXJ2aWNlTGF5ZXIucGlwZShcbiAgTGF5ZXIucHJvdmlkZShSRFNDbGllbnRJbnN0YW5jZUxheWVyKSxcbik7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0UkRTU2VydmljZUxheWVyID0gUkRTU2VydmljZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoRGVmYXVsdFJEU0NsaWVudENvbmZpZ0xheWVyKSxcbik7XG4iXX0=