@microsoft/terraform-cdk-constructs 1.8.0 → 1.10.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.
- package/.jsii +60376 -32133
- package/API.md +72290 -37038
- package/lib/azure-actiongroup/lib/action-group.js +1 -1
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
- package/lib/azure-aks/lib/aks-cluster.js +1 -1
- package/lib/azure-applicationinsights/index.d.ts +7 -0
- package/lib/azure-applicationinsights/index.js +24 -0
- package/lib/azure-applicationinsights/lib/application-insights-schemas.d.ts +29 -0
- package/lib/azure-applicationinsights/lib/application-insights-schemas.js +162 -0
- package/lib/azure-applicationinsights/lib/application-insights.d.ts +206 -0
- package/lib/azure-applicationinsights/lib/application-insights.js +209 -0
- package/lib/azure-applicationinsights/lib/index.d.ts +5 -0
- package/lib/azure-applicationinsights/lib/index.js +22 -0
- package/lib/azure-applicationinsights/test/application-insights.integ.d.ts +9 -0
- package/lib/azure-applicationinsights/test/application-insights.integ.js +84 -0
- package/lib/azure-applicationinsights/test/application-insights.spec.d.ts +8 -0
- package/lib/azure-applicationinsights/test/application-insights.spec.js +209 -0
- package/lib/azure-containerapps/index.d.ts +1 -0
- package/lib/azure-containerapps/index.js +18 -0
- package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +50 -0
- package/lib/azure-containerapps/lib/container-app-environment-schemas.js +522 -0
- package/lib/azure-containerapps/lib/container-app-environment.d.ts +374 -0
- package/lib/azure-containerapps/lib/container-app-environment.js +310 -0
- package/lib/azure-containerapps/lib/container-app-schemas.d.ts +48 -0
- package/lib/azure-containerapps/lib/container-app-schemas.js +466 -0
- package/lib/azure-containerapps/lib/container-app.d.ts +925 -0
- package/lib/azure-containerapps/lib/container-app.js +320 -0
- package/lib/azure-containerapps/lib/index.d.ts +4 -0
- package/lib/azure-containerapps/lib/index.js +21 -0
- package/lib/azure-containerapps/test/container-app-environment.integ.d.ts +10 -0
- package/lib/azure-containerapps/test/container-app-environment.integ.js +82 -0
- package/lib/azure-containerapps/test/container-app-environment.spec.d.ts +9 -0
- package/lib/azure-containerapps/test/container-app-environment.spec.js +412 -0
- package/lib/azure-containerapps/test/container-app.integ.d.ts +10 -0
- package/lib/azure-containerapps/test/container-app.integ.js +119 -0
- package/lib/azure-containerapps/test/container-app.spec.d.ts +9 -0
- package/lib/azure-containerapps/test/container-app.spec.js +839 -0
- package/lib/azure-containerregistry/index.d.ts +1 -0
- package/lib/azure-containerregistry/index.js +18 -0
- package/lib/azure-containerregistry/lib/container-registry-schemas.d.ts +32 -0
- package/lib/azure-containerregistry/lib/container-registry-schemas.js +316 -0
- package/lib/azure-containerregistry/lib/container-registry.d.ts +330 -0
- package/lib/azure-containerregistry/lib/container-registry.js +217 -0
- package/lib/azure-containerregistry/lib/index.d.ts +2 -0
- package/lib/azure-containerregistry/lib/index.js +19 -0
- package/lib/azure-containerregistry/test/container-registry.integ.d.ts +9 -0
- package/lib/azure-containerregistry/test/container-registry.integ.js +101 -0
- package/lib/azure-containerregistry/test/container-registry.spec.d.ts +4 -0
- package/lib/azure-containerregistry/test/container-registry.spec.js +425 -0
- package/lib/azure-cosmosdb/index.d.ts +1 -0
- package/lib/azure-cosmosdb/index.js +18 -0
- package/lib/azure-cosmosdb/lib/cosmos-db-schemas.d.ts +40 -0
- package/lib/azure-cosmosdb/lib/cosmos-db-schemas.js +330 -0
- package/lib/azure-cosmosdb/lib/cosmos-db.d.ts +290 -0
- package/lib/azure-cosmosdb/lib/cosmos-db.js +222 -0
- package/lib/azure-cosmosdb/lib/index.d.ts +2 -0
- package/lib/azure-cosmosdb/lib/index.js +19 -0
- package/lib/azure-cosmosdb/test/cosmos-db.integ.d.ts +9 -0
- package/lib/azure-cosmosdb/test/cosmos-db.integ.js +98 -0
- package/lib/azure-cosmosdb/test/cosmos-db.spec.d.ts +4 -0
- package/lib/azure-cosmosdb/test/cosmos-db.spec.js +339 -0
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
- package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
- package/lib/azure-dnszone/lib/dns-zone.js +1 -1
- package/lib/azure-dnszone/lib/records/dns-records.js +10 -10
- package/lib/azure-functionapp/index.d.ts +1 -0
- package/lib/azure-functionapp/index.js +18 -0
- package/lib/azure-functionapp/lib/function-app-schemas.d.ts +32 -0
- package/lib/azure-functionapp/lib/function-app-schemas.js +303 -0
- package/lib/azure-functionapp/lib/function-app.d.ts +367 -0
- package/lib/azure-functionapp/lib/function-app.js +223 -0
- package/lib/azure-functionapp/lib/index.d.ts +2 -0
- package/lib/azure-functionapp/lib/index.js +19 -0
- package/lib/azure-functionapp/test/function-app.integ.d.ts +12 -0
- package/lib/azure-functionapp/test/function-app.integ.js +134 -0
- package/lib/azure-functionapp/test/function-app.spec.d.ts +4 -0
- package/lib/azure-functionapp/test/function-app.spec.js +566 -0
- package/lib/azure-keyvault/index.d.ts +1 -0
- package/lib/azure-keyvault/index.js +18 -0
- package/lib/azure-keyvault/lib/index.d.ts +2 -0
- package/lib/azure-keyvault/lib/index.js +19 -0
- package/lib/azure-keyvault/lib/key-vault-schemas.d.ts +40 -0
- package/lib/azure-keyvault/lib/key-vault-schemas.js +312 -0
- package/lib/azure-keyvault/lib/key-vault.d.ts +344 -0
- package/lib/azure-keyvault/lib/key-vault.js +243 -0
- package/lib/azure-keyvault/test/key-vault.integ.d.ts +9 -0
- package/lib/azure-keyvault/test/key-vault.integ.js +108 -0
- package/lib/azure-keyvault/test/key-vault.spec.d.ts +4 -0
- package/lib/azure-keyvault/test/key-vault.spec.js +264 -0
- package/lib/azure-loganalyticsworkspace/index.d.ts +6 -0
- package/lib/azure-loganalyticsworkspace/index.js +23 -0
- package/lib/azure-loganalyticsworkspace/lib/index.d.ts +5 -0
- package/lib/azure-loganalyticsworkspace/lib/index.js +22 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.d.ts +51 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.js +255 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.d.ts +301 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +213 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.d.ts +9 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.js +71 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.d.ts +8 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.js +504 -0
- package/lib/azure-metricalert/lib/metric-alert.js +1 -1
- package/lib/azure-networkinterface/lib/network-interface.js +1 -1
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
- package/lib/azure-networkwatcher/index.d.ts +14 -0
- package/lib/azure-networkwatcher/index.js +31 -0
- package/lib/azure-networkwatcher/lib/index.d.ts +5 -0
- package/lib/azure-networkwatcher/lib/index.js +22 -0
- package/lib/azure-networkwatcher/lib/network-watcher-schemas.d.ts +47 -0
- package/lib/azure-networkwatcher/lib/network-watcher-schemas.js +167 -0
- package/lib/azure-networkwatcher/lib/network-watcher.d.ts +181 -0
- package/lib/azure-networkwatcher/lib/network-watcher.js +187 -0
- package/lib/azure-networkwatcher/test/network-watcher.integ.d.ts +12 -0
- package/lib/azure-networkwatcher/test/network-watcher.integ.js +84 -0
- package/lib/azure-networkwatcher/test/network-watcher.spec.d.ts +8 -0
- package/lib/azure-networkwatcher/test/network-watcher.spec.js +312 -0
- package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
- package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
- package/lib/azure-policysetdefinition/index.d.ts +10 -0
- package/lib/azure-policysetdefinition/index.js +27 -0
- package/lib/azure-policysetdefinition/lib/index.d.ts +5 -0
- package/lib/azure-policysetdefinition/lib/index.js +22 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.d.ts +50 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.js +255 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition.d.ts +426 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition.js +255 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.integ.d.ts +9 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.integ.js +56 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.spec.d.ts +8 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.spec.js +745 -0
- package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
- package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
- package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
- package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
- package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
- package/lib/azure-roledefinition/lib/role-definition.js +1 -1
- package/lib/azure-sreagent/index.d.ts +1 -0
- package/lib/azure-sreagent/index.js +18 -0
- package/lib/azure-sreagent/lib/index.d.ts +2 -0
- package/lib/azure-sreagent/lib/index.js +19 -0
- package/lib/azure-sreagent/lib/sre-agent-schemas.d.ts +29 -0
- package/lib/azure-sreagent/lib/sre-agent-schemas.js +296 -0
- package/lib/azure-sreagent/lib/sre-agent.d.ts +208 -0
- package/lib/azure-sreagent/lib/sre-agent.js +217 -0
- package/lib/azure-sreagent/test/sre-agent.integ.d.ts +9 -0
- package/lib/azure-sreagent/test/sre-agent.integ.js +78 -0
- package/lib/azure-sreagent/test/sre-agent.spec.d.ts +4 -0
- package/lib/azure-sreagent/test/sre-agent.spec.js +216 -0
- package/lib/azure-staticwebapp/index.d.ts +1 -0
- package/lib/azure-staticwebapp/index.js +18 -0
- package/lib/azure-staticwebapp/lib/index.d.ts +2 -0
- package/lib/azure-staticwebapp/lib/index.js +19 -0
- package/lib/azure-staticwebapp/lib/static-web-app-schemas.d.ts +40 -0
- package/lib/azure-staticwebapp/lib/static-web-app-schemas.js +236 -0
- package/lib/azure-staticwebapp/lib/static-web-app.d.ts +242 -0
- package/lib/azure-staticwebapp/lib/static-web-app.js +232 -0
- package/lib/azure-staticwebapp/test/static-web-app.integ.d.ts +9 -0
- package/lib/azure-staticwebapp/test/static-web-app.integ.js +76 -0
- package/lib/azure-staticwebapp/test/static-web-app.spec.d.ts +15 -0
- package/lib/azure-staticwebapp/test/static-web-app.spec.js +293 -0
- package/lib/azure-storageaccount/lib/storage-account.js +1 -1
- package/lib/azure-subnet/lib/subnet.js +1 -1
- package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
- package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +2 -2
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +4 -2
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +8 -5
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +109 -1
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
- package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
- package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
- package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
- package/lib/index.d.ts +25 -0
- package/lib/index.js +27 -2
- package/lib/testing/index.js +2 -2
- package/lib/testing/lib/cleanup.js +1 -1
- package/lib/testing/lib/metadata.js +1 -1
- package/package.json +1 -1
|
@@ -197,9 +197,12 @@ class VirtualNetworkGateway extends azapi_resource_1.AzapiResource {
|
|
|
197
197
|
subnet: {
|
|
198
198
|
id: config.subnetId,
|
|
199
199
|
},
|
|
200
|
-
publicIPAddress
|
|
201
|
-
|
|
202
|
-
|
|
200
|
+
// Only include publicIPAddress if a publicIPAddressId is provided
|
|
201
|
+
...(config.publicIPAddressId && {
|
|
202
|
+
publicIPAddress: {
|
|
203
|
+
id: config.publicIPAddressId,
|
|
204
|
+
},
|
|
205
|
+
}),
|
|
203
206
|
},
|
|
204
207
|
}));
|
|
205
208
|
return {
|
|
@@ -278,8 +281,8 @@ class VirtualNetworkGateway extends azapi_resource_1.AzapiResource {
|
|
|
278
281
|
}
|
|
279
282
|
exports.VirtualNetworkGateway = VirtualNetworkGateway;
|
|
280
283
|
_a = JSII_RTTI_SYMBOL_1;
|
|
281
|
-
VirtualNetworkGateway[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGateway", version: "1.
|
|
284
|
+
VirtualNetworkGateway[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGateway", version: "1.10.0" };
|
|
282
285
|
(() => {
|
|
283
286
|
azapi_resource_1.AzapiResource.registerSchemas(virtual_network_gateway_schemas_1.VIRTUAL_NETWORK_GATEWAY_TYPE, virtual_network_gateway_schemas_1.ALL_VIRTUAL_NETWORK_GATEWAY_VERSIONS);
|
|
284
287
|
})();
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1uZXR3b3JrLWdhdGV3YXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtdmlydHVhbG5ldHdvcmtnYXRld2F5L2xpYi92aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUVILCtCQUErQjtBQUUvQix1RkFHMkM7QUFDM0MsOEVBR21EO0FBcU9uRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRkc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLDhCQUFhO0lBbUJ0RDs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQix5RUFBeUU7UUFDekUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDN0MsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsS0FBSztZQUNiLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hELEtBQUssRUFBRSxNQUFNLElBQUksQ0FB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QUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELGdGQUFnRjtJQUNoRix5QkFBeUI7SUFDekIsZ0ZBQWdGO0lBRWhGOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUM5QyxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO2FBQ3pDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQWxOSCxzREFtTkM7OztBQWxOQztJQUNFLDhCQUFhLENBQUMsZUFBZSxDQUMzQiw4REFBNEIsRUFDNUIsc0VBQW9DLENBQ3JDLENBQUM7QUFDSixDQUFDLEdBQUEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXp1cmUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgaW1wbGVtZW50YXRpb24gdXNpbmcgQXphcGlSZXNvdXJjZSBmcmFtZXdvcmtcbiAqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgdW5pZmllZCBpbXBsZW1lbnRhdGlvbiBmb3IgQXp1cmUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXlzIHRoYXRcbiAqIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIG1hbmFnZW1lbnQsIHNjaGVtYSB2YWxpZGF0aW9uLCBhbmQgcHJvcGVydHlcbiAqIHRyYW5zZm9ybWF0aW9uIGFjcm9zcyBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9ucy5cbiAqXG4gKiBTdXBwb3J0ZWQgQVBJIFZlcnNpb25zOlxuICogLSAyMDI0LTAxLTAxIChBY3RpdmUpXG4gKiAtIDIwMjQtMDUtMDEgKEFjdGl2ZSwgTGF0ZXN0KVxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBBdXRvbWF0aWMgbGF0ZXN0IHZlcnNpb24gcmVzb2x1dGlvbiB3aGVuIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gKiAtIEV4cGxpY2l0IHZlcnNpb24gcGlubmluZyBmb3Igc3RhYmlsaXR5IHJlcXVpcmVtZW50c1xuICogLSBTY2hlbWEtZHJpdmVuIHZhbGlkYXRpb24gYW5kIHRyYW5zZm9ybWF0aW9uXG4gKiAtIEZ1bGwgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICogLSBKU0lJIGNvbXBsaWFuY2UgZm9yIG11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbiAqL1xuXG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBBTExfVklSVFVBTF9ORVRXT1JLX0dBVEVXQVlfVkVSU0lPTlMsXG4gIFZJUlRVQUxfTkVUV09SS19HQVRFV0FZX1RZUEUsXG59IGZyb20gXCIuL3ZpcnR1YWwtbmV0d29yay1nYXRld2F5LXNjaGVtYXNcIjtcbmltcG9ydCB7XG4gIEF6YXBpUmVzb3VyY2UsXG4gIEF6YXBpUmVzb3VyY2VQcm9wcyxcbn0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL2F6YXBpLXJlc291cmNlXCI7XG5pbXBvcnQgeyBBcGlTY2hlbWEgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5cbi8qKlxuICogU0tVIGNvbmZpZ3VyYXRpb24gZm9yIFZpcnR1YWwgTmV0d29yayBHYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlydHVhbE5ldHdvcmtHYXRld2F5U2t1IHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFNLVVxuICAgKiBAZXhhbXBsZSBcIkJhc2ljXCIsIFwiVnBuR3cxXCIsIFwiVnBuR3cyXCIsIFwiVnBuR3czXCIsIFwiVnBuR3c0XCIsIFwiVnBuR3c1XCIsIFwiRXJHdzFBWlwiLCBcIkVyR3cyQVpcIiwgXCJFckd3M0FaXCJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGllciBvZiB0aGUgU0tVXG4gICAqIEBleGFtcGxlIFwiQmFzaWNcIiwgXCJWcG5HdzFcIiwgXCJWcG5HdzJcIiwgXCJWcG5HdzNcIiwgXCJWcG5HdzRcIiwgXCJWcG5HdzVcIiwgXCJFckd3MUFaXCIsIFwiRXJHdzJBWlwiLCBcIkVyR3czQVpcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGllcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIElQIGNvbmZpZ3VyYXRpb24gZm9yIFZpcnR1YWwgTmV0d29yayBHYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlydHVhbE5ldHdvcmtHYXRld2F5SXBDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIElQIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogUHJpdmF0ZSBJUCBhbGxvY2F0aW9uIG1ldGhvZFxuICAgKiBAZGVmYXVsdFZhbHVlIFwiRHluYW1pY1wiXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlSVBBbGxvY2F0aW9uTWV0aG9kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJRCBvZiB0aGUgc3VibmV0IHRvIHVzZSAobXVzdCBiZSBHYXRld2F5U3VibmV0KVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSUQgb2YgdGhlIHB1YmxpYyBJUCBhZGRyZXNzIHRvIHVzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSVBBZGRyZXNzSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBCR1Agc2V0dGluZ3MgZm9yIFZpcnR1YWwgTmV0d29yayBHYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlydHVhbE5ldHdvcmtHYXRld2F5QmdwU2V0dGluZ3Mge1xuICAvKipcbiAgICogQkdQIEFTTiAoQXV0b25vbW91cyBTeXN0ZW0gTnVtYmVyKVxuICAgKiBAZXhhbXBsZSA2NTUxNVxuICAgKi9cbiAgcmVhZG9ubHkgYXNuPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCR1AgcGVlcmluZyBhZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBiZ3BQZWVyaW5nQWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogV2VpZ2h0IGFkZGVkIHRvIHJvdXRlcyBsZWFybmVkIGZyb20gdGhpcyBCR1Agc3BlYWtlclxuICAgKi9cbiAgcmVhZG9ubHkgcGVlcldlaWdodD86IG51bWJlcjtcblxuICAvKipcbiAgICogQkdQIHBlZXJpbmcgYWRkcmVzc2VzIGZvciBhY3RpdmUtYWN0aXZlIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGJncFBlZXJpbmdBZGRyZXNzZXM/OiBhbnlbXTtcbn1cblxuLyoqXG4gKiBWUE4gY2xpZW50IGFkZHJlc3MgcG9vbCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlydHVhbE5ldHdvcmtHYXRld2F5VnBuQ2xpZW50QWRkcmVzc1Bvb2wge1xuICAvKipcbiAgICogTGlzdCBvZiBhZGRyZXNzIHByZWZpeGVzIGZvciBWUE4gY2xpZW50IGNvbm5lY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBhZGRyZXNzUHJlZml4ZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFZQTiBjbGllbnQgY29uZmlndXJhdGlvbiBmb3IgcG9pbnQtdG8tc2l0ZSBjb25uZWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheVZwbkNsaWVudENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVlBOIGNsaWVudCBhZGRyZXNzIHBvb2xcbiAgICovXG4gIHJlYWRvbmx5IHZwbkNsaWVudEFkZHJlc3NQb29sPzogVmlydHVhbE5ldHdvcmtHYXRld2F5VnBuQ2xpZW50QWRkcmVzc1Bvb2w7XG5cbiAgLyoqXG4gICAqIFZQTiBjbGllbnQgcHJvdG9jb2xzXG4gICAqIEBleGFtcGxlIFtcIklrZVYyXCIsIFwiU1NUUFwiLCBcIk9wZW5WUE5cIl1cbiAgICovXG4gIHJlYWRvbmx5IHZwbkNsaWVudFByb3RvY29scz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBWUE4gY2xpZW50IHJvb3QgY2VydGlmaWNhdGVzXG4gICAqL1xuICByZWFkb25seSB2cG5DbGllbnRSb290Q2VydGlmaWNhdGVzPzogYW55W107XG5cbiAgLyoqXG4gICAqIFZQTiBjbGllbnQgcmV2b2tlZCBjZXJ0aWZpY2F0ZXNcbiAgICovXG4gIHJlYWRvbmx5IHZwbkNsaWVudFJldm9rZWRDZXJ0aWZpY2F0ZXM/OiBhbnlbXTtcblxuICAvKipcbiAgICogUmFkaXVzIHNlcnZlciBhZGRyZXNzXG4gICAqL1xuICByZWFkb25seSByYWRpdXNTZXJ2ZXJBZGRyZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSYWRpdXMgc2VydmVyIHNlY3JldFxuICAgKi9cbiAgcmVhZG9ubHkgcmFkaXVzU2VydmVyU2VjcmV0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEN1c3RvbSByb3V0ZXMgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheUN1c3RvbVJvdXRlcyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGFkZHJlc3MgcHJlZml4ZXNcbiAgICovXG4gIHJlYWRvbmx5IGFkZHJlc3NQcmVmaXhlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEdhdGV3YXkgZGVmYXVsdCBzaXRlIHJlZmVyZW5jZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheURlZmF1bHRTaXRlIHtcbiAgLyoqXG4gICAqIFJlc291cmNlIElEIG9mIHRoZSBsb2NhbCBuZXR3b3JrIGdhdGV3YXkgdG8gdXNlIGFzIGRlZmF1bHQgc2l0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgQXp1cmUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXlcbiAqXG4gKiBFeHRlbmRzIEF6YXBpUmVzb3VyY2VQcm9wcyB3aXRoIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IHNwZWNpZmljIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyBleHRlbmRzIEF6YXBpUmVzb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBHYXRld2F5IHR5cGVcbiAgICogTXVzdCBiZSBlaXRoZXIgXCJWcG5cIiBvciBcIkV4cHJlc3NSb3V0ZVwiXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VHlwZTogXCJWcG5cIiB8IFwiRXhwcmVzc1JvdXRlXCI7XG5cbiAgLyoqXG4gICAqIFZQTiB0eXBlIGZvciBWUE4gZ2F0ZXdheXNcbiAgICogQGRlZmF1bHRWYWx1ZSBcIlJvdXRlQmFzZWRcIlxuICAgKi9cbiAgcmVhZG9ubHkgdnBuVHlwZT86IFwiUm91dGVCYXNlZFwiIHwgXCJQb2xpY3lCYXNlZFwiO1xuXG4gIC8qKlxuICAgKiBTS1UgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IHNrdTogVmlydHVhbE5ldHdvcmtHYXRld2F5U2t1O1xuXG4gIC8qKlxuICAgKiBJUCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIGdhdGV3YXlcbiAgICogQXQgbGVhc3Qgb25lIElQIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWRcbiAgICogVHdvIElQIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCBmb3IgYWN0aXZlLWFjdGl2ZSBtb2RlXG4gICAqL1xuICByZWFkb25seSBpcENvbmZpZ3VyYXRpb25zOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlJcENvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogRW5hYmxlIEJHUCBmb3IgdGhlIGdhdGV3YXlcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQmdwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIGFjdGl2ZS1hY3RpdmUgbW9kZSBmb3IgdGhlIGdhdGV3YXlcbiAgICogUmVxdWlyZXMgdHdvIElQIGNvbmZpZ3VyYXRpb25zXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZUFjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEJHUCBzZXR0aW5ncyBmb3IgdGhlIGdhdGV3YXlcbiAgICogUmVxdWlyZWQgaWYgZW5hYmxlQmdwIGlzIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGJncFNldHRpbmdzPzogVmlydHVhbE5ldHdvcmtHYXRld2F5QmdwU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFZQTiBnYXRld2F5IGdlbmVyYXRpb25cbiAgICogQGV4YW1wbGUgXCJHZW5lcmF0aW9uMVwiLCBcIkdlbmVyYXRpb24yXCJcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlHZW5lcmF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcm91dGVzIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tUm91dGVzPzogVmlydHVhbE5ldHdvcmtHYXRld2F5Q3VzdG9tUm91dGVzO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgcHJpdmF0ZSBJUCBhZGRyZXNzIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQcml2YXRlSXBBZGRyZXNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmYXVsdCBzaXRlIGZvciBmb3JjZSB0dW5uZWxpbmdcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlEZWZhdWx0U2l0ZT86IFZpcnR1YWxOZXR3b3JrR2F0ZXdheURlZmF1bHRTaXRlO1xuXG4gIC8qKlxuICAgKiBWUE4gY2xpZW50IGNvbmZpZ3VyYXRpb24gZm9yIHBvaW50LXRvLXNpdGUgY29ubmVjdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHZwbkNsaWVudENvbmZpZ3VyYXRpb24/OiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlWcG5DbGllbnRDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBncm91cCBJRCB3aGVyZSB0aGUgR2F0ZXdheSB3aWxsIGJlIGNyZWF0ZWRcbiAgICogT3B0aW9uYWwgLSB3aWxsIHVzZSB0aGUgc3Vic2NyaXB0aW9uIHNjb3BlIGlmIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGlnbm9yZSBjaGFuZ2VzXG4gICAqIFVzZWZ1bCBmb3IgcHJvcGVydGllcyB0aGF0IGFyZSBleHRlcm5hbGx5IG1hbmFnZWRcbiAgICpcbiAgICogQGV4YW1wbGUgW1widGFnc1wiXVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ2hhbmdlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEF6dXJlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IGltcGxlbWVudGF0aW9uXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbmdsZSwgdmVyc2lvbi1hd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlcGxhY2VzXG4gKiB2ZXJzaW9uLXNwZWNpZmljIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IGNsYXNzZXMuIEl0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uXG4gKiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlIG1haW50YWluaW5nXG4gKiBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogVmlydHVhbCBOZXR3b3JrIEdhdGV3YXlzIGFyZSB1c2VkIHRvIHNlbmQgZW5jcnlwdGVkIHRyYWZmaWMgYmV0d2VlbiBBenVyZSB2aXJ0dWFsXG4gKiBuZXR3b3JrcyBhbmQgb24tcHJlbWlzZXMgbG9jYXRpb25zIG92ZXIgdGhlIHB1YmxpYyBJbnRlcm5ldCAoVlBOKSBvciB0aHJvdWdoXG4gKiBBenVyZSBFeHByZXNzUm91dGUgY2lyY3VpdHMgKEV4cHJlc3NSb3V0ZSkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIFZQTiBHYXRld2F5OlxuICogY29uc3QgdnBuR2F0ZXdheSA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkodGhpcywgXCJ2cG5HYXRld2F5XCIsIHtcbiAqICAgbmFtZTogXCJteS12cG4tZ2F0ZXdheVwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICogICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAqICAgdnBuVHlwZTogXCJSb3V0ZUJhc2VkXCIsXG4gKiAgIHNrdToge1xuICogICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gKiAgICAgdGllcjogXCJWcG5HdzFcIlxuICogICB9LFxuICogICBpcENvbmZpZ3VyYXRpb25zOiBbe1xuICogICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICogICAgIHN1Ym5ldElkOiBnYXRld2F5U3VibmV0LmlkLFxuICogICAgIHB1YmxpY0lQQWRkcmVzc0lkOiBwdWJsaWNJcC5pZFxuICogICB9XVxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFZQTiBHYXRld2F5IHdpdGggQkdQOlxuICogY29uc3QgdnBuR2F0ZXdheSA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkodGhpcywgXCJ2cG5HYXRld2F5XCIsIHtcbiAqICAgbmFtZTogXCJteS12cG4tZ2F0ZXdheS1iZ3BcIixcbiAqICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gKiAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAqICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gKiAgIHZwblR5cGU6IFwiUm91dGVCYXNlZFwiLFxuICogICBza3U6IHtcbiAqICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICogICAgIHRpZXI6IFwiVnBuR3cxXCJcbiAqICAgfSxcbiAqICAgZW5hYmxlQmdwOiB0cnVlLFxuICogICBiZ3BTZXR0aW5nczoge1xuICogICAgIGFzbjogNjU1MTUsXG4gKiAgICAgcGVlcldlaWdodDogMFxuICogICB9LFxuICogICBpcENvbmZpZ3VyYXRpb25zOiBbe1xuICogICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICogICAgIHN1Ym5ldElkOiBnYXRld2F5U3VibmV0LmlkLFxuICogICAgIHB1YmxpY0lQQWRkcmVzc0lkOiBwdWJsaWNJcC5pZFxuICogICB9XVxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFjdGl2ZS1BY3RpdmUgVlBOIEdhdGV3YXk6XG4gKiBjb25zdCB2cG5HYXRld2F5ID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheSh0aGlzLCBcInZwbkdhdGV3YXlcIiwge1xuICogICBuYW1lOiBcIm15LXZwbi1nYXRld2F5LWFhXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICogICB2cG5UeXBlOiBcIlJvdXRlQmFzZWRcIixcbiAqICAgc2t1OiB7XG4gKiAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAqICAgICB0aWVyOiBcIlZwbkd3MVwiXG4gKiAgIH0sXG4gKiAgIGFjdGl2ZUFjdGl2ZTogdHJ1ZSxcbiAqICAgaXBDb25maWd1cmF0aW9uczogW1xuICogICAgIHtcbiAqICAgICAgIG5hbWU6IFwiY29uZmlnMVwiLFxuICogICAgICAgc3VibmV0SWQ6IGdhdGV3YXlTdWJuZXQuaWQsXG4gKiAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDogcHVibGljSXAxLmlkXG4gKiAgICAgfSxcbiAqICAgICB7XG4gKiAgICAgICBuYW1lOiBcImNvbmZpZzJcIixcbiAqICAgICAgIHN1Ym5ldElkOiBnYXRld2F5U3VibmV0LmlkLFxuICogICAgICAgcHVibGljSVBBZGRyZXNzSWQ6IHB1YmxpY0lwMi5pZFxuICogICAgIH1cbiAqICAgXVxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFZpcnR1YWxOZXR3b3JrR2F0ZXdheSBleHRlbmRzIEF6YXBpUmVzb3VyY2Uge1xuICBzdGF0aWMge1xuICAgIEF6YXBpUmVzb3VyY2UucmVnaXN0ZXJTY2hlbWFzKFxuICAgICAgVklSVFVBTF9ORVRXT1JLX0dBVEVXQVlfVFlQRSxcbiAgICAgIEFMTF9WSVJUVUFMX05FVFdPUktfR0FURVdBWV9WRVJTSU9OUyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBwcm9wZXJ0aWVzIGZvciB0aGlzIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IFZpcnR1YWxOZXR3b3JrR2F0ZXdheVByb3BzO1xuXG4gIC8vIE91dHB1dCBwcm9wZXJ0aWVzIGZvciBlYXN5IGFjY2VzcyBhbmQgcmVmZXJlbmNpbmdcbiAgcHVibGljIHJlYWRvbmx5IGlkT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBsb2NhdGlvbk91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgdGFnc091dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEF6dXJlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IHVzaW5nIHRoZSBBemFwaVJlc291cmNlIGZyYW1ld29ya1xuICAgKlxuICAgKiBUaGUgY29uc3RydWN0b3IgYXV0b21hdGljYWxseSBoYW5kbGVzIHZlcnNpb24gcmVzb2x1dGlvbiwgc2NoZW1hIHJlZ2lzdHJhdGlvbixcbiAgICogdmFsaWRhdGlvbiwgYW5kIHJlc291cmNlIGNyZWF0aW9uLiBJdCBtYWludGFpbnMgZnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAqIHdpdGggZXhpc3RpbmcgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgaW1wbGVtZW50YXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBpbnN0YW5jZVxuICAgKiBAcGFyYW0gcHJvcHMgLSBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFZpcnR1YWxOZXR3b3JrR2F0ZXdheVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBBZGQgZXh0ZW5kZWQgdGltZW91dHMgZm9yIGdhdGV3YXkgcHJvdmlzaW9uaW5nICgzMC00NSBtaW51dGVzIHR5cGljYWwpXG4gICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5hZGRPdmVycmlkZShcInRpbWVvdXRzXCIsIHtcbiAgICAgIGNyZWF0ZTogXCI2MG1cIixcbiAgICAgIHVwZGF0ZTogXCI2MG1cIixcbiAgICAgIGRlbGV0ZTogXCI2MG1cIixcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBUZXJyYWZvcm0gb3V0cHV0cyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nIGZyb20gb3RoZXIgcmVzb3VyY2VzXG4gICAgdGhpcy5pZE91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJpZFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBJRCBvZiB0aGUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXlcIixcbiAgICB9KTtcblxuICAgIHRoaXMubmFtZU91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJuYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm5hbWV9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBuYW1lIG9mIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2NhdGlvbk91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJsb2NhdGlvblwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5sb2NhdGlvbn1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGxvY2F0aW9uIG9mIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWdzT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcInRhZ3NcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0udGFnc31gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHRhZ3MgYXNzaWduZWQgdG8gdGhlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5XCIsXG4gICAgfSk7XG5cbiAgICAvLyBPdmVycmlkZSBsb2dpY2FsIElEcyB0byBtYXRjaCBvcmlnaW5hbCBuYW1pbmcgY29udmVudGlvblxuICAgIHRoaXMuaWRPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJpZFwiKTtcbiAgICB0aGlzLm5hbWVPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJuYW1lXCIpO1xuICAgIHRoaXMubG9jYXRpb25PdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJsb2NhdGlvblwiKTtcbiAgICB0aGlzLnRhZ3NPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJ0YWdzXCIpO1xuXG4gICAgLy8gQXBwbHkgaWdub3JlIGNoYW5nZXMgaWYgc3BlY2lmaWVkXG4gICAgdGhpcy5fYXBwbHlJZ25vcmVDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBSRVFVSVJFRCBBQlNUUkFDVCBNRVRIT0RTIEZST00gVmVyc2lvbmVkQXphcGlSZXNvdXJjZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHRvIHVzZSB3aGVuIG5vIGV4cGxpY2l0IHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gICAqIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHN0YWJsZSB2ZXJzaW9uIGFzIHRoZSBkZWZhdWx0XG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCIyMDI0LTA1LTAxXCI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQXp1cmUgcmVzb3VyY2UgdHlwZSBmb3IgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXlzXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFZJUlRVQUxfTkVUV09SS19HQVRFV0FZX1RZUEU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQVBJIHNjaGVtYSBmb3IgdGhlIHJlc29sdmVkIHZlcnNpb25cbiAgICogVXNlcyB0aGUgZnJhbWV3b3JrJ3Mgc2NoZW1hIHJlc29sdXRpb24gdG8gZ2V0IHRoZSBhcHByb3ByaWF0ZSBzY2hlbWFcbiAgICovXG4gIHByb3RlY3RlZCBhcGlTY2hlbWEoKTogQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2NoZW1hKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgbG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIFZpcnR1YWwgTmV0d29yayBHYXRld2F5c1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlcXVpcmVzTG9jYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgcmVzb3VyY2UgYm9keSBmb3IgdGhlIEF6dXJlIEFQSSBjYWxsXG4gICAqIFRyYW5zZm9ybXMgdGhlIGlucHV0IHByb3BlcnRpZXMgaW50byB0aGUgSlNPTiBmb3JtYXQgZXhwZWN0ZWQgYnkgQXp1cmUgUkVTVCBBUElcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZUJvZHkocHJvcHM6IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHlwZWRQcm9wcyA9IHByb3BzIGFzIFZpcnR1YWxOZXR3b3JrR2F0ZXdheVByb3BzO1xuXG4gICAgLy8gVHJhbnNmb3JtIElQIGNvbmZpZ3VyYXRpb25zIHRvIEF6dXJlIEFQSSBmb3JtYXRcbiAgICBjb25zdCBpcENvbmZpZ3VyYXRpb25zID0gdHlwZWRQcm9wcy5pcENvbmZpZ3VyYXRpb25zLm1hcCgoY29uZmlnKSA9PiAoe1xuICAgICAgbmFtZTogY29uZmlnLm5hbWUsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHByaXZhdGVJUEFsbG9jYXRpb25NZXRob2Q6XG4gICAgICAgICAgY29uZmlnLnByaXZhdGVJUEFsbG9jYXRpb25NZXRob2QgfHwgXCJEeW5hbWljXCIsXG4gICAgICAgIHN1Ym5ldDoge1xuICAgICAgICAgIGlkOiBjb25maWcuc3VibmV0SWQsXG4gICAgICAgIH0sXG4gICAgICAgIHB1YmxpY0lQQWRkcmVzczoge1xuICAgICAgICAgIGlkOiBjb25maWcucHVibGljSVBBZGRyZXNzSWQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbixcbiAgICAgIHRhZ3M6IHRoaXMuYWxsVGFncygpLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBnYXRld2F5VHlwZTogdHlwZWRQcm9wcy5nYXRld2F5VHlwZSxcbiAgICAgICAgdnBuVHlwZTogdHlwZWRQcm9wcy52cG5UeXBlIHx8IFwiUm91dGVCYXNlZFwiLFxuICAgICAgICBlbmFibGVCZ3A6IHR5cGVkUHJvcHMuZW5hYmxlQmdwIHx8IGZhbHNlLFxuICAgICAgICBhY3RpdmVBY3RpdmU6IHR5cGVkUHJvcHMuYWN0aXZlQWN0aXZlIHx8IGZhbHNlLFxuICAgICAgICBza3U6IHR5cGVkUHJvcHMuc2t1LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBpcENvbmZpZ3VyYXRpb25zLFxuICAgICAgICBiZ3BTZXR0aW5nczogdHlwZWRQcm9wcy5iZ3BTZXR0aW5ncyxcbiAgICAgICAgdnBuR2F0ZXdheUdlbmVyYXRpb246IHR5cGVkUHJvcHMudnBuR2F0ZXdheUdlbmVyYXRpb24sXG4gICAgICAgIGN1c3RvbVJvdXRlczogdHlwZWRQcm9wcy5jdXN0b21Sb3V0ZXMsXG4gICAgICAgIGVuYWJsZVByaXZhdGVJcEFkZHJlc3M6IHR5cGVkUHJvcHMuZW5hYmxlUHJpdmF0ZUlwQWRkcmVzcyxcbiAgICAgICAgZ2F0ZXdheURlZmF1bHRTaXRlOiB0eXBlZFByb3BzLmdhdGV3YXlEZWZhdWx0U2l0ZSxcbiAgICAgICAgdnBuQ2xpZW50Q29uZmlndXJhdGlvbjogdHlwZWRQcm9wcy52cG5DbGllbnRDb25maWd1cmF0aW9uLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFVCTElDIE1FVEhPRFMgRk9SIFZJUlRVQUwgTkVUV09SSyBHQVRFV0FZIE9QRVJBVElPTlNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdWJzY3JpcHRpb24gSUQgZnJvbSB0aGUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgSURcbiAgICogRXh0cmFjdHMgdGhlIHN1YnNjcmlwdGlvbiBJRCBmcm9tIHRoZSBBenVyZSByZXNvdXJjZSBJRCBmb3JtYXRcbiAgICovXG4gIHB1YmxpYyBnZXQgc3Vic2NyaXB0aW9uSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBpZFBhcnRzID0gdGhpcy5pZC5zcGxpdChcIi9cIik7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uSW5kZXggPSBpZFBhcnRzLmluZGV4T2YoXCJzdWJzY3JpcHRpb25zXCIpO1xuICAgIGlmIChzdWJzY3JpcHRpb25JbmRleCAhPT0gLTEgJiYgc3Vic2NyaXB0aW9uSW5kZXggKyAxIDwgaWRQYXJ0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBpZFBhcnRzW3N1YnNjcmlwdGlvbkluZGV4ICsgMV07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiVW5hYmxlIHRvIGV4dHJhY3Qgc3Vic2NyaXB0aW9uIElEIGZyb20gVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgSURcIixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCByZXNvdXJjZSBpZGVudGlmaWVyIGZvciB1c2UgaW4gb3RoZXIgQXp1cmUgcmVzb3VyY2VzXG4gICAqIEFsaWFzIGZvciB0aGUgaWQgcHJvcGVydHkgdG8gbWF0Y2ggb3JpZ2luYWwgaW50ZXJmYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHJlc291cmNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB0YWcgdG8gdGhlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5XG4gICAqIE5vdGU6IFRoaXMgbW9kaWZpZXMgdGhlIGNvbnN0cnVjdCBwcm9wcyBidXQgcmVxdWlyZXMgYSBuZXcgZGVwbG95bWVudCB0byB0YWtlIGVmZmVjdFxuICAgKi9cbiAgcHVibGljIGFkZFRhZyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcy50YWdzKSB7XG4gICAgICAodGhpcy5wcm9wcyBhcyBhbnkpLnRhZ3MgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy50YWdzIVtrZXldID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgdGFnIGZyb20gdGhlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5XG4gICAqIE5vdGU6IFRoaXMgbW9kaWZpZXMgdGhlIGNvbnN0cnVjdCBwcm9wcyBidXQgcmVxdWlyZXMgYSBuZXcgZGVwbG95bWVudCB0byB0YWtlIGVmZmVjdFxuICAgKi9cbiAgcHVibGljIHJlbW92ZVRhZyhrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLnRhZ3MgJiYgdGhpcy5wcm9wcy50YWdzW2tleV0pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnByb3BzLnRhZ3Nba2V5XTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQUklWQVRFIEhFTFBFUiBNRVRIT0RTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgaWdub3JlIGNoYW5nZXMgbGlmZWN5Y2xlIHJ1bGVzIGlmIHNwZWNpZmllZCBpbiBwcm9wc1xuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlJZ25vcmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMgJiYgdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuYWRkT3ZlcnJpZGUoXCJsaWZlY3ljbGVcIiwge1xuICAgICAgICBpZ25vcmVfY2hhbmdlczogdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1uZXR3b3JrLWdhdGV3YXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtdmlydHVhbG5ldHdvcmtnYXRld2F5L2xpYi92aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUVILCtCQUErQjtBQUUvQix1RkFHMkM7QUFDM0MsOEVBR21EO0FBdU9uRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRkc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLDhCQUFhO0lBbUJ0RDs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQix5RUFBeUU7UUFDekUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDN0MsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsS0FBSztZQUNiLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLHVDQUF1QztTQUNyRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hELEtBQUssRUFBRSxNQUFNLElBQUksQ0FB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SyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYseUJBQXlCO0lBQ3pCLGdGQUFnRjtJQUVoRjs7T0FFRztJQUNLLG1CQUFtQjtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDOUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTthQUN6QyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFyTkgsc0RBc05DOzs7QUFyTkM7SUFDRSw4QkFBYSxDQUFDLGVBQWUsQ0FDM0IsOERBQTRCLEVBQzVCLHNFQUFvQyxDQUNyQyxDQUFDO0FBQ0osQ0FBQyxHQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF6dXJlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IGltcGxlbWVudGF0aW9uIHVzaW5nIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHVuaWZpZWQgaW1wbGVtZW50YXRpb24gZm9yIEF6dXJlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5cyB0aGF0XG4gKiBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvbiBtYW5hZ2VtZW50LCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5XG4gKiB0cmFuc2Zvcm1hdGlvbiBhY3Jvc3MgYWxsIHN1cHBvcnRlZCBBUEkgdmVyc2lvbnMuXG4gKlxuICogU3VwcG9ydGVkIEFQSSBWZXJzaW9uczpcbiAqIC0gMjAyNC0wMS0wMSAoQWN0aXZlKVxuICogLSAyMDI0LTA1LTAxIChBY3RpdmUsIExhdGVzdClcbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gQXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb24gd2hlbiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICogLSBFeHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcgZm9yIHN0YWJpbGl0eSByZXF1aXJlbWVudHNcbiAqIC0gU2NoZW1hLWRyaXZlbiB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvblxuICogLSBGdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAqIC0gSlNJSSBjb21wbGlhbmNlIGZvciBtdWx0aS1sYW5ndWFnZSBzdXBwb3J0XG4gKi9cblxuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQUxMX1ZJUlRVQUxfTkVUV09SS19HQVRFV0FZX1ZFUlNJT05TLFxuICBWSVJUVUFMX05FVFdPUktfR0FURVdBWV9UWVBFLFxufSBmcm9tIFwiLi92aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheS1zY2hlbWFzXCI7XG5pbXBvcnQge1xuICBBemFwaVJlc291cmNlLFxuICBBemFwaVJlc291cmNlUHJvcHMsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9hemFwaS1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vKipcbiAqIFNLVSBjb25maWd1cmF0aW9uIGZvciBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheVNrdSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBTS1VcbiAgICogQGV4YW1wbGUgXCJCYXNpY1wiLCBcIlZwbkd3MVwiLCBcIlZwbkd3MlwiLCBcIlZwbkd3M1wiLCBcIlZwbkd3NFwiLCBcIlZwbkd3NVwiLCBcIkVyR3cxQVpcIiwgXCJFckd3MkFaXCIsIFwiRXJHdzNBWlwiXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpZXIgb2YgdGhlIFNLVVxuICAgKiBAZXhhbXBsZSBcIkJhc2ljXCIsIFwiVnBuR3cxXCIsIFwiVnBuR3cyXCIsIFwiVnBuR3czXCIsIFwiVnBuR3c0XCIsIFwiVnBuR3c1XCIsIFwiRXJHdzFBWlwiLCBcIkVyR3cyQVpcIiwgXCJFckd3M0FaXCJcbiAgICovXG4gIHJlYWRvbmx5IHRpZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJUCBjb25maWd1cmF0aW9uIGZvciBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheUlwQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBJUCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgSVAgYWxsb2NhdGlvbiBtZXRob2RcbiAgICogQGRlZmF1bHRWYWx1ZSBcIkR5bmFtaWNcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZUlQQWxsb2NhdGlvbk1ldGhvZD86IHN0cmluZztcblxuICAvKipcbiAgICogSUQgb2YgdGhlIHN1Ym5ldCB0byB1c2UgKG11c3QgYmUgR2F0ZXdheVN1Ym5ldClcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElEIG9mIHRoZSBwdWJsaWMgSVAgYWRkcmVzcyB0byB1c2UuXG4gICAqIE9wdGlvbmFsIGZvciBFeHByZXNzUm91dGUgZ2F0ZXdheXMgLSBpZiBvbWl0dGVkLCBBenVyZSB3aWxsIGF1dG8tYXNzaWduIGEgbWFuYWdlZCBwdWJsaWMgSVAuXG4gICAqIFJlcXVpcmVkIGZvciBWUE4gZ2F0ZXdheXMuXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNJUEFkZHJlc3NJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBCR1Agc2V0dGluZ3MgZm9yIFZpcnR1YWwgTmV0d29yayBHYXRld2F5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlydHVhbE5ldHdvcmtHYXRld2F5QmdwU2V0dGluZ3Mge1xuICAvKipcbiAgICogQkdQIEFTTiAoQXV0b25vbW91cyBTeXN0ZW0gTnVtYmVyKVxuICAgKiBAZXhhbXBsZSA2NTUxNVxuICAgKi9cbiAgcmVhZG9ubHkgYXNuPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCR1AgcGVlcmluZyBhZGRyZXNzXG4gICAqL1xuICByZWFkb25seSBiZ3BQZWVyaW5nQWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogV2VpZ2h0IGFkZGVkIHRvIHJvdXRlcyBsZWFybmVkIGZyb20gdGhpcyBCR1Agc3BlYWtlclxuICAgKi9cbiAgcmVhZG9ubHkgcGVlcldlaWdodD86IG51bWJlcjtcblxuICAvKipcbiAgICogQkdQIHBlZXJpbmcgYWRkcmVzc2VzIGZvciBhY3RpdmUtYWN0aXZlIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGJncFBlZXJpbmdBZGRyZXNzZXM/OiBhbnlbXTtcbn1cblxuLyoqXG4gKiBWUE4gY2xpZW50IGFkZHJlc3MgcG9vbCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlydHVhbE5ldHdvcmtHYXRld2F5VnBuQ2xpZW50QWRkcmVzc1Bvb2wge1xuICAvKipcbiAgICogTGlzdCBvZiBhZGRyZXNzIHByZWZpeGVzIGZvciBWUE4gY2xpZW50IGNvbm5lY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBhZGRyZXNzUHJlZml4ZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFZQTiBjbGllbnQgY29uZmlndXJhdGlvbiBmb3IgcG9pbnQtdG8tc2l0ZSBjb25uZWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheVZwbkNsaWVudENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVlBOIGNsaWVudCBhZGRyZXNzIHBvb2xcbiAgICovXG4gIHJlYWRvbmx5IHZwbkNsaWVudEFkZHJlc3NQb29sPzogVmlydHVhbE5ldHdvcmtHYXRld2F5VnBuQ2xpZW50QWRkcmVzc1Bvb2w7XG5cbiAgLyoqXG4gICAqIFZQTiBjbGllbnQgcHJvdG9jb2xzXG4gICAqIEBleGFtcGxlIFtcIklrZVYyXCIsIFwiU1NUUFwiLCBcIk9wZW5WUE5cIl1cbiAgICovXG4gIHJlYWRvbmx5IHZwbkNsaWVudFByb3RvY29scz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBWUE4gY2xpZW50IHJvb3QgY2VydGlmaWNhdGVzXG4gICAqL1xuICByZWFkb25seSB2cG5DbGllbnRSb290Q2VydGlmaWNhdGVzPzogYW55W107XG5cbiAgLyoqXG4gICAqIFZQTiBjbGllbnQgcmV2b2tlZCBjZXJ0aWZpY2F0ZXNcbiAgICovXG4gIHJlYWRvbmx5IHZwbkNsaWVudFJldm9rZWRDZXJ0aWZpY2F0ZXM/OiBhbnlbXTtcblxuICAvKipcbiAgICogUmFkaXVzIHNlcnZlciBhZGRyZXNzXG4gICAqL1xuICByZWFkb25seSByYWRpdXNTZXJ2ZXJBZGRyZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSYWRpdXMgc2VydmVyIHNlY3JldFxuICAgKi9cbiAgcmVhZG9ubHkgcmFkaXVzU2VydmVyU2VjcmV0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEN1c3RvbSByb3V0ZXMgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheUN1c3RvbVJvdXRlcyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGFkZHJlc3MgcHJlZml4ZXNcbiAgICovXG4gIHJlYWRvbmx5IGFkZHJlc3NQcmVmaXhlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEdhdGV3YXkgZGVmYXVsdCBzaXRlIHJlZmVyZW5jZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheURlZmF1bHRTaXRlIHtcbiAgLyoqXG4gICAqIFJlc291cmNlIElEIG9mIHRoZSBsb2NhbCBuZXR3b3JrIGdhdGV3YXkgdG8gdXNlIGFzIGRlZmF1bHQgc2l0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgQXp1cmUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXlcbiAqXG4gKiBFeHRlbmRzIEF6YXBpUmVzb3VyY2VQcm9wcyB3aXRoIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IHNwZWNpZmljIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyBleHRlbmRzIEF6YXBpUmVzb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBHYXRld2F5IHR5cGVcbiAgICogTXVzdCBiZSBlaXRoZXIgXCJWcG5cIiBvciBcIkV4cHJlc3NSb3V0ZVwiXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5VHlwZTogXCJWcG5cIiB8IFwiRXhwcmVzc1JvdXRlXCI7XG5cbiAgLyoqXG4gICAqIFZQTiB0eXBlIGZvciBWUE4gZ2F0ZXdheXNcbiAgICogQGRlZmF1bHRWYWx1ZSBcIlJvdXRlQmFzZWRcIlxuICAgKi9cbiAgcmVhZG9ubHkgdnBuVHlwZT86IFwiUm91dGVCYXNlZFwiIHwgXCJQb2xpY3lCYXNlZFwiO1xuXG4gIC8qKlxuICAgKiBTS1UgY29uZmlndXJhdGlvbiBmb3IgdGhlIGdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IHNrdTogVmlydHVhbE5ldHdvcmtHYXRld2F5U2t1O1xuXG4gIC8qKlxuICAgKiBJUCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIGdhdGV3YXlcbiAgICogQXQgbGVhc3Qgb25lIElQIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWRcbiAgICogVHdvIElQIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCBmb3IgYWN0aXZlLWFjdGl2ZSBtb2RlXG4gICAqL1xuICByZWFkb25seSBpcENvbmZpZ3VyYXRpb25zOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlJcENvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogRW5hYmxlIEJHUCBmb3IgdGhlIGdhdGV3YXlcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQmdwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIGFjdGl2ZS1hY3RpdmUgbW9kZSBmb3IgdGhlIGdhdGV3YXlcbiAgICogUmVxdWlyZXMgdHdvIElQIGNvbmZpZ3VyYXRpb25zXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZUFjdGl2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEJHUCBzZXR0aW5ncyBmb3IgdGhlIGdhdGV3YXlcbiAgICogUmVxdWlyZWQgaWYgZW5hYmxlQmdwIGlzIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGJncFNldHRpbmdzPzogVmlydHVhbE5ldHdvcmtHYXRld2F5QmdwU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFZQTiBnYXRld2F5IGdlbmVyYXRpb25cbiAgICogQGV4YW1wbGUgXCJHZW5lcmF0aW9uMVwiLCBcIkdlbmVyYXRpb24yXCJcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlHZW5lcmF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcm91dGVzIGZvciB0aGUgZ2F0ZXdheVxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tUm91dGVzPzogVmlydHVhbE5ldHdvcmtHYXRld2F5Q3VzdG9tUm91dGVzO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgcHJpdmF0ZSBJUCBhZGRyZXNzIGZvciB0aGUgZ2F0ZXdheVxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQcml2YXRlSXBBZGRyZXNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmYXVsdCBzaXRlIGZvciBmb3JjZSB0dW5uZWxpbmdcbiAgICovXG4gIHJlYWRvbmx5IGdhdGV3YXlEZWZhdWx0U2l0ZT86IFZpcnR1YWxOZXR3b3JrR2F0ZXdheURlZmF1bHRTaXRlO1xuXG4gIC8qKlxuICAgKiBWUE4gY2xpZW50IGNvbmZpZ3VyYXRpb24gZm9yIHBvaW50LXRvLXNpdGUgY29ubmVjdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IHZwbkNsaWVudENvbmZpZ3VyYXRpb24/OiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlWcG5DbGllbnRDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBncm91cCBJRCB3aGVyZSB0aGUgR2F0ZXdheSB3aWxsIGJlIGNyZWF0ZWRcbiAgICogT3B0aW9uYWwgLSB3aWxsIHVzZSB0aGUgc3Vic2NyaXB0aW9uIHNjb3BlIGlmIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGlnbm9yZSBjaGFuZ2VzXG4gICAqIFVzZWZ1bCBmb3IgcHJvcGVydGllcyB0aGF0IGFyZSBleHRlcm5hbGx5IG1hbmFnZWRcbiAgICpcbiAgICogQGV4YW1wbGUgW1widGFnc1wiXVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ2hhbmdlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEF6dXJlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IGltcGxlbWVudGF0aW9uXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbmdsZSwgdmVyc2lvbi1hd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlcGxhY2VzXG4gKiB2ZXJzaW9uLXNwZWNpZmljIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IGNsYXNzZXMuIEl0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uXG4gKiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlIG1haW50YWluaW5nXG4gKiBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogVmlydHVhbCBOZXR3b3JrIEdhdGV3YXlzIGFyZSB1c2VkIHRvIHNlbmQgZW5jcnlwdGVkIHRyYWZmaWMgYmV0d2VlbiBBenVyZSB2aXJ0dWFsXG4gKiBuZXR3b3JrcyBhbmQgb24tcHJlbWlzZXMgbG9jYXRpb25zIG92ZXIgdGhlIHB1YmxpYyBJbnRlcm5ldCAoVlBOKSBvciB0aHJvdWdoXG4gKiBBenVyZSBFeHByZXNzUm91dGUgY2lyY3VpdHMgKEV4cHJlc3NSb3V0ZSkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIFZQTiBHYXRld2F5OlxuICogY29uc3QgdnBuR2F0ZXdheSA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkodGhpcywgXCJ2cG5HYXRld2F5XCIsIHtcbiAqICAgbmFtZTogXCJteS12cG4tZ2F0ZXdheVwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICogICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAqICAgdnBuVHlwZTogXCJSb3V0ZUJhc2VkXCIsXG4gKiAgIHNrdToge1xuICogICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gKiAgICAgdGllcjogXCJWcG5HdzFcIlxuICogICB9LFxuICogICBpcENvbmZpZ3VyYXRpb25zOiBbe1xuICogICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICogICAgIHN1Ym5ldElkOiBnYXRld2F5U3VibmV0LmlkLFxuICogICAgIHB1YmxpY0lQQWRkcmVzc0lkOiBwdWJsaWNJcC5pZFxuICogICB9XVxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFZQTiBHYXRld2F5IHdpdGggQkdQOlxuICogY29uc3QgdnBuR2F0ZXdheSA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkodGhpcywgXCJ2cG5HYXRld2F5XCIsIHtcbiAqICAgbmFtZTogXCJteS12cG4tZ2F0ZXdheS1iZ3BcIixcbiAqICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gKiAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAqICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gKiAgIHZwblR5cGU6IFwiUm91dGVCYXNlZFwiLFxuICogICBza3U6IHtcbiAqICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICogICAgIHRpZXI6IFwiVnBuR3cxXCJcbiAqICAgfSxcbiAqICAgZW5hYmxlQmdwOiB0cnVlLFxuICogICBiZ3BTZXR0aW5nczoge1xuICogICAgIGFzbjogNjU1MTUsXG4gKiAgICAgcGVlcldlaWdodDogMFxuICogICB9LFxuICogICBpcENvbmZpZ3VyYXRpb25zOiBbe1xuICogICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICogICAgIHN1Ym5ldElkOiBnYXRld2F5U3VibmV0LmlkLFxuICogICAgIHB1YmxpY0lQQWRkcmVzc0lkOiBwdWJsaWNJcC5pZFxuICogICB9XVxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFjdGl2ZS1BY3RpdmUgVlBOIEdhdGV3YXk6XG4gKiBjb25zdCB2cG5HYXRld2F5ID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheSh0aGlzLCBcInZwbkdhdGV3YXlcIiwge1xuICogICBuYW1lOiBcIm15LXZwbi1nYXRld2F5LWFhXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICogICB2cG5UeXBlOiBcIlJvdXRlQmFzZWRcIixcbiAqICAgc2t1OiB7XG4gKiAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAqICAgICB0aWVyOiBcIlZwbkd3MVwiXG4gKiAgIH0sXG4gKiAgIGFjdGl2ZUFjdGl2ZTogdHJ1ZSxcbiAqICAgaXBDb25maWd1cmF0aW9uczogW1xuICogICAgIHtcbiAqICAgICAgIG5hbWU6IFwiY29uZmlnMVwiLFxuICogICAgICAgc3VibmV0SWQ6IGdhdGV3YXlTdWJuZXQuaWQsXG4gKiAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDogcHVibGljSXAxLmlkXG4gKiAgICAgfSxcbiAqICAgICB7XG4gKiAgICAgICBuYW1lOiBcImNvbmZpZzJcIixcbiAqICAgICAgIHN1Ym5ldElkOiBnYXRld2F5U3VibmV0LmlkLFxuICogICAgICAgcHVibGljSVBBZGRyZXNzSWQ6IHB1YmxpY0lwMi5pZFxuICogICAgIH1cbiAqICAgXVxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFZpcnR1YWxOZXR3b3JrR2F0ZXdheSBleHRlbmRzIEF6YXBpUmVzb3VyY2Uge1xuICBzdGF0aWMge1xuICAgIEF6YXBpUmVzb3VyY2UucmVnaXN0ZXJTY2hlbWFzKFxuICAgICAgVklSVFVBTF9ORVRXT1JLX0dBVEVXQVlfVFlQRSxcbiAgICAgIEFMTF9WSVJUVUFMX05FVFdPUktfR0FURVdBWV9WRVJTSU9OUyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBwcm9wZXJ0aWVzIGZvciB0aGlzIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IFZpcnR1YWxOZXR3b3JrR2F0ZXdheVByb3BzO1xuXG4gIC8vIE91dHB1dCBwcm9wZXJ0aWVzIGZvciBlYXN5IGFjY2VzcyBhbmQgcmVmZXJlbmNpbmdcbiAgcHVibGljIHJlYWRvbmx5IGlkT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBsb2NhdGlvbk91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgdGFnc091dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEF6dXJlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IHVzaW5nIHRoZSBBemFwaVJlc291cmNlIGZyYW1ld29ya1xuICAgKlxuICAgKiBUaGUgY29uc3RydWN0b3IgYXV0b21hdGljYWxseSBoYW5kbGVzIHZlcnNpb24gcmVzb2x1dGlvbiwgc2NoZW1hIHJlZ2lzdHJhdGlvbixcbiAgICogdmFsaWRhdGlvbiwgYW5kIHJlc291cmNlIGNyZWF0aW9uLiBJdCBtYWludGFpbnMgZnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAqIHdpdGggZXhpc3RpbmcgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgaW1wbGVtZW50YXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBpbnN0YW5jZVxuICAgKiBAcGFyYW0gcHJvcHMgLSBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFZpcnR1YWxOZXR3b3JrR2F0ZXdheVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBBZGQgZXh0ZW5kZWQgdGltZW91dHMgZm9yIGdhdGV3YXkgcHJvdmlzaW9uaW5nICgzMC00NSBtaW51dGVzIHR5cGljYWwpXG4gICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5hZGRPdmVycmlkZShcInRpbWVvdXRzXCIsIHtcbiAgICAgIGNyZWF0ZTogXCI2MG1cIixcbiAgICAgIHVwZGF0ZTogXCI2MG1cIixcbiAgICAgIGRlbGV0ZTogXCI2MG1cIixcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBUZXJyYWZvcm0gb3V0cHV0cyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nIGZyb20gb3RoZXIgcmVzb3VyY2VzXG4gICAgdGhpcy5pZE91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJpZFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBJRCBvZiB0aGUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXlcIixcbiAgICB9KTtcblxuICAgIHRoaXMubmFtZU91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJuYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm5hbWV9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBuYW1lIG9mIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2NhdGlvbk91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJsb2NhdGlvblwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5sb2NhdGlvbn1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGxvY2F0aW9uIG9mIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWdzT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcInRhZ3NcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0udGFnc31gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHRhZ3MgYXNzaWduZWQgdG8gdGhlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5XCIsXG4gICAgfSk7XG5cbiAgICAvLyBPdmVycmlkZSBsb2dpY2FsIElEcyB0byBtYXRjaCBvcmlnaW5hbCBuYW1pbmcgY29udmVudGlvblxuICAgIHRoaXMuaWRPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJpZFwiKTtcbiAgICB0aGlzLm5hbWVPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJuYW1lXCIpO1xuICAgIHRoaXMubG9jYXRpb25PdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJsb2NhdGlvblwiKTtcbiAgICB0aGlzLnRhZ3NPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJ0YWdzXCIpO1xuXG4gICAgLy8gQXBwbHkgaWdub3JlIGNoYW5nZXMgaWYgc3BlY2lmaWVkXG4gICAgdGhpcy5fYXBwbHlJZ25vcmVDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBSRVFVSVJFRCBBQlNUUkFDVCBNRVRIT0RTIEZST00gVmVyc2lvbmVkQXphcGlSZXNvdXJjZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHRvIHVzZSB3aGVuIG5vIGV4cGxpY2l0IHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gICAqIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHN0YWJsZSB2ZXJzaW9uIGFzIHRoZSBkZWZhdWx0XG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCIyMDI0LTA1LTAxXCI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQXp1cmUgcmVzb3VyY2UgdHlwZSBmb3IgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXlzXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFZJUlRVQUxfTkVUV09SS19HQVRFV0FZX1RZUEU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQVBJIHNjaGVtYSBmb3IgdGhlIHJlc29sdmVkIHZlcnNpb25cbiAgICogVXNlcyB0aGUgZnJhbWV3b3JrJ3Mgc2NoZW1hIHJlc29sdXRpb24gdG8gZ2V0IHRoZSBhcHByb3ByaWF0ZSBzY2hlbWFcbiAgICovXG4gIHByb3RlY3RlZCBhcGlTY2hlbWEoKTogQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2NoZW1hKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgbG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIFZpcnR1YWwgTmV0d29yayBHYXRld2F5c1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlcXVpcmVzTG9jYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgcmVzb3VyY2UgYm9keSBmb3IgdGhlIEF6dXJlIEFQSSBjYWxsXG4gICAqIFRyYW5zZm9ybXMgdGhlIGlucHV0IHByb3BlcnRpZXMgaW50byB0aGUgSlNPTiBmb3JtYXQgZXhwZWN0ZWQgYnkgQXp1cmUgUkVTVCBBUElcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZUJvZHkocHJvcHM6IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHlwZWRQcm9wcyA9IHByb3BzIGFzIFZpcnR1YWxOZXR3b3JrR2F0ZXdheVByb3BzO1xuXG4gICAgLy8gVHJhbnNmb3JtIElQIGNvbmZpZ3VyYXRpb25zIHRvIEF6dXJlIEFQSSBmb3JtYXRcbiAgICBjb25zdCBpcENvbmZpZ3VyYXRpb25zID0gdHlwZWRQcm9wcy5pcENvbmZpZ3VyYXRpb25zLm1hcCgoY29uZmlnKSA9PiAoe1xuICAgICAgbmFtZTogY29uZmlnLm5hbWUsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHByaXZhdGVJUEFsbG9jYXRpb25NZXRob2Q6XG4gICAgICAgICAgY29uZmlnLnByaXZhdGVJUEFsbG9jYXRpb25NZXRob2QgfHwgXCJEeW5hbWljXCIsXG4gICAgICAgIHN1Ym5ldDoge1xuICAgICAgICAgIGlkOiBjb25maWcuc3VibmV0SWQsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIE9ubHkgaW5jbHVkZSBwdWJsaWNJUEFkZHJlc3MgaWYgYSBwdWJsaWNJUEFkZHJlc3NJZCBpcyBwcm92aWRlZFxuICAgICAgICAuLi4oY29uZmlnLnB1YmxpY0lQQWRkcmVzc0lkICYmIHtcbiAgICAgICAgICBwdWJsaWNJUEFkZHJlc3M6IHtcbiAgICAgICAgICAgIGlkOiBjb25maWcucHVibGljSVBBZGRyZXNzSWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbixcbiAgICAgIHRhZ3M6IHRoaXMuYWxsVGFncygpLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBnYXRld2F5VHlwZTogdHlwZWRQcm9wcy5nYXRld2F5VHlwZSxcbiAgICAgICAgdnBuVHlwZTogdHlwZWRQcm9wcy52cG5UeXBlIHx8IFwiUm91dGVCYXNlZFwiLFxuICAgICAgICBlbmFibGVCZ3A6IHR5cGVkUHJvcHMuZW5hYmxlQmdwIHx8IGZhbHNlLFxuICAgICAgICBhY3RpdmVBY3RpdmU6IHR5cGVkUHJvcHMuYWN0aXZlQWN0aXZlIHx8IGZhbHNlLFxuICAgICAgICBza3U6IHR5cGVkUHJvcHMuc2t1LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBpcENvbmZpZ3VyYXRpb25zLFxuICAgICAgICBiZ3BTZXR0aW5nczogdHlwZWRQcm9wcy5iZ3BTZXR0aW5ncyxcbiAgICAgICAgdnBuR2F0ZXdheUdlbmVyYXRpb246IHR5cGVkUHJvcHMudnBuR2F0ZXdheUdlbmVyYXRpb24sXG4gICAgICAgIGN1c3RvbVJvdXRlczogdHlwZWRQcm9wcy5jdXN0b21Sb3V0ZXMsXG4gICAgICAgIGVuYWJsZVByaXZhdGVJcEFkZHJlc3M6IHR5cGVkUHJvcHMuZW5hYmxlUHJpdmF0ZUlwQWRkcmVzcyxcbiAgICAgICAgZ2F0ZXdheURlZmF1bHRTaXRlOiB0eXBlZFByb3BzLmdhdGV3YXlEZWZhdWx0U2l0ZSxcbiAgICAgICAgdnBuQ2xpZW50Q29uZmlndXJhdGlvbjogdHlwZWRQcm9wcy52cG5DbGllbnRDb25maWd1cmF0aW9uLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFVCTElDIE1FVEhPRFMgRk9SIFZJUlRVQUwgTkVUV09SSyBHQVRFV0FZIE9QRVJBVElPTlNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdWJzY3JpcHRpb24gSUQgZnJvbSB0aGUgVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgSURcbiAgICogRXh0cmFjdHMgdGhlIHN1YnNjcmlwdGlvbiBJRCBmcm9tIHRoZSBBenVyZSByZXNvdXJjZSBJRCBmb3JtYXRcbiAgICovXG4gIHB1YmxpYyBnZXQgc3Vic2NyaXB0aW9uSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBpZFBhcnRzID0gdGhpcy5pZC5zcGxpdChcIi9cIik7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uSW5kZXggPSBpZFBhcnRzLmluZGV4T2YoXCJzdWJzY3JpcHRpb25zXCIpO1xuICAgIGlmIChzdWJzY3JpcHRpb25JbmRleCAhPT0gLTEgJiYgc3Vic2NyaXB0aW9uSW5kZXggKyAxIDwgaWRQYXJ0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBpZFBhcnRzW3N1YnNjcmlwdGlvbkluZGV4ICsgMV07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiVW5hYmxlIHRvIGV4dHJhY3Qgc3Vic2NyaXB0aW9uIElEIGZyb20gVmlydHVhbCBOZXR3b3JrIEdhdGV3YXkgSURcIixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCByZXNvdXJjZSBpZGVudGlmaWVyIGZvciB1c2UgaW4gb3RoZXIgQXp1cmUgcmVzb3VyY2VzXG4gICAqIEFsaWFzIGZvciB0aGUgaWQgcHJvcGVydHkgdG8gbWF0Y2ggb3JpZ2luYWwgaW50ZXJmYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHJlc291cmNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB0YWcgdG8gdGhlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5XG4gICAqIE5vdGU6IFRoaXMgbW9kaWZpZXMgdGhlIGNvbnN0cnVjdCBwcm9wcyBidXQgcmVxdWlyZXMgYSBuZXcgZGVwbG95bWVudCB0byB0YWtlIGVmZmVjdFxuICAgKi9cbiAgcHVibGljIGFkZFRhZyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcy50YWdzKSB7XG4gICAgICAodGhpcy5wcm9wcyBhcyBhbnkpLnRhZ3MgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy50YWdzIVtrZXldID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgdGFnIGZyb20gdGhlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5XG4gICAqIE5vdGU6IFRoaXMgbW9kaWZpZXMgdGhlIGNvbnN0cnVjdCBwcm9wcyBidXQgcmVxdWlyZXMgYSBuZXcgZGVwbG95bWVudCB0byB0YWtlIGVmZmVjdFxuICAgKi9cbiAgcHVibGljIHJlbW92ZVRhZyhrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLnRhZ3MgJiYgdGhpcy5wcm9wcy50YWdzW2tleV0pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnByb3BzLnRhZ3Nba2V5XTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQUklWQVRFIEhFTFBFUiBNRVRIT0RTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgaWdub3JlIGNoYW5nZXMgbGlmZWN5Y2xlIHJ1bGVzIGlmIHNwZWNpZmllZCBpbiBwcm9wc1xuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlJZ25vcmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMgJiYgdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuYWRkT3ZlcnJpZGUoXCJsaWZlY3ljbGVcIiwge1xuICAgICAgICBpZ25vcmVfY2hhbmdlczogdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -687,5 +687,113 @@ describe("VirtualNetworkGateway - Implementation", () => {
|
|
|
687
687
|
expect(vng.props.vpnGatewayGeneration).toBe("Generation2");
|
|
688
688
|
});
|
|
689
689
|
});
|
|
690
|
+
describe("ExpressRoute Gateway Without Public IP", () => {
|
|
691
|
+
it("should create ExpressRoute gateway without public IP (auto-assigned)", () => {
|
|
692
|
+
const vng = new virtual_network_gateway_1.VirtualNetworkGateway(stack, "ErGatewayNoPublicIp", {
|
|
693
|
+
name: "vng-er-no-pip",
|
|
694
|
+
location: "eastus",
|
|
695
|
+
gatewayType: "ExpressRoute",
|
|
696
|
+
sku: {
|
|
697
|
+
name: "ErGw1AZ",
|
|
698
|
+
tier: "ErGw1AZ",
|
|
699
|
+
},
|
|
700
|
+
ipConfigurations: [
|
|
701
|
+
{
|
|
702
|
+
name: "default",
|
|
703
|
+
subnetId: "/subscriptions/sub-id/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/GatewaySubnet",
|
|
704
|
+
// publicIPAddressId intentionally omitted
|
|
705
|
+
},
|
|
706
|
+
],
|
|
707
|
+
});
|
|
708
|
+
expect(vng).toBeDefined();
|
|
709
|
+
expect(vng).toBeInstanceOf(virtual_network_gateway_1.VirtualNetworkGateway);
|
|
710
|
+
expect(vng.props.gatewayType).toBe("ExpressRoute");
|
|
711
|
+
expect(vng.props.ipConfigurations).toHaveLength(1);
|
|
712
|
+
expect(vng.props.ipConfigurations[0].publicIPAddressId).toBeUndefined();
|
|
713
|
+
});
|
|
714
|
+
it("should omit publicIPAddress from synthesized JSON when not provided", () => {
|
|
715
|
+
new virtual_network_gateway_1.VirtualNetworkGateway(stack, "ErGatewayNoPublicIpSynth", {
|
|
716
|
+
name: "vng-er-no-pip-synth",
|
|
717
|
+
location: "eastus",
|
|
718
|
+
gatewayType: "ExpressRoute",
|
|
719
|
+
sku: {
|
|
720
|
+
name: "ErGw1AZ",
|
|
721
|
+
tier: "ErGw1AZ",
|
|
722
|
+
},
|
|
723
|
+
ipConfigurations: [
|
|
724
|
+
{
|
|
725
|
+
name: "default",
|
|
726
|
+
subnetId: "/subscriptions/sub-id/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/GatewaySubnet",
|
|
727
|
+
// publicIPAddressId intentionally omitted
|
|
728
|
+
},
|
|
729
|
+
],
|
|
730
|
+
});
|
|
731
|
+
const synthesized = cdktf_1.Testing.synth(stack);
|
|
732
|
+
const stackConfig = JSON.parse(synthesized);
|
|
733
|
+
// Find the azapi_resource for the gateway
|
|
734
|
+
const azapiResources = stackConfig.resource?.azapi_resource;
|
|
735
|
+
expect(azapiResources).toBeDefined();
|
|
736
|
+
// Find the gateway resource by looking for any key containing the identifier
|
|
737
|
+
const resourceKeys = Object.keys(azapiResources);
|
|
738
|
+
const gatewayKey = resourceKeys.find((key) => key.toLowerCase().includes("ergatewaynopublicipsynth") ||
|
|
739
|
+
key.toLowerCase().includes("er_gateway_no_public_ip_synth"));
|
|
740
|
+
expect(gatewayKey).toBeDefined();
|
|
741
|
+
const gatewayResource = azapiResources[gatewayKey];
|
|
742
|
+
expect(gatewayResource).toBeDefined();
|
|
743
|
+
// Access the body (it may be a string or object depending on synthesis)
|
|
744
|
+
const body = typeof gatewayResource.body === "string"
|
|
745
|
+
? JSON.parse(gatewayResource.body)
|
|
746
|
+
: gatewayResource.body;
|
|
747
|
+
expect(body.properties.ipConfigurations).toBeDefined();
|
|
748
|
+
expect(body.properties.ipConfigurations).toHaveLength(1);
|
|
749
|
+
// Verify publicIPAddress is not present in the ipConfiguration
|
|
750
|
+
const ipConfig = body.properties.ipConfigurations[0];
|
|
751
|
+
expect(ipConfig.name).toBe("default");
|
|
752
|
+
expect(ipConfig.properties.subnet).toBeDefined();
|
|
753
|
+
expect(ipConfig.properties.publicIPAddress).toBeUndefined();
|
|
754
|
+
});
|
|
755
|
+
it("should include publicIPAddress in synthesized JSON when provided", () => {
|
|
756
|
+
new virtual_network_gateway_1.VirtualNetworkGateway(stack, "ErGatewayWithPublicIp", {
|
|
757
|
+
name: "vng-er-with-pip",
|
|
758
|
+
location: "eastus",
|
|
759
|
+
gatewayType: "ExpressRoute",
|
|
760
|
+
sku: {
|
|
761
|
+
name: "ErGw1AZ",
|
|
762
|
+
tier: "ErGw1AZ",
|
|
763
|
+
},
|
|
764
|
+
ipConfigurations: [
|
|
765
|
+
{
|
|
766
|
+
name: "default",
|
|
767
|
+
subnetId: "/subscriptions/sub-id/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/GatewaySubnet",
|
|
768
|
+
publicIPAddressId: "/subscriptions/sub-id/resourceGroups/test-rg/providers/Microsoft.Network/publicIPAddresses/test-pip",
|
|
769
|
+
},
|
|
770
|
+
],
|
|
771
|
+
});
|
|
772
|
+
const synthesized = cdktf_1.Testing.synth(stack);
|
|
773
|
+
const stackConfig = JSON.parse(synthesized);
|
|
774
|
+
// Find the azapi_resource for the gateway
|
|
775
|
+
const azapiResources = stackConfig.resource?.azapi_resource;
|
|
776
|
+
expect(azapiResources).toBeDefined();
|
|
777
|
+
// Find the gateway resource by looking for any key containing the identifier
|
|
778
|
+
const resourceKeys = Object.keys(azapiResources);
|
|
779
|
+
const gatewayKey = resourceKeys.find((key) => key.toLowerCase().includes("ergatewaywithpublicip") ||
|
|
780
|
+
key.toLowerCase().includes("er_gateway_with_public_ip"));
|
|
781
|
+
expect(gatewayKey).toBeDefined();
|
|
782
|
+
const gatewayResource = azapiResources[gatewayKey];
|
|
783
|
+
expect(gatewayResource).toBeDefined();
|
|
784
|
+
// Access the body (it may be a string or object depending on synthesis)
|
|
785
|
+
const body = typeof gatewayResource.body === "string"
|
|
786
|
+
? JSON.parse(gatewayResource.body)
|
|
787
|
+
: gatewayResource.body;
|
|
788
|
+
expect(body.properties.ipConfigurations).toBeDefined();
|
|
789
|
+
expect(body.properties.ipConfigurations).toHaveLength(1);
|
|
790
|
+
// Verify publicIPAddress IS present in the ipConfiguration
|
|
791
|
+
const ipConfig = body.properties.ipConfigurations[0];
|
|
792
|
+
expect(ipConfig.name).toBe("default");
|
|
793
|
+
expect(ipConfig.properties.subnet).toBeDefined();
|
|
794
|
+
expect(ipConfig.properties.publicIPAddress).toBeDefined();
|
|
795
|
+
expect(ipConfig.properties.publicIPAddress.id).toBe("/subscriptions/sub-id/resourceGroups/test-rg/providers/Microsoft.Network/publicIPAddresses/test-pip");
|
|
796
|
+
});
|
|
797
|
+
});
|
|
690
798
|
});
|
|
691
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1uZXR3b3JrLWdhdGV3YXkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29ya2dhdGV3YXkvdGVzdC92aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsaUNBQWdDO0FBQ2hDLCtCQUErQjtBQUMvQiw0RUFHd0M7QUFFeEMsUUFBUSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFFaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1FBQ2hELEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxHQUFHLEVBQUU7WUFDeEYsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixHQUFHLEVBQUU7b0JBQ0gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLFFBQVE7aUJBQ2Y7Z0JBQ0QsZ0JBQWdCLEVBQUU7b0JBQ2hCO3dCQUNFLElBQUksRUFBRSxTQUFTO3dCQUNmLFFBQVEsRUFDTixnSEFBZ0g7d0JBQ2xILGlCQUFpQixFQUNmLDJGQUEyRjtxQkFDOUY7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsTUFBTSxHQUFHLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRS9ELE1B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QUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtRQUN0QyxFQUFFLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO1lBQ2hELE1BQU0sR0FBRyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDbkQsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixXQUFXLEVBQUUsS0FBSztnQkFDbEIsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLEdBQUcsRUFBRTtvQkFDSCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsUUFBUTtpQkFDZjtnQkFDRCxvQkFBb0IsRUFBRSxhQUFhO2dCQUNuQyxnQkFBZ0IsRUFBRTtvQkFDaEI7d0JBQ0UsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsUUFBUSxFQUNOLGdIQUFnSDt3QkFDbEgsaUJBQWlCLEVBQ2YsMkZBQTJGO3FCQUM5RjtpQkFDRjthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tcHJlaGVuc2l2ZSB0ZXN0cyBmb3IgdGhlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IGltcGxlbWVudGF0aW9uXG4gKlxuICogVGhpcyB0ZXN0IHN1aXRlIHZhbGlkYXRlcyB0aGUgVmlydHVhbE5ldHdvcmtHYXRld2F5IGNsYXNzIHVzaW5nIHRoZSBBemFwaVJlc291cmNlIGZyYW1ld29yay5cbiAqIFRlc3RzIGNvdmVyIGF1dG9tYXRpYyB2ZXJzaW9uIHJlc29sdXRpb24sIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZywgc2NoZW1hIHZhbGlkYXRpb24sXG4gKiBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiwgYW5kIHJlc291cmNlIGNyZWF0aW9uLlxuICovXG5cbmltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHtcbiAgVmlydHVhbE5ldHdvcmtHYXRld2F5LFxuICBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi92aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheVwiO1xuXG5kZXNjcmliZShcIlZpcnR1YWxOZXR3b3JrR2F0ZXdheSAtIEltcGxlbWVudGF0aW9uXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcIlRlc3RTdGFja1wiKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDb25zdHJ1Y3RvciBhbmQgQmFzaWMgUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHZpcnR1YWwgbmV0d29yayBnYXRld2F5IHdpdGggYXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrR2F0ZXdheVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3Qtdm5nXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KHZuZykudG9CZUluc3RhbmNlT2YoVmlydHVhbE5ldHdvcmtHYXRld2F5KTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMpLnRvQmUocHJvcHMpO1xuICAgICAgZXhwZWN0KHZuZy5uYW1lKS50b0JlKFwidGVzdC12bmdcIik7XG4gICAgICBleHBlY3Qodm5nLmxvY2F0aW9uKS50b0JlKFwiZWFzdHVzXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHZpcnR1YWwgbmV0d29yayBnYXRld2F5IHdpdGggZXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXZuZy1waW5uZWRcIixcbiAgICAgICAgbG9jYXRpb246IFwid2VzdHVzXCIsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyNC0wMS0wMVwiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzJcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MlwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0YWdzOiB7IGVudmlyb25tZW50OiBcInRlc3RcIiB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KHZuZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTAxLTAxXCIpO1xuICAgICAgZXhwZWN0KHZuZy50YWdzKS50b0VxdWFsKHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHZpcnR1YWwgbmV0d29yayBnYXRld2F5IHdpdGggYWxsIG9wdGlvbmFsIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrR2F0ZXdheVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3Qtdm5nLWZ1bGxcIixcbiAgICAgICAgbG9jYXRpb246IFwiY2VudHJhbHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICB2cG5UeXBlOiBcIlJvdXRlQmFzZWRcIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzNcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3M1wiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBwcml2YXRlSVBBbGxvY2F0aW9uTWV0aG9kOiBcIkR5bmFtaWNcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGVuYWJsZUJncDogdHJ1ZSxcbiAgICAgICAgYWN0aXZlQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgYmdwU2V0dGluZ3M6IHtcbiAgICAgICAgICBhc246IDY1NTE1LFxuICAgICAgICAgIHBlZXJXZWlnaHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHZwbkdhdGV3YXlHZW5lcmF0aW9uOiBcIkdlbmVyYXRpb24yXCIsXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgICAgcHJvamVjdDogXCJuZXR3b3JraW5nXCIsXG4gICAgICAgICAgb3duZXI6IFwidGVhbUBjb21wYW55LmNvbVwiLFxuICAgICAgICB9LFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5nYXRld2F5VHlwZSkudG9CZShcIlZwblwiKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudnBuVHlwZSkudG9CZShcIlJvdXRlQmFzZWRcIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmVuYWJsZUJncCkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuYmdwU2V0dGluZ3MpLnRvRXF1YWwocHJvcHMuYmdwU2V0dGluZ3MpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy50YWdzKS50b0VxdWFsKHByb3BzLnRhZ3MpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIGRlZmF1bHQgbmFtZSB3aGVuIG5hbWUgaXMgbm90IHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyA9IHtcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlRlc3RWTkdcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3Qodm5nLm5hbWUpLnRvQmUoXCJUZXN0Vk5HXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlJlc291cmNlIFR5cGUgYW5kIEFQSSBWZXJzaW9uc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGF2ZSBjb3JyZWN0IHJlc291cmNlIHR5cGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXZuZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nKS50b0JlSW5zdGFuY2VPZihWaXJ0dWFsTmV0d29ya0dhdGV3YXkpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBhbGwgcmVnaXN0ZXJlZCBBUEkgdmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbnMgPSBbXCIyMDI0LTAxLTAxXCIsIFwiMjAyNC0wNS0wMVwiXTtcblxuICAgICAgdmVyc2lvbnMuZm9yRWFjaCgodmVyc2lvbikgPT4ge1xuICAgICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KFxuICAgICAgICAgIHN0YWNrLFxuICAgICAgICAgIGBWTkctJHt2ZXJzaW9uLnJlcGxhY2UoLy0vZywgXCJcIil9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgdm5nLSR7dmVyc2lvbn1gLFxuICAgICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgICAgICBza3U6IHtcbiAgICAgICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBleHBlY3Qodm5nLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZSh2ZXJzaW9uKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIGxhdGVzdCB2ZXJzaW9uIGFzIGRlZmF1bHRcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXZuZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDUtMDFcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiR2F0ZXdheSBUeXBlIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBWUE4gZ2F0ZXdheVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlZwbkdhdGV3YXlcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy12cG5cIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICB2cG5UeXBlOiBcIlJvdXRlQmFzZWRcIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuZ2F0ZXdheVR5cGUpLnRvQmUoXCJWcG5cIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLnZwblR5cGUpLnRvQmUoXCJSb3V0ZUJhc2VkXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIEV4cHJlc3NSb3V0ZSBnYXRld2F5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiRXJHYXRld2F5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIkV4cHJlc3NSb3V0ZVwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIkVyR3cxQVpcIixcbiAgICAgICAgICB0aWVyOiBcIkVyR3cxQVpcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmdhdGV3YXlUeXBlKS50b0JlKFwiRXhwcmVzc1JvdXRlXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZGVmYXVsdCB2cG5UeXBlIHRvIFJvdXRlQmFzZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJEZWZhdWx0VnBuVHlwZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWRlZmF1bHRcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy52cG5UeXBlKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiSVAgQ29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGdhdGV3YXkgd2l0aCBzaW5nbGUgSVAgY29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlNpbmdsZUlQXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctc2luZ2xlXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjb25maWcxXCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXAxXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmlwQ29uZmlndXJhdGlvbnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuaXBDb25maWd1cmF0aW9uc1swXS5uYW1lKS50b0JlKFwiY29uZmlnMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBhY3RpdmUtYWN0aXZlIGdhdGV3YXkgd2l0aCB0d28gSVAgY29uZmlndXJhdGlvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJBY3RpdmVBY3RpdmVcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1hYVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZlQWN0aXZlOiB0cnVlLFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjb25maWcxXCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXAxXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImNvbmZpZzJcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcDJcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuYWN0aXZlQWN0aXZlKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5pcENvbmZpZ3VyYXRpb25zKS50b0hhdmVMZW5ndGgoMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQkdQIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggQkdQIGVuYWJsZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJCZ3BFbmFibGVkXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctYmdwXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBlbmFibGVCZ3A6IHRydWUsXG4gICAgICAgIGJncFNldHRpbmdzOiB7XG4gICAgICAgICAgYXNuOiA2NTUxNSxcbiAgICAgICAgICBwZWVyV2VpZ2h0OiAwLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuZW5hYmxlQmdwKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5iZ3BTZXR0aW5ncykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuYmdwU2V0dGluZ3M/LmFzbikudG9CZSg2NTUxNSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBkZWZhdWx0IGVuYWJsZUJncCB0byBmYWxzZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkJncERpc2FibGVkXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctbm8tYmdwXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuZW5hYmxlQmdwKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiU0tVIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggQmFzaWMgU0tVXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiQmFzaWNTa3VcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1iYXNpY1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiQmFzaWNcIixcbiAgICAgICAgICB0aWVyOiBcIkJhc2ljXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5za3UubmFtZSkudG9CZShcIkJhc2ljXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5za3UudGllcikudG9CZShcIkJhc2ljXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGdhdGV3YXkgd2l0aCBWcG5HdzEgU0tVXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVnBuR3cxU2t1XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctdnBuZ3cxXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuc2t1Lm5hbWUpLnRvQmUoXCJWcG5HdzFcIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLnNrdS50aWVyKS50b0JlKFwiVnBuR3cxXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRhZ3MgTWFuYWdlbWVudFwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGdhdGV3YXkgd2l0aCB0YWdzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGFnZ2VkR2F0ZXdheVwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLXRhZ2dlZFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIixcbiAgICAgICAgICBjb3N0X2NlbnRlcjogXCJlbmdpbmVlcmluZ1wiLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudGFncykudG9FcXVhbCh7XG4gICAgICAgIGVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIixcbiAgICAgICAgY29zdF9jZW50ZXI6IFwiZW5naW5lZXJpbmdcIixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBhZGRpbmcgdGFnc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkFkZFRhZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWFkZC10YWdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0sXG4gICAgICB9KTtcblxuICAgICAgdm5nLmFkZFRhZyhcIm5ld1RhZ1wiLCBcIm5ld1ZhbHVlXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy50YWdzIS5uZXdUYWcpLnRvQmUoXCJuZXdWYWx1ZVwiKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudGFncyEuZW52aXJvbm1lbnQpLnRvQmUoXCJ0ZXN0XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCByZW1vdmluZyB0YWdzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiUmVtb3ZlVGFnXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctcmVtb3ZlLXRhZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGVudmlyb25tZW50OiBcInRlc3RcIixcbiAgICAgICAgICB0ZW1wb3Jhcnk6IFwidHJ1ZVwiLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHZuZy5yZW1vdmVUYWcoXCJ0ZW1wb3JhcnlcIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLnRhZ3MhLnRlbXBvcmFyeSkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy50YWdzIS5lbnZpcm9ubWVudCkudG9CZShcInRlc3RcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVGVycmFmb3JtIE91dHB1dHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBUZXJyYWZvcm0gb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIk91dHB1dFRlc3RcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1vdXRwdXRzXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcuaWRPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3Qodm5nLm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3Qodm5nLmxvY2F0aW9uT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHZuZy50YWdzT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSBjb3JyZWN0IGlkIGZvcm1hdFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIklkRm9ybWF0XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctaWRcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5pZCkudG9NYXRjaCgvXlxcJFxcey4qXFwuaWRcXH0kLyk7XG4gICAgICBleHBlY3Qodm5nLnJlc291cmNlSWQpLnRvQmUodm5nLmlkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJWZXJzaW9uIENvbXBhdGliaWxpdHlcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHdvcmsgd2l0aCBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9uc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2ZXJzaW9ucyA9IFtcIjIwMjQtMDEtMDFcIiwgXCIyMDI0LTA1LTAxXCJdO1xuXG4gICAgICB2ZXJzaW9ucy5mb3JFYWNoKCh2ZXJzaW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoXG4gICAgICAgICAgc3RhY2ssXG4gICAgICAgICAgYFZORy0ke3ZlcnNpb24ucmVwbGFjZSgvLS9nLCBcIlwiKX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IGB2bmctJHt2ZXJzaW9ufWAsXG4gICAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICAgIGFwaVZlcnNpb246IHZlcnNpb24sXG4gICAgICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgICAgIHNrdToge1xuICAgICAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGV4cGVjdCh2bmcucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKHZlcnNpb24pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiSWdub3JlIENoYW5nZXMgQ29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgYXBwbHkgaWdub3JlIGNoYW5nZXMgbGlmZWN5Y2xlIHJ1bGVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiSWdub3JlQ2hhbmdlc1wiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWlnbm9yZVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nKS50b0JlSW5zdGFuY2VPZihWaXJ0dWFsTmV0d29ya0dhdGV3YXkpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5pZ25vcmVDaGFuZ2VzKS50b0VxdWFsKFtcInRhZ3NcIl0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGVtcHR5IGlnbm9yZSBjaGFuZ2VzIGFycmF5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiRW1wdHlJZ25vcmVcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1lbXB0eS1pZ25vcmVcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcpLnRvQmVJbnN0YW5jZU9mKFZpcnR1YWxOZXR3b3JrR2F0ZXdheSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQ0RLIFRlcnJhZm9ybSBJbnRlZ3JhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3ludGhlc2l6ZSB0byB2YWxpZCBUZXJyYWZvcm0gY29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgICBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlN5bnRoVGVzdFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLXN5bnRoXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0YWdzOiB7IHRlc3Q6IFwic3ludGhlc2lzXCIgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICBjb25zdCBzdGFja0NvbmZpZyA9IEpTT04ucGFyc2Uoc3ludGhlc2l6ZWQpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLnJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIGdhdGV3YXlzIGluIHRoZSBzYW1lIHN0YWNrXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZzEgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlZORzFcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy0xXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHZuZzIgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlZORzJcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy0yXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcIndlc3R1c1wiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjQtMDEtMDFcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiRXhwcmVzc1JvdXRlXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiRXJHdzFBWlwiLFxuICAgICAgICAgIHRpZXI6IFwiRXJHdzFBWlwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcxLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDUtMDFcIik7XG4gICAgICBleHBlY3Qodm5nMi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTAxLTAxXCIpO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlZQTiBDbGllbnQgQ29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGdhdGV3YXkgd2l0aCBWUE4gY2xpZW50IGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJQMlNcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1wMnNcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICB2cG5UeXBlOiBcIlJvdXRlQmFzZWRcIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB2cG5DbGllbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgdnBuQ2xpZW50QWRkcmVzc1Bvb2w6IHtcbiAgICAgICAgICAgIGFkZHJlc3NQcmVmaXhlczogW1wiMTcyLjE2LjAuMC8yNFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZwbkNsaWVudFByb3RvY29sczogW1wiSWtlVjJcIiwgXCJPcGVuVlBOXCJdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudnBuQ2xpZW50Q29uZmlndXJhdGlvbikudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgdm5nLnByb3BzLnZwbkNsaWVudENvbmZpZ3VyYXRpb24/LnZwbkNsaWVudEFkZHJlc3NQb29sPy5hZGRyZXNzUHJlZml4ZXMsXG4gICAgICApLnRvQ29udGFpbihcIjE3Mi4xNi4wLjAvMjRcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVlBOIEdhdGV3YXkgR2VuZXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGdhdGV3YXkgd2l0aCBHZW5lcmF0aW9uMlwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkdlbjJcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1nZW4yXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgdnBuVHlwZTogXCJSb3V0ZUJhc2VkXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cyXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzJcIixcbiAgICAgICAgfSxcbiAgICAgICAgdnBuR2F0ZXdheUdlbmVyYXRpb246IFwiR2VuZXJhdGlvbjJcIixcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLnZwbkdhdGV3YXlHZW5lcmF0aW9uKS50b0JlKFwiR2VuZXJhdGlvbjJcIik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
799
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1uZXR3b3JrLWdhdGV3YXkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29ya2dhdGV3YXkvdGVzdC92aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsaUNBQWdDO0FBQ2hDLCtCQUErQjtBQUMvQiw0RUFHd0M7QUFFeEMsUUFBUSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFFaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1FBQ2hELEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxHQUFHLEVBQUU7WUFDeEYsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixHQUFHLEVBQUU7b0JBQ0gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLFFBQVE7aUJBQ2Y7Z0JBQ0QsZ0JBQWdCLEVBQUU7b0JBQ2hCO3dCQUNFLElBQUksRUFBRSxTQUFTO3dCQUNmLFFBQVEsRUFDTixnSEFBZ0g7d0JBQ2xILGlCQUFpQixFQUNmLDJGQUEyRjtxQkFDOUY7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsTUFBTSxHQUFHLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRS9ELE1B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QUksQ0FDakQscUdBQXFHLENBQ3RHLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXByZWhlbnNpdmUgdGVzdHMgZm9yIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheSBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgdGhlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheSBjbGFzcyB1c2luZyB0aGUgQXphcGlSZXNvdXJjZSBmcmFtZXdvcmsuXG4gKiBUZXN0cyBjb3ZlciBhdXRvbWF0aWMgdmVyc2lvbiByZXNvbHV0aW9uLCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcsIHNjaGVtYSB2YWxpZGF0aW9uLFxuICogcHJvcGVydHkgdHJhbnNmb3JtYXRpb24sIGFuZCByZXNvdXJjZSBjcmVhdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7XG4gIFZpcnR1YWxOZXR3b3JrR2F0ZXdheSxcbiAgVmlydHVhbE5ldHdvcmtHYXRld2F5UHJvcHMsXG59IGZyb20gXCIuLi9saWIvdmlydHVhbC1uZXR3b3JrLWdhdGV3YXlcIjtcblxuZGVzY3JpYmUoXCJWaXJ0dWFsTmV0d29ya0dhdGV3YXkgLSBJbXBsZW1lbnRhdGlvblwiLCAoKSA9PiB7XG4gIGxldCBhcHA6IGNka3RmLkFwcDtcbiAgbGV0IHN0YWNrOiBjZGt0Zi5UZXJyYWZvcm1TdGFjaztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IGNka3RmLlRlcnJhZm9ybVN0YWNrKGFwcCwgXCJUZXN0U3RhY2tcIik7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQ29uc3RydWN0b3IgYW5kIEJhc2ljIFByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgZ2F0ZXdheSB3aXRoIGF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXZuZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGVzdFZOR1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdCh2bmcpLnRvQmVJbnN0YW5jZU9mKFZpcnR1YWxOZXR3b3JrR2F0ZXdheSk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdCh2bmcubmFtZSkudG9CZShcInRlc3Qtdm5nXCIpO1xuICAgICAgZXhwZWN0KHZuZy5sb2NhdGlvbikudG9CZShcImVhc3R1c1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgZ2F0ZXdheSB3aXRoIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZ1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtHYXRld2F5UHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC12bmctcGlubmVkXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcIndlc3R1c1wiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjQtMDEtMDFcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cyXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzJcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdGFnczogeyBlbnZpcm9ubWVudDogXCJ0ZXN0XCIgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGVzdFZOR1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdCh2bmcucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wMS0wMVwiKTtcbiAgICAgIGV4cGVjdCh2bmcudGFncykudG9FcXVhbCh7IGVudmlyb25tZW50OiBcInRlc3RcIiB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgZ2F0ZXdheSB3aXRoIGFsbCBvcHRpb25hbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXZuZy1mdWxsXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImNlbnRyYWx1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgdnBuVHlwZTogXCJSb3V0ZUJhc2VkXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3czXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzNcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgcHJpdmF0ZUlQQWxsb2NhdGlvbk1ldGhvZDogXCJEeW5hbWljXCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBlbmFibGVCZ3A6IHRydWUsXG4gICAgICAgIGFjdGl2ZUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIGJncFNldHRpbmdzOiB7XG4gICAgICAgICAgYXNuOiA2NTUxNSxcbiAgICAgICAgICBwZWVyV2VpZ2h0OiAwLFxuICAgICAgICB9LFxuICAgICAgICB2cG5HYXRld2F5R2VuZXJhdGlvbjogXCJHZW5lcmF0aW9uMlwiLFxuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IFwicHJvZHVjdGlvblwiLFxuICAgICAgICAgIHByb2plY3Q6IFwibmV0d29ya2luZ1wiLFxuICAgICAgICAgIG93bmVyOiBcInRlYW1AY29tcGFueS5jb21cIixcbiAgICAgICAgfSxcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGVzdFZOR1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuZ2F0ZXdheVR5cGUpLnRvQmUoXCJWcG5cIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLnZwblR5cGUpLnRvQmUoXCJSb3V0ZUJhc2VkXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5lbmFibGVCZ3ApLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmJncFNldHRpbmdzKS50b0VxdWFsKHByb3BzLmJncFNldHRpbmdzKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudGFncykudG9FcXVhbChwcm9wcy50YWdzKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHVzZSBkZWZhdWx0IG5hbWUgd2hlbiBuYW1lIGlzIG5vdCBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtHYXRld2F5UHJvcHMgPSB7XG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KHZuZy5uYW1lKS50b0JlKFwiVGVzdFZOR1wiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJSZXNvdXJjZSBUeXBlIGFuZCBBUEkgVmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhdmUgY29ycmVjdCByZXNvdXJjZSB0eXBlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGVzdFZOR1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC12bmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZykudG9CZUluc3RhbmNlT2YoVmlydHVhbE5ldHdvcmtHYXRld2F5KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgYWxsIHJlZ2lzdGVyZWQgQVBJIHZlcnNpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZlcnNpb25zID0gW1wiMjAyNC0wMS0wMVwiLCBcIjIwMjQtMDUtMDFcIl07XG5cbiAgICAgIHZlcnNpb25zLmZvckVhY2goKHZlcnNpb24pID0+IHtcbiAgICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShcbiAgICAgICAgICBzdGFjayxcbiAgICAgICAgICBgVk5HLSR7dmVyc2lvbi5yZXBsYWNlKC8tL2csIFwiXCIpfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYHZuZy0ke3ZlcnNpb259YCxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICAgICAgYXBpVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICAgICAgc2t1OiB7XG4gICAgICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgZXhwZWN0KHZuZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUodmVyc2lvbik7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHVzZSBsYXRlc3QgdmVyc2lvbiBhcyBkZWZhdWx0XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGVzdFZOR1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC12bmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkdhdGV3YXkgVHlwZSBDb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgVlBOIGdhdGV3YXlcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJWcG5HYXRld2F5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctdnBuXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgdnBuVHlwZTogXCJSb3V0ZUJhc2VkXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmdhdGV3YXlUeXBlKS50b0JlKFwiVnBuXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy52cG5UeXBlKS50b0JlKFwiUm91dGVCYXNlZFwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBFeHByZXNzUm91dGUgZ2F0ZXdheVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkVyR2F0ZXdheVwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWVyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJFeHByZXNzUm91dGVcIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJFckd3MUFaXCIsXG4gICAgICAgICAgdGllcjogXCJFckd3MUFaXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5nYXRld2F5VHlwZSkudG9CZShcIkV4cHJlc3NSb3V0ZVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGRlZmF1bHQgdnBuVHlwZSB0byBSb3V0ZUJhc2VkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiRGVmYXVsdFZwblR5cGVcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1kZWZhdWx0XCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudnBuVHlwZSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklQIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggc2luZ2xlIElQIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJTaW5nbGVJUFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLXNpbmdsZVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiY29uZmlnMVwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwMVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5pcENvbmZpZ3VyYXRpb25zKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmlwQ29uZmlndXJhdGlvbnNbMF0ubmFtZSkudG9CZShcImNvbmZpZzFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgYWN0aXZlLWFjdGl2ZSBnYXRld2F5IHdpdGggdHdvIElQIGNvbmZpZ3VyYXRpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiQWN0aXZlQWN0aXZlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctYWFcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2ZUFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiY29uZmlnMVwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwMVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjb25maWcyXCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXAyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmFjdGl2ZUFjdGl2ZSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuaXBDb25maWd1cmF0aW9ucykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJHUCBDb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgZ2F0ZXdheSB3aXRoIEJHUCBlbmFibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiQmdwRW5hYmxlZFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWJncFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlQmdwOiB0cnVlLFxuICAgICAgICBiZ3BTZXR0aW5nczoge1xuICAgICAgICAgIGFzbjogNjU1MTUsXG4gICAgICAgICAgcGVlcldlaWdodDogMCxcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmVuYWJsZUJncCkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuYmdwU2V0dGluZ3MpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmJncFNldHRpbmdzPy5hc24pLnRvQmUoNjU1MTUpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZGVmYXVsdCBlbmFibGVCZ3AgdG8gZmFsc2VcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJCZ3BEaXNhYmxlZFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLW5vLWJncFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmVuYWJsZUJncCkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlNLVSBDb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgZ2F0ZXdheSB3aXRoIEJhc2ljIFNLVVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkJhc2ljU2t1XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctYmFzaWNcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIkJhc2ljXCIsXG4gICAgICAgICAgdGllcjogXCJCYXNpY1wiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuc2t1Lm5hbWUpLnRvQmUoXCJCYXNpY1wiKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuc2t1LnRpZXIpLnRvQmUoXCJCYXNpY1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggVnBuR3cxIFNLVVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlZwbkd3MVNrdVwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLXZwbmd3MVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLnNrdS5uYW1lKS50b0JlKFwiVnBuR3cxXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5za3UudGllcikudG9CZShcIlZwbkd3MVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJUYWdzIE1hbmFnZW1lbnRcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggdGFnc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlRhZ2dlZEdhdGV3YXlcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy10YWdnZWRcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgICAgY29zdF9jZW50ZXI6IFwiZW5naW5lZXJpbmdcIixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLnRhZ3MpLnRvRXF1YWwoe1xuICAgICAgICBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgIGNvc3RfY2VudGVyOiBcImVuZ2luZWVyaW5nXCIsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgYWRkaW5nIHRhZ3NcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJBZGRUYWdcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1hZGQtdGFnXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0YWdzOiB7IGVudmlyb25tZW50OiBcInRlc3RcIiB9LFxuICAgICAgfSk7XG5cbiAgICAgIHZuZy5hZGRUYWcoXCJuZXdUYWdcIiwgXCJuZXdWYWx1ZVwiKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudGFncyEubmV3VGFnKS50b0JlKFwibmV3VmFsdWVcIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLnRhZ3MhLmVudmlyb25tZW50KS50b0JlKFwidGVzdFwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgcmVtb3ZpbmcgdGFnc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlJlbW92ZVRhZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLXJlbW92ZS10YWdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJ0ZXN0XCIsXG4gICAgICAgICAgdGVtcG9yYXJ5OiBcInRydWVcIixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB2bmcucmVtb3ZlVGFnKFwidGVtcG9yYXJ5XCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy50YWdzIS50ZW1wb3JhcnkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudGFncyEuZW52aXJvbm1lbnQpLnRvQmUoXCJ0ZXN0XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRlcnJhZm9ybSBPdXRwdXRzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgVGVycmFmb3JtIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJPdXRwdXRUZXN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctb3V0cHV0c1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHZuZy5uYW1lT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHZuZy5sb2NhdGlvbk91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdCh2bmcudGFnc091dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgY29ycmVjdCBpZCBmb3JtYXRcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJJZEZvcm1hdFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWlkXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcuaWQpLnRvTWF0Y2goL15cXCRcXHsuKlxcLmlkXFx9JC8pO1xuICAgICAgZXhwZWN0KHZuZy5yZXNvdXJjZUlkKS50b0JlKHZuZy5pZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVmVyc2lvbiBDb21wYXRpYmlsaXR5XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB3b3JrIHdpdGggYWxsIHN1cHBvcnRlZCBBUEkgdmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbnMgPSBbXCIyMDI0LTAxLTAxXCIsIFwiMjAyNC0wNS0wMVwiXTtcblxuICAgICAgdmVyc2lvbnMuZm9yRWFjaCgodmVyc2lvbikgPT4ge1xuICAgICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KFxuICAgICAgICAgIHN0YWNrLFxuICAgICAgICAgIGBWTkctJHt2ZXJzaW9uLnJlcGxhY2UoLy0vZywgXCJcIil9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgdm5nLSR7dmVyc2lvbn1gLFxuICAgICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgICAgICBza3U6IHtcbiAgICAgICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBleHBlY3Qodm5nLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZSh2ZXJzaW9uKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklnbm9yZSBDaGFuZ2VzIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIklnbm9yZUNoYW5nZXNcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1pZ25vcmVcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtcInRhZ3NcIl0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZykudG9CZUluc3RhbmNlT2YoVmlydHVhbE5ldHdvcmtHYXRld2F5KTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuaWdub3JlQ2hhbmdlcykudG9FcXVhbChbXCJ0YWdzXCJdKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBlbXB0eSBpZ25vcmUgY2hhbmdlcyBhcnJheVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkVtcHR5SWdub3JlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctZW1wdHktaWdub3JlXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nKS50b0JlSW5zdGFuY2VPZihWaXJ0dWFsTmV0d29ya0dhdGV3YXkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBUZXJyYWZvcm0gSW50ZWdyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdG8gdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJTeW50aFRlc3RcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1zeW50aFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdGFnczogeyB0ZXN0OiBcInN5bnRoZXNpc1wiIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBnYXRld2F5cyBpbiB0aGUgc2FtZSBzdGFja1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcxID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJWTkcxXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctMVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB2bmcyID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJWTkcyXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctMlwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDI0LTAxLTAxXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIkV4cHJlc3NSb3V0ZVwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIkVyR3cxQVpcIixcbiAgICAgICAgICB0aWVyOiBcIkVyR3cxQVpcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nMS5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgICAgZXhwZWN0KHZuZzIucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wMS0wMVwiKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJWUE4gQ2xpZW50IENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggVlBOIGNsaWVudCBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiUDJTXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctcDJzXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgdnBuVHlwZTogXCJSb3V0ZUJhc2VkXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdnBuQ2xpZW50Q29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIHZwbkNsaWVudEFkZHJlc3NQb29sOiB7XG4gICAgICAgICAgICBhZGRyZXNzUHJlZml4ZXM6IFtcIjE3Mi4xNi4wLjAvMjRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2cG5DbGllbnRQcm90b2NvbHM6IFtcIklrZVYyXCIsIFwiT3BlblZQTlwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLnZwbkNsaWVudENvbmZpZ3VyYXRpb24pLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoXG4gICAgICAgIHZuZy5wcm9wcy52cG5DbGllbnRDb25maWd1cmF0aW9uPy52cG5DbGllbnRBZGRyZXNzUG9vbD8uYWRkcmVzc1ByZWZpeGVzLFxuICAgICAgKS50b0NvbnRhaW4oXCIxNzIuMTYuMC4wLzI0XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlZQTiBHYXRld2F5IEdlbmVyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggR2VuZXJhdGlvbjJcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJHZW4yXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctZ2VuMlwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHZwblR5cGU6IFwiUm91dGVCYXNlZFwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MlwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cyXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHZwbkdhdGV3YXlHZW5lcmF0aW9uOiBcIkdlbmVyYXRpb24yXCIsXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy52cG5HYXRld2F5R2VuZXJhdGlvbikudG9CZShcIkdlbmVyYXRpb24yXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkV4cHJlc3NSb3V0ZSBHYXRld2F5IFdpdGhvdXQgUHVibGljIElQXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgRXhwcmVzc1JvdXRlIGdhdGV3YXkgd2l0aG91dCBwdWJsaWMgSVAgKGF1dG8tYXNzaWduZWQpXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiRXJHYXRld2F5Tm9QdWJsaWNJcFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWVyLW5vLXBpcFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiRXhwcmVzc1JvdXRlXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiRXJHdzFBWlwiLFxuICAgICAgICAgIHRpZXI6IFwiRXJHdzFBWlwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3Rlc3Qtdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIC8vIHB1YmxpY0lQQWRkcmVzc0lkIGludGVudGlvbmFsbHkgb21pdHRlZFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh2bmcpLnRvQmVJbnN0YW5jZU9mKFZpcnR1YWxOZXR3b3JrR2F0ZXdheSk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmdhdGV3YXlUeXBlKS50b0JlKFwiRXhwcmVzc1JvdXRlXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5pcENvbmZpZ3VyYXRpb25zKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmlwQ29uZmlndXJhdGlvbnNbMF0ucHVibGljSVBBZGRyZXNzSWQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIG9taXQgcHVibGljSVBBZGRyZXNzIGZyb20gc3ludGhlc2l6ZWQgSlNPTiB3aGVuIG5vdCBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkVyR2F0ZXdheU5vUHVibGljSXBTeW50aFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWVyLW5vLXBpcC1zeW50aFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiRXhwcmVzc1JvdXRlXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiRXJHdzFBWlwiLFxuICAgICAgICAgIHRpZXI6IFwiRXJHdzFBWlwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3Rlc3Qtdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIC8vIHB1YmxpY0lQQWRkcmVzc0lkIGludGVudGlvbmFsbHkgb21pdHRlZFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGF6YXBpX3Jlc291cmNlIGZvciB0aGUgZ2F0ZXdheVxuICAgICAgY29uc3QgYXphcGlSZXNvdXJjZXMgPSBzdGFja0NvbmZpZy5yZXNvdXJjZT8uYXphcGlfcmVzb3VyY2U7XG4gICAgICBleHBlY3QoYXphcGlSZXNvdXJjZXMpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGdhdGV3YXkgcmVzb3VyY2UgYnkgbG9va2luZyBmb3IgYW55IGtleSBjb250YWluaW5nIHRoZSBpZGVudGlmaWVyXG4gICAgICBjb25zdCByZXNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhhemFwaVJlc291cmNlcyk7XG4gICAgICBjb25zdCBnYXRld2F5S2V5ID0gcmVzb3VyY2VLZXlzLmZpbmQoXG4gICAgICAgIChrZXkpID0+XG4gICAgICAgICAga2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJlcmdhdGV3YXlub3B1YmxpY2lwc3ludGhcIikgfHxcbiAgICAgICAgICBrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImVyX2dhdGV3YXlfbm9fcHVibGljX2lwX3N5bnRoXCIpLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChnYXRld2F5S2V5KS50b0JlRGVmaW5lZCgpO1xuICAgICAgY29uc3QgZ2F0ZXdheVJlc291cmNlID0gYXphcGlSZXNvdXJjZXNbZ2F0ZXdheUtleSFdO1xuICAgICAgZXhwZWN0KGdhdGV3YXlSZXNvdXJjZSkudG9CZURlZmluZWQoKTtcblxuICAgICAgLy8gQWNjZXNzIHRoZSBib2R5IChpdCBtYXkgYmUgYSBzdHJpbmcgb3Igb2JqZWN0IGRlcGVuZGluZyBvbiBzeW50aGVzaXMpXG4gICAgICBjb25zdCBib2R5ID1cbiAgICAgICAgdHlwZW9mIGdhdGV3YXlSZXNvdXJjZS5ib2R5ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyBKU09OLnBhcnNlKGdhdGV3YXlSZXNvdXJjZS5ib2R5KVxuICAgICAgICAgIDogZ2F0ZXdheVJlc291cmNlLmJvZHk7XG4gICAgICBleHBlY3QoYm9keS5wcm9wZXJ0aWVzLmlwQ29uZmlndXJhdGlvbnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYm9keS5wcm9wZXJ0aWVzLmlwQ29uZmlndXJhdGlvbnMpLnRvSGF2ZUxlbmd0aCgxKTtcblxuICAgICAgLy8gVmVyaWZ5IHB1YmxpY0lQQWRkcmVzcyBpcyBub3QgcHJlc2VudCBpbiB0aGUgaXBDb25maWd1cmF0aW9uXG4gICAgICBjb25zdCBpcENvbmZpZyA9IGJvZHkucHJvcGVydGllcy5pcENvbmZpZ3VyYXRpb25zWzBdO1xuICAgICAgZXhwZWN0KGlwQ29uZmlnLm5hbWUpLnRvQmUoXCJkZWZhdWx0XCIpO1xuICAgICAgZXhwZWN0KGlwQ29uZmlnLnByb3BlcnRpZXMuc3VibmV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGlwQ29uZmlnLnByb3BlcnRpZXMucHVibGljSVBBZGRyZXNzKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBpbmNsdWRlIHB1YmxpY0lQQWRkcmVzcyBpbiBzeW50aGVzaXplZCBKU09OIHdoZW4gcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJFckdhdGV3YXlXaXRoUHVibGljSXBcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1lci13aXRoLXBpcFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiRXhwcmVzc1JvdXRlXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiRXJHdzFBWlwiLFxuICAgICAgICAgIHRpZXI6IFwiRXJHdzFBWlwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3Rlc3Qtdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy90ZXN0LXBpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGF6YXBpX3Jlc291cmNlIGZvciB0aGUgZ2F0ZXdheVxuICAgICAgY29uc3QgYXphcGlSZXNvdXJjZXMgPSBzdGFja0NvbmZpZy5yZXNvdXJjZT8uYXphcGlfcmVzb3VyY2U7XG4gICAgICBleHBlY3QoYXphcGlSZXNvdXJjZXMpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGdhdGV3YXkgcmVzb3VyY2UgYnkgbG9va2luZyBmb3IgYW55IGtleSBjb250YWluaW5nIHRoZSBpZGVudGlmaWVyXG4gICAgICBjb25zdCByZXNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhhemFwaVJlc291cmNlcyk7XG4gICAgICBjb25zdCBnYXRld2F5S2V5ID0gcmVzb3VyY2VLZXlzLmZpbmQoXG4gICAgICAgIChrZXkpID0+XG4gICAgICAgICAga2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJlcmdhdGV3YXl3aXRocHVibGljaXBcIikgfHxcbiAgICAgICAgICBrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImVyX2dhdGV3YXlfd2l0aF9wdWJsaWNfaXBcIiksXG4gICAgICApO1xuICAgICAgZXhwZWN0KGdhdGV3YXlLZXkpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBjb25zdCBnYXRld2F5UmVzb3VyY2UgPSBhemFwaVJlc291cmNlc1tnYXRld2F5S2V5IV07XG4gICAgICBleHBlY3QoZ2F0ZXdheVJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICAvLyBBY2Nlc3MgdGhlIGJvZHkgKGl0IG1heSBiZSBhIHN0cmluZyBvciBvYmplY3QgZGVwZW5kaW5nIG9uIHN5bnRoZXNpcylcbiAgICAgIGNvbnN0IGJvZHkgPVxuICAgICAgICB0eXBlb2YgZ2F0ZXdheVJlc291cmNlLmJvZHkgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IEpTT04ucGFyc2UoZ2F0ZXdheVJlc291cmNlLmJvZHkpXG4gICAgICAgICAgOiBnYXRld2F5UmVzb3VyY2UuYm9keTtcbiAgICAgIGV4cGVjdChib2R5LnByb3BlcnRpZXMuaXBDb25maWd1cmF0aW9ucykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChib2R5LnByb3BlcnRpZXMuaXBDb25maWd1cmF0aW9ucykudG9IYXZlTGVuZ3RoKDEpO1xuXG4gICAgICAvLyBWZXJpZnkgcHVibGljSVBBZGRyZXNzIElTIHByZXNlbnQgaW4gdGhlIGlwQ29uZmlndXJhdGlvblxuICAgICAgY29uc3QgaXBDb25maWcgPSBib2R5LnByb3BlcnRpZXMuaXBDb25maWd1cmF0aW9uc1swXTtcbiAgICAgIGV4cGVjdChpcENvbmZpZy5uYW1lKS50b0JlKFwiZGVmYXVsdFwiKTtcbiAgICAgIGV4cGVjdChpcENvbmZpZy5wcm9wZXJ0aWVzLnN1Ym5ldCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChpcENvbmZpZy5wcm9wZXJ0aWVzLnB1YmxpY0lQQWRkcmVzcykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChpcENvbmZpZy5wcm9wZXJ0aWVzLnB1YmxpY0lQQWRkcmVzcy5pZCkudG9CZShcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvdGVzdC1waXBcIixcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -303,7 +303,7 @@ class VirtualNetworkGatewayConnection extends azapi_resource_1.AzapiResource {
|
|
|
303
303
|
}
|
|
304
304
|
exports.VirtualNetworkGatewayConnection = VirtualNetworkGatewayConnection;
|
|
305
305
|
_a = JSII_RTTI_SYMBOL_1;
|
|
306
|
-
VirtualNetworkGatewayConnection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGatewayConnection", version: "1.
|
|
306
|
+
VirtualNetworkGatewayConnection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGatewayConnection", version: "1.10.0" };
|
|
307
307
|
(() => {
|
|
308
308
|
azapi_resource_1.AzapiResource.registerSchemas(virtual_network_gateway_connection_schemas_1.VIRTUAL_NETWORK_GATEWAY_CONNECTION_TYPE, virtual_network_gateway_connection_schemas_1.ALL_VIRTUAL_NETWORK_GATEWAY_CONNECTION_VERSIONS);
|
|
309
309
|
})();
|
|
@@ -199,7 +199,7 @@ class ConnectivityConfiguration extends azapi_resource_1.AzapiResource {
|
|
|
199
199
|
}
|
|
200
200
|
exports.ConnectivityConfiguration = ConnectivityConfiguration;
|
|
201
201
|
_a = JSII_RTTI_SYMBOL_1;
|
|
202
|
-
ConnectivityConfiguration[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ConnectivityConfiguration", version: "1.
|
|
202
|
+
ConnectivityConfiguration[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ConnectivityConfiguration", version: "1.10.0" };
|
|
203
203
|
(() => {
|
|
204
204
|
azapi_resource_1.AzapiResource.registerSchemas(connectivity_configuration_schemas_1.CONNECTIVITY_CONFIGURATION_TYPE, connectivity_configuration_schemas_1.ALL_CONNECTIVITY_CONFIGURATION_VERSIONS);
|
|
205
205
|
})();
|
|
@@ -207,7 +207,7 @@ class IpamPoolStaticCidr extends azapi_resource_1.AzapiResource {
|
|
|
207
207
|
}
|
|
208
208
|
exports.IpamPoolStaticCidr = IpamPoolStaticCidr;
|
|
209
209
|
_a = JSII_RTTI_SYMBOL_1;
|
|
210
|
-
IpamPoolStaticCidr[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPoolStaticCidr", version: "1.
|
|
210
|
+
IpamPoolStaticCidr[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPoolStaticCidr", version: "1.10.0" };
|
|
211
211
|
(() => {
|
|
212
212
|
azapi_resource_1.AzapiResource.registerSchemas(ipam_pool_static_cidr_schemas_1.STATIC_CIDR_TYPE, ipam_pool_static_cidr_schemas_1.ALL_STATIC_CIDR_VERSIONS);
|
|
213
213
|
})();
|