@microsoft/terraform-cdk-constructs 1.8.0 → 2.2.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 +48328 -33656
- package/API.md +56123 -38995
- package/lib/azure-actiongroup/lib/action-group.d.ts +3 -3
- package/lib/azure-actiongroup/lib/action-group.js +5 -5
- package/lib/azure-actiongroup/test/action-group.integ.d.ts +1 -1
- package/lib/azure-actiongroup/test/action-group.integ.js +5 -5
- package/lib/azure-actiongroup/test/action-group.spec.js +9 -9
- package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +3 -3
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +5 -5
- package/lib/azure-activitylogalert/test/activity-log-alert.integ.d.ts +1 -1
- package/lib/azure-activitylogalert/test/activity-log-alert.integ.js +6 -6
- package/lib/azure-activitylogalert/test/activity-log-alert.spec.js +9 -9
- package/lib/azure-aks/lib/aks-cluster.d.ts +6 -6
- package/lib/azure-aks/lib/aks-cluster.js +8 -8
- package/lib/azure-aks/test/aks-cluster.integ.d.ts +1 -1
- package/lib/azure-aks/test/aks-cluster.integ.js +5 -5
- package/lib/azure-aks/test/aks-cluster.spec.js +12 -12
- 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-diagnosticsettings/lib/diagnostic-settings.d.ts +3 -3
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +5 -5
- package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.js +9 -9
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +7 -7
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +9 -9
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +4 -4
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +6 -6
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +4 -4
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +6 -6
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +1 -1
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +5 -5
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +11 -11
- package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +14 -14
- package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +12 -12
- package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +8 -8
- package/lib/azure-dnsresolver/lib/dns-resolver.js +10 -10
- package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +6 -6
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +8 -8
- package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +7 -7
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +9 -9
- package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +1 -1
- package/lib/azure-dnsresolver/test/dns-resolver.integ.js +5 -5
- package/lib/azure-dnsresolver/test/dns-resolver.spec.js +11 -11
- package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +1 -1
- package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +5 -5
- package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +12 -12
- package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +1 -1
- package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +5 -5
- package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +9 -9
- package/lib/azure-dnszone/lib/dns-zone.d.ts +6 -6
- package/lib/azure-dnszone/lib/dns-zone.js +8 -8
- package/lib/azure-dnszone/lib/records/dns-records.d.ts +31 -31
- package/lib/azure-dnszone/lib/records/dns-records.js +42 -42
- package/lib/azure-dnszone/test/dns-records.integ.d.ts +1 -1
- package/lib/azure-dnszone/test/dns-records.integ.js +5 -5
- package/lib/azure-dnszone/test/dns-records.spec.js +57 -57
- package/lib/azure-dnszone/test/dns-zone.integ.d.ts +1 -1
- package/lib/azure-dnszone/test/dns-zone.integ.js +5 -5
- package/lib/azure-dnszone/test/dns-zone.spec.js +11 -11
- 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.d.ts +3 -3
- package/lib/azure-metricalert/lib/metric-alert.js +5 -5
- package/lib/azure-metricalert/test/metric-alert.integ.d.ts +1 -1
- package/lib/azure-metricalert/test/metric-alert.integ.js +5 -5
- package/lib/azure-metricalert/test/metric-alert.spec.js +9 -9
- package/lib/azure-networkinterface/lib/network-interface.d.ts +5 -5
- package/lib/azure-networkinterface/lib/network-interface.js +7 -7
- package/lib/azure-networkinterface/test/network-interface.integ.d.ts +1 -1
- package/lib/azure-networkinterface/test/network-interface.integ.js +5 -5
- package/lib/azure-networkinterface/test/network-interface.spec.js +11 -11
- package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +6 -6
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +8 -8
- package/lib/azure-networksecuritygroup/test/network-security-group.integ.d.ts +1 -1
- package/lib/azure-networksecuritygroup/test/network-security-group.integ.js +5 -5
- package/lib/azure-networksecuritygroup/test/network-security-group.spec.js +12 -12
- 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.d.ts +3 -3
- package/lib/azure-policyassignment/lib/policy-assignment.js +5 -5
- package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +1 -1
- package/lib/azure-policyassignment/test/policy-assignment.integ.js +5 -5
- package/lib/azure-policyassignment/test/policy-assignment.spec.js +12 -12
- package/lib/azure-policydefinition/lib/policy-definition.d.ts +3 -3
- package/lib/azure-policydefinition/lib/policy-definition.js +5 -5
- package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +1 -1
- package/lib/azure-policydefinition/test/policy-definition.integ.js +5 -5
- package/lib/azure-policydefinition/test/policy-definition.spec.js +19 -19
- 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.d.ts +10 -10
- package/lib/azure-privatednszone/lib/private-dns-zone.js +12 -12
- package/lib/azure-privatednszone/lib/records/private-dns-records.d.ts +25 -25
- package/lib/azure-privatednszone/lib/records/private-dns-records.js +34 -34
- package/lib/azure-privatednszone/test/private-dns-records.integ.d.ts +1 -1
- package/lib/azure-privatednszone/test/private-dns-records.integ.js +5 -5
- package/lib/azure-privatednszone/test/private-dns-records.spec.js +49 -49
- package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +1 -1
- package/lib/azure-privatednszone/test/private-dns-zone.integ.js +5 -5
- package/lib/azure-privatednszone/test/private-dns-zone.spec.js +12 -12
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +6 -6
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +8 -8
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +1 -1
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +5 -5
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +12 -12
- package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +5 -5
- package/lib/azure-publicipaddress/lib/public-ip-address.js +7 -7
- package/lib/azure-publicipaddress/test/public-ip-address.integ.d.ts +1 -1
- package/lib/azure-publicipaddress/test/public-ip-address.integ.js +6 -6
- package/lib/azure-publicipaddress/test/public-ip-address.spec.js +11 -11
- package/lib/azure-resourcegroup/lib/resource-group.d.ts +5 -5
- package/lib/azure-resourcegroup/lib/resource-group.js +7 -7
- package/lib/azure-resourcegroup/test/resource-group.integ.d.ts +1 -1
- package/lib/azure-resourcegroup/test/resource-group.integ.js +5 -5
- package/lib/azure-resourcegroup/test/resource-group.spec.js +14 -14
- package/lib/azure-roleassignment/lib/role-assignment.d.ts +3 -3
- package/lib/azure-roleassignment/lib/role-assignment.js +5 -5
- package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +1 -1
- package/lib/azure-roleassignment/test/role-assignment.integ.js +5 -5
- package/lib/azure-roleassignment/test/role-assignment.spec.js +12 -12
- package/lib/azure-roledefinition/lib/role-definition.d.ts +3 -3
- package/lib/azure-roledefinition/lib/role-definition.js +5 -5
- package/lib/azure-roledefinition/test/role-definition.integ.d.ts +1 -1
- package/lib/azure-roledefinition/test/role-definition.integ.js +5 -5
- package/lib/azure-roledefinition/test/role-definition.spec.js +12 -12
- package/lib/azure-storageaccount/lib/storage-account.d.ts +6 -6
- package/lib/azure-storageaccount/lib/storage-account.js +8 -8
- package/lib/azure-storageaccount/test/storage-account.integ.d.ts +1 -1
- package/lib/azure-storageaccount/test/storage-account.integ.js +5 -5
- package/lib/azure-storageaccount/test/storage-account.spec.js +11 -11
- package/lib/azure-subnet/lib/subnet.d.ts +3 -3
- package/lib/azure-subnet/lib/subnet.js +5 -5
- package/lib/azure-subnet/test/subnet.integ.d.ts +1 -1
- package/lib/azure-subnet/test/subnet.integ.js +5 -5
- package/lib/azure-subnet/test/subnet.spec.js +9 -9
- package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +6 -6
- package/lib/azure-virtualmachine/lib/virtual-machine.js +8 -8
- package/lib/azure-virtualmachine/test/virtual-machine.integ.d.ts +1 -1
- package/lib/azure-virtualmachine/test/virtual-machine.integ.js +5 -5
- package/lib/azure-virtualmachine/test/virtual-machine.spec.js +17 -17
- package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +6 -6
- package/lib/azure-virtualnetwork/lib/virtual-network.js +8 -8
- package/lib/azure-virtualnetwork/test/virtual-network.integ.d.ts +1 -1
- package/lib/azure-virtualnetwork/test/virtual-network.integ.js +5 -5
- package/lib/azure-virtualnetwork/test/virtual-network.spec.js +12 -12
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +2 -2
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +9 -7
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +13 -10
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.d.ts +1 -1
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.js +5 -5
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +119 -11
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.d.ts +5 -5
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +7 -7
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.d.ts +1 -1
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.integ.js +5 -5
- package/lib/azure-virtualnetworkgatewayconnection/test/virtual-network-gateway-connection.spec.js +20 -20
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +4 -4
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +6 -6
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +7 -7
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +9 -9
- package/lib/azure-virtualnetworkmanager/test/ipam-pool-static-cidr.spec.js +17 -17
- package/lib/azure-virtualnetworkmanager/test/ipam-pool.spec.js +15 -15
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +1 -1
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +5 -5
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +57 -57
- package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +6 -6
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +8 -8
- package/lib/azure-vmss/test/virtual-machine-scale-set.integ.d.ts +1 -1
- package/lib/azure-vmss/test/virtual-machine-scale-set.integ.js +5 -5
- package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +12 -12
- package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +6 -6
- package/lib/core-azure/lib/azapi/azapi-resource.d.ts +7 -7
- package/lib/core-azure/lib/azapi/azapi-resource.js +6 -6
- package/lib/core-azure/lib/azapi/azapi-resource.spec.js +7 -7
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +12 -12
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +15 -15
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +35 -35
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +58 -58
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +25 -25
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +49 -49
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +13 -13
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +22 -22
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +24 -24
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +40 -40
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +44 -44
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +72 -72
- package/lib/core-azure/lib/azapi/providers-azapi/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +54 -54
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +86 -86
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +65 -65
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +102 -102
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +25 -25
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +62 -62
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +36 -36
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +69 -69
- 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 +12 -0
- package/lib/index.js +14 -2
- package/lib/testing/index.d.ts +1 -1
- package/lib/testing/index.js +8 -8
- package/lib/testing/lib/cleanup.js +1 -1
- package/lib/testing/lib/metadata.js +1 -1
- package/package.json +10 -22
- package/setup.js +2 -2
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
* parent-child resource relationships, and full backward compatibility.
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const cdktn_1 = require("cdktn");
|
|
12
|
+
const cdktn = require("cdktn");
|
|
13
13
|
const api_version_manager_1 = require("../../core-azure/lib/version-manager/api-version-manager");
|
|
14
14
|
const version_interfaces_1 = require("../../core-azure/lib/version-manager/interfaces/version-interfaces");
|
|
15
15
|
const private_dns_zone_link_1 = require("../lib/private-dns-zone-link");
|
|
@@ -21,8 +21,8 @@ describe("PrivateDnsZoneLink - Implementation", () => {
|
|
|
21
21
|
const mockPrivateDnsZoneId = "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Network/privateDnsZones/internal.contoso.com";
|
|
22
22
|
const mockVirtualNetworkId = "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/test-vnet";
|
|
23
23
|
beforeEach(() => {
|
|
24
|
-
app =
|
|
25
|
-
stack = new
|
|
24
|
+
app = cdktn_1.Testing.app();
|
|
25
|
+
stack = new cdktn.TerraformStack(app, "TestStack");
|
|
26
26
|
manager = api_version_manager_1.ApiVersionManager.instance();
|
|
27
27
|
// Ensure schemas are registered
|
|
28
28
|
try {
|
|
@@ -146,7 +146,7 @@ describe("PrivateDnsZoneLink - Implementation", () => {
|
|
|
146
146
|
privateDnsZoneId: mockPrivateDnsZoneId,
|
|
147
147
|
virtualNetworkId: mockVirtualNetworkId,
|
|
148
148
|
});
|
|
149
|
-
const synthesized =
|
|
149
|
+
const synthesized = cdktn_1.Testing.synth(stack);
|
|
150
150
|
expect(synthesized).toContain("virtualNetworkLinks");
|
|
151
151
|
expect(synthesized).toContain(mockPrivateDnsZoneId);
|
|
152
152
|
});
|
|
@@ -262,7 +262,7 @@ describe("PrivateDnsZoneLink - Implementation", () => {
|
|
|
262
262
|
privateDnsZoneId: mockPrivateDnsZoneId,
|
|
263
263
|
virtualNetworkId: mockVirtualNetworkId,
|
|
264
264
|
});
|
|
265
|
-
const synthesized =
|
|
265
|
+
const synthesized = cdktn_1.Testing.synth(stack);
|
|
266
266
|
expect(synthesized).toContain('"id"');
|
|
267
267
|
expect(synthesized).toContain('"name"');
|
|
268
268
|
expect(synthesized).toContain('"location"');
|
|
@@ -279,7 +279,7 @@ describe("PrivateDnsZoneLink - Implementation", () => {
|
|
|
279
279
|
virtualNetworkId: mockVirtualNetworkId,
|
|
280
280
|
ignoreChanges: ["tags"],
|
|
281
281
|
});
|
|
282
|
-
const synthesized =
|
|
282
|
+
const synthesized = cdktn_1.Testing.synth(stack);
|
|
283
283
|
expect(synthesized).toContain("ignore_changes");
|
|
284
284
|
});
|
|
285
285
|
it("should handle multiple ignore changes properties", () => {
|
|
@@ -290,7 +290,7 @@ describe("PrivateDnsZoneLink - Implementation", () => {
|
|
|
290
290
|
virtualNetworkId: mockVirtualNetworkId,
|
|
291
291
|
ignoreChanges: ["tags", "location"],
|
|
292
292
|
});
|
|
293
|
-
const synthesized =
|
|
293
|
+
const synthesized = cdktn_1.Testing.synth(stack);
|
|
294
294
|
expect(synthesized).toBeDefined();
|
|
295
295
|
});
|
|
296
296
|
});
|
|
@@ -303,7 +303,7 @@ describe("PrivateDnsZoneLink - Implementation", () => {
|
|
|
303
303
|
virtualNetworkId: mockVirtualNetworkId,
|
|
304
304
|
tags: { test: "synthesis" },
|
|
305
305
|
});
|
|
306
|
-
const synthesized =
|
|
306
|
+
const synthesized = cdktn_1.Testing.synth(stack);
|
|
307
307
|
expect(synthesized).toBeDefined();
|
|
308
308
|
const stackConfig = JSON.parse(synthesized);
|
|
309
309
|
expect(stackConfig.resource).toBeDefined();
|
|
@@ -315,7 +315,7 @@ describe("PrivateDnsZoneLink - Implementation", () => {
|
|
|
315
315
|
privateDnsZoneId: mockPrivateDnsZoneId,
|
|
316
316
|
virtualNetworkId: mockVirtualNetworkId,
|
|
317
317
|
});
|
|
318
|
-
const synthesized =
|
|
318
|
+
const synthesized = cdktn_1.Testing.synth(stack);
|
|
319
319
|
expect(synthesized).toContain("virtualNetworkLinks");
|
|
320
320
|
expect(synthesized).toContain("2024-06-01");
|
|
321
321
|
});
|
|
@@ -329,7 +329,7 @@ describe("PrivateDnsZoneLink - Implementation", () => {
|
|
|
329
329
|
resolutionPolicy: "NxDomainRedirect",
|
|
330
330
|
tags: { env: "test" },
|
|
331
331
|
});
|
|
332
|
-
const synthesized =
|
|
332
|
+
const synthesized = cdktn_1.Testing.synth(stack);
|
|
333
333
|
expect(synthesized).toContain("global");
|
|
334
334
|
expect(synthesized).toContain("env");
|
|
335
335
|
expect(synthesized).toContain(mockVirtualNetworkId);
|
|
@@ -462,4 +462,4 @@ describe("PrivateDnsZoneLink - Implementation", () => {
|
|
|
462
462
|
});
|
|
463
463
|
});
|
|
464
464
|
});
|
|
465
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1kbnMtem9uZS1saW5rLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcHJpdmF0ZWRuc3pvbmVsaW5rL3Rlc3QvcHJpdmF0ZS1kbnMtem9uZS1saW5rLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7O0FBRUgsaUNBQWdDO0FBQ2hDLCtCQUErQjtBQUMvQixrR0FBNkY7QUFDN0YsMkdBQXlHO0FBQ3pHLHdFQUdzQztBQUN0Qyx3RkFHOEM7QUFFOUMsUUFBUSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtJQUNuRCxJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFDaEMsSUFBSSxPQUEwQixDQUFDO0lBRS9CLE1BQU0sb0JBQW9CLEdBQ3hCLDZJQUE2SSxDQUFDO0lBQ2hKLE1BQU0sb0JBQW9CLEdBQ3hCLGtJQUFrSSxDQUFDO0lBRXJJLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxHQUFHLEdBQUcsZUFBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sR0FBRyx1Q0FBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV2QyxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxDQUFDLG9CQUFvQixDQUMxQiwwREFBMEIsRUFDMUIsa0VBQWtDLENBQ25DLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLCtCQUErQjtRQUNqQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1FBQ2hELEVBQUUsQ0FBQyw2RUFBNkUsRUFBRSxHQUFHLEVBQUU7WUFDckYsTUFBTSxLQUFLLEdBQTRCO2dCQUNyQyxJQUFJLEVB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QUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7WUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSwwQ0FBa0IsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7Z0JBQ25FLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixnQkFBZ0IsRUFBRSxvQkFBb0I7Z0JBQ3RDLGdCQUFnQixFQUFFLG9CQUFvQjtnQkFDdEMsZ0JBQWdCLEVBQUUsU0FBUzthQUM1QixDQUFDLENBQUM7WUFFSCxNQUFNLFlBQVksR0FBRyxJQUFJLDBDQUFrQixDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtnQkFDckUsSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGdCQUFnQixFQUFFLG9CQUFvQjtnQkFDdEMsZ0JBQWdCLEVBQUUsb0JBQW9CO2dCQUN0QyxnQkFBZ0IsRUFBRSxrQkFBa0I7YUFDckMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXByZWhlbnNpdmUgdGVzdHMgZm9yIHRoZSBQcml2YXRlRG5zWm9uZUxpbmsgaW1wbGVtZW50YXRpb25cbiAqXG4gKiBUaGlzIHRlc3Qgc3VpdGUgdmFsaWRhdGVzIHRoZSBQcml2YXRlRG5zWm9uZUxpbmsgY2xhc3MgdXNpbmcgdGhlXG4gKiBBemFwaVJlc291cmNlIGZyYW1ld29yay4gVGVzdHMgY292ZXIgYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbixcbiAqIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZywgc2NoZW1hIHZhbGlkYXRpb24sIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uLFxuICogcGFyZW50LWNoaWxkIHJlc291cmNlIHJlbGF0aW9uc2hpcHMsIGFuZCBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKi9cblxuaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBBcGlWZXJzaW9uTWFuYWdlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvYXBpLXZlcnNpb24tbWFuYWdlclwiO1xuaW1wb3J0IHsgVmVyc2lvblN1cHBvcnRMZXZlbCB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcbmltcG9ydCB7XG4gIFByaXZhdGVEbnNab25lTGluayxcbiAgUHJpdmF0ZURuc1pvbmVMaW5rUHJvcHMsXG59IGZyb20gXCIuLi9saWIvcHJpdmF0ZS1kbnMtem9uZS1saW5rXCI7XG5pbXBvcnQge1xuICBBTExfUFJJVkFURV9ETlNfWk9ORV9MSU5LX1ZFUlNJT05TLFxuICBQUklWQVRFX0ROU19aT05FX0xJTktfVFlQRSxcbn0gZnJvbSBcIi4uL2xpYi9wcml2YXRlLWRucy16b25lLWxpbmstc2NoZW1hc1wiO1xuXG5kZXNjcmliZShcIlByaXZhdGVEbnNab25lTGluayAtIEltcGxlbWVudGF0aW9uXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuICBsZXQgbWFuYWdlcjogQXBpVmVyc2lvbk1hbmFnZXI7XG5cbiAgY29uc3QgbW9ja1ByaXZhdGVEbnNab25lSWQgPVxuICAgIFwiL3N1YnNjcmlwdGlvbnMvMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ByaXZhdGVEbnNab25lcy9pbnRlcm5hbC5jb250b3NvLmNvbVwiO1xuICBjb25zdCBtb2NrVmlydHVhbE5ldHdvcmtJZCA9XG4gICAgXCIvc3Vic2NyaXB0aW9ucy8xMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwMTIvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3Rlc3Qtdm5ldFwiO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcIlRlc3RTdGFja1wiKTtcbiAgICBtYW5hZ2VyID0gQXBpVmVyc2lvbk1hbmFnZXIuaW5zdGFuY2UoKTtcblxuICAgIC8vIEVuc3VyZSBzY2hlbWFzIGFyZSByZWdpc3RlcmVkXG4gICAgdHJ5IHtcbiAgICAgIG1hbmFnZXIucmVnaXN0ZXJSZXNvdXJjZVR5cGUoXG4gICAgICAgIFBSSVZBVEVfRE5TX1pPTkVfTElOS19UWVBFLFxuICAgICAgICBBTExfUFJJVkFURV9ETlNfWk9ORV9MSU5LX1ZFUlNJT05TLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWdub3JlIGlmIGFscmVhZHkgcmVnaXN0ZXJlZFxuICAgIH1cbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDb25zdHJ1Y3RvciBhbmQgQmFzaWMgUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFZpcnR1YWwgTmV0d29yayBMaW5rIHdpdGggYXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFByaXZhdGVEbnNab25lTGlua1Byb3BzID0ge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobGluaykudG9CZUluc3RhbmNlT2YoUHJpdmF0ZURuc1pvbmVMaW5rKTtcbiAgICAgIGV4cGVjdChsaW5rLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDYtMDFcIik7XG4gICAgICBleHBlY3QobGluay5wcm9wcykudG9CZShwcm9wcyk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgVmlydHVhbCBOZXR3b3JrIExpbmsgd2l0aCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmdcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFByaXZhdGVEbnNab25lTGlua1Byb3BzID0ge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjQtMDYtMDFcIixcbiAgICAgICAgdGFnczogeyBlbnZpcm9ubWVudDogXCJ0ZXN0XCIgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGxpbmsucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wNi0wMVwiKTtcbiAgICAgIGV4cGVjdChsaW5rLnRhZ3MpLnRvRXF1YWwoeyBlbnZpcm9ubWVudDogXCJ0ZXN0XCIgfSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB1c2UgbG9jYXRpb24gZnJvbSBwcm9wcyBvciBkZWZhdWx0IGZyb20gYmFzZSBjbGFzc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUHJpdmF0ZURuc1pvbmVMaW5rUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChsaW5rLmxvY2F0aW9uKS50b0JlKFwiZ2xvYmFsXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFZpcnR1YWwgTmV0d29yayBMaW5rIHdpdGggYXV0by1yZWdpc3RyYXRpb24gZW5hYmxlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUHJpdmF0ZURuc1pvbmVMaW5rUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICAgIHJlZ2lzdHJhdGlvbkVuYWJsZWQ6IHRydWUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChsaW5rKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvcHMucmVnaXN0cmF0aW9uRW5hYmxlZCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBWaXJ0dWFsIE5ldHdvcmsgTGluayB3aXRoIHJlc29sdXRpb24gcG9saWN5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBQcml2YXRlRG5zWm9uZUxpbmtQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgcmVzb2x1dGlvblBvbGljeTogXCJOeERvbWFpblJlZGlyZWN0XCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChsaW5rKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvcHMucmVzb2x1dGlvblBvbGljeSkudG9CZShcIk54RG9tYWluUmVkaXJlY3RcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiRnJhbWV3b3JrIEludGVncmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCByZXNvbHZlIGxhdGVzdCBBUEkgdmVyc2lvbiBhdXRvbWF0aWNhbGx5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA2LTAxXCIpO1xuICAgICAgZXhwZWN0KGxpbmsubGF0ZXN0VmVyc2lvbigpKS50b0JlKFwiMjAyNC0wNi0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3ZpZGUgdmVyc2lvbiBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay52ZXJzaW9uQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxpbmsudmVyc2lvbkNvbmZpZy52ZXJzaW9uKS50b0JlKFwiMjAyNC0wNi0wMVwiKTtcbiAgICAgIGV4cGVjdChsaW5rLnZlcnNpb25Db25maWcuc3VwcG9ydExldmVsKS50b0JlKFZlcnNpb25TdXBwb3J0TGV2ZWwuQUNUSVZFKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3ZpZGUgc3VwcG9ydGVkIHZlcnNpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB2ZXJzaW9ucyA9IGxpbmsuc3VwcG9ydGVkVmVyc2lvbnMoKTtcbiAgICAgIGV4cGVjdCh2ZXJzaW9ucykudG9Db250YWluKFwiMjAyNC0wNi0wMVwiKTtcbiAgICAgIGV4cGVjdCh2ZXJzaW9ucy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQYXJlbnQtQ2hpbGQgUmVzb3VyY2UgUmVsYXRpb25zaGlwXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB1c2UgcHJpdmF0ZURuc1pvbmVJZCBhcyBwYXJlbnQgSURcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgbGluayB3YXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkgd2l0aCBwcm9wZXIgcGFyZW50XG4gICAgICBleHBlY3QobGluaykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChsaW5rLnByb3BzLnByaXZhdGVEbnNab25lSWQpLnRvQmUobW9ja1ByaXZhdGVEbnNab25lSWQpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBjaGlsZCByZXNvdXJjZSBpbiBUZXJyYWZvcm0gc3ludGhlc2lzXCIsICgpID0+IHtcbiAgICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihcInZpcnR1YWxOZXR3b3JrTGlua3NcIik7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihtb2NrUHJpdmF0ZURuc1pvbmVJZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUHVibGljIE1ldGhvZHMgLSBWaXJ0dWFsIE5ldHdvcmsgTGluayBQcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBwcm92aWRlIHZpcnR1YWwgbmV0d29yayBJRFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGxpbmsudmlydHVhbE5ldHdvcmtJZCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay52aXJ0dWFsTmV0d29ya0lkKS50b0JlKFwic3RyaW5nXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgcHJvdmlkZSByZWdpc3RyYXRpb24gZW5hYmxlZCBzdGF0dXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICByZWdpc3RyYXRpb25FbmFibGVkOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChsaW5rLnJlZ2lzdHJhdGlvbkVuYWJsZWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QodHlwZW9mIGxpbmsucmVnaXN0cmF0aW9uRW5hYmxlZCkudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3ZpZGUgcmVzb2x1dGlvbiBwb2xpY3lcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICByZXNvbHV0aW9uUG9saWN5OiBcIkRlZmF1bHRcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay5yZXNvbHV0aW9uUG9saWN5KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBsaW5rLnJlc29sdXRpb25Qb2xpY3kpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBwcm92aWRlIHByb3Zpc2lvbmluZyBzdGF0ZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGxpbmsucHJvdmlzaW9uaW5nU3RhdGUpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QodHlwZW9mIGxpbmsucHJvdmlzaW9uaW5nU3RhdGUpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBwcm92aWRlIHZpcnR1YWwgbmV0d29yayBsaW5rIHN0YXRlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay52aXJ0dWFsTmV0d29ya0xpbmtTdGF0ZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay52aXJ0dWFsTmV0d29ya0xpbmtTdGF0ZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJUYWcgTWFuYWdlbWVudFwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgYWxsb3cgYWRkaW5nIHRhZ3NcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICB0YWdzOiB7IGluaXRpYWw6IFwidGFnXCIgfSxcbiAgICAgIH0pO1xuXG4gICAgICBsaW5rLmFkZFRhZyhcIm5ld0tleVwiLCBcIm5ld1ZhbHVlXCIpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvcHMudGFncykudG9IYXZlUHJvcGVydHkoXCJuZXdLZXlcIiwgXCJuZXdWYWx1ZVwiKTtcbiAgICAgIGV4cGVjdChsaW5rLnByb3BzLnRhZ3MpLnRvSGF2ZVByb3BlcnR5KFwiaW5pdGlhbFwiLCBcInRhZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGFsbG93IHJlbW92aW5nIHRhZ3NcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICB0YWdzOiB7IGtleTE6IFwidmFsdWUxXCIsIGtleTI6IFwidmFsdWUyXCIgfSxcbiAgICAgIH0pO1xuXG4gICAgICBsaW5rLnJlbW92ZVRhZyhcImtleTFcIik7XG4gICAgICBleHBlY3QobGluay5wcm9wcy50YWdzKS5ub3QudG9IYXZlUHJvcGVydHkoXCJrZXkxXCIpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvcHMudGFncykudG9IYXZlUHJvcGVydHkoXCJrZXkyXCIsIFwidmFsdWUyXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGFkZGluZyB0YWdzIHdoZW4gbm8gaW5pdGlhbCB0YWdzIGV4aXN0XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBsaW5rLmFkZFRhZyhcIm5ld0tleVwiLCBcIm5ld1ZhbHVlXCIpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvcHMudGFncykudG9IYXZlUHJvcGVydHkoXCJuZXdLZXlcIiwgXCJuZXdWYWx1ZVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJPdXRwdXRzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgYWxsIHJlcXVpcmVkIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChsaW5rLmlkT3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxpbmsubmFtZU91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChsaW5rLmxvY2F0aW9uT3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvdmlzaW9uaW5nU3RhdGVPdXRwdXQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QobGluay52aXJ0dWFsTmV0d29ya0xpbmtTdGF0ZU91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgY29ycmVjdCBsb2dpY2FsIElEcyBmb3Igb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4oJ1wiaWRcIicpO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4oJ1wibmFtZVwiJyk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbignXCJsb2NhdGlvblwiJyk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbignXCJwcm92aXNpb25pbmdfc3RhdGVcIicpO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4oJ1widmlydHVhbF9uZXR3b3JrX2xpbmtfc3RhdGVcIicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklnbm9yZSBDaGFuZ2VzIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlc1wiLCAoKSA9PiB7XG4gICAgICBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4oXCJpZ25vcmVfY2hhbmdlc1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBpZ25vcmUgY2hhbmdlcyBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCIsIFwibG9jYXRpb25cIl0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgVGVycmFmb3JtIEludGVncmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHRvIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiU3ludGhUZXN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgdGFnczogeyB0ZXN0OiBcInN5bnRoZXNpc1wiIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGdlbmVyYXRlIGNvcnJlY3QgcmVzb3VyY2UgdHlwZSBpbiBUZXJyYWZvcm1cIiwgKCkgPT4ge1xuICAgICAgbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJTeW50aFRlc3RcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihcInZpcnR1YWxOZXR3b3JrTGlua3NcIik7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihcIjIwMjQtMDYtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBpbmNsdWRlIGFsbCBwcm9wZXJ0aWVzIGluIFRlcnJhZm9ybSBib2R5XCIsICgpID0+IHtcbiAgICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiU3ludGhUZXN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgcmVnaXN0cmF0aW9uRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgcmVzb2x1dGlvblBvbGljeTogXCJOeERvbWFpblJlZGlyZWN0XCIsXG4gICAgICAgIHRhZ3M6IHsgZW52OiBcInRlc3RcIiB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihcImdsb2JhbFwiKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9Db250YWluKFwiZW52XCIpO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4obW9ja1ZpcnR1YWxOZXR3b3JrSWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlJlc291cmNlIElkZW50aWZpY2F0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBwcm92aWRlIHJlc291cmNlIElEXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay5pZCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay5pZCkudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3ZpZGUgcmVzb3VyY2UgbmFtZSBmcm9tIGNvbnN0cnVjdCBpZCB3aGVuIG5hbWUgbm90IGluIHByb3BzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay5uYW1lKS50b0JlKFwiVGVzdExpbmtcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBwcm92aWRlIHJlc291cmNlIG5hbWUgZnJvbSBwcm9wcyB3aGVuIHNwZWNpZmllZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGxpbmsubmFtZSkudG9CZShcIm15LXZuZXQtbGlua1wiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJKU0lJIENvbXBsaWFuY2VcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhdmUgcHJvcGVyIHJldHVybiB0eXBlcyBmb3IgYWxsIHB1YmxpYyBtZXRob2RzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBbGwgZ2V0dGVyIG1ldGhvZHMgc2hvdWxkIHJldHVybiBzdHJpbmdzIGZvciBUZXJyYWZvcm0gaW50ZXJwb2xhdGlvbnNcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay52aXJ0dWFsTmV0d29ya0lkKS50b0JlKFwic3RyaW5nXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBsaW5rLnJlZ2lzdHJhdGlvbkVuYWJsZWQpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgICBleHBlY3QodHlwZW9mIGxpbmsucmVzb2x1dGlvblBvbGljeSkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay5wcm92aXNpb25pbmdTdGF0ZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay52aXJ0dWFsTmV0d29ya0xpbmtTdGF0ZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIG5vdCB1c2UgZnVuY3Rpb24gdHlwZXMgaW4gcHVibGljIGludGVyZmFjZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgLy8gVmVyaWZ5IG1ldGhvZHMgZXhpc3QgYW5kIGFyZSBjYWxsYWJsZVxuICAgICAgZXhwZWN0KHR5cGVvZiBsaW5rLmFkZFRhZykudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBsaW5rLnJlbW92ZVRhZykudG9CZShcImZ1bmN0aW9uXCIpO1xuXG4gICAgICAvLyBUZXN0IHRoYXQgdGhleSB3b3JrIGNvcnJlY3RseVxuICAgICAgbGluay5hZGRUYWcoXCJ0ZXN0XCIsIFwidmFsdWVcIik7XG4gICAgICBleHBlY3QobGluay5wcm9wcy50YWdzKS50b0hhdmVQcm9wZXJ0eShcInRlc3RcIiwgXCJ2YWx1ZVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJTY2hlbWEgUmVnaXN0cmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCByZWdpc3RlciBzY2hlbWFzIHN1Y2Nlc3NmdWxseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgdGhlIGxpbmsgd2FzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LCBzY2hlbWFzIHdlcmUgcmVnaXN0ZXJlZFxuICAgICAgZXhwZWN0KGxpbmspLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QobGluay5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA2LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIGluc3RhbnRpYXRpb25zIHdpdGhvdXQgZXJyb3JzXCIsICgpID0+IHtcbiAgICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmsxXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmstMVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFNlY29uZCBpbnN0YW50aWF0aW9uIHNob3VsZCBub3QgdGhyb3cgYW4gZXJyb3IgZXZlbiBpZiBzY2hlbWFzIGFyZSBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgICAgIGNvbnN0IGxpbmsyID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGluazJcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGluay0yXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGxpbmsyKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlByb3BlcnR5IFZhbGlkYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhbmRsZSByZWdpc3RyYXRpb24gZW5hYmxlZCBwcm9wZXJ0eSBjb3JyZWN0bHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGlua0VuYWJsZWQgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rRW5hYmxlZFwiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rLWVuYWJsZWRcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgcmVnaXN0cmF0aW9uRW5hYmxlZDogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBsaW5rRGlzYWJsZWQgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rRGlzYWJsZWRcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGluay1kaXNhYmxlZFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICByZWdpc3RyYXRpb25FbmFibGVkOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGlua0VuYWJsZWQucHJvcHMucmVnaXN0cmF0aW9uRW5hYmxlZCkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChsaW5rRGlzYWJsZWQucHJvcHMucmVnaXN0cmF0aW9uRW5hYmxlZCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgZGlmZmVyZW50IHJlc29sdXRpb24gcG9saWNpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGlua0RlZmF1bHQgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rRGVmYXVsdFwiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rLWRlZmF1bHRcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgcmVzb2x1dGlvblBvbGljeTogXCJEZWZhdWx0XCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbGlua1JlZGlyZWN0ID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1JlZGlyZWN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmstcmVkaXJlY3RcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgcmVzb2x1dGlvblBvbGljeTogXCJOeERvbWFpblJlZGlyZWN0XCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGxpbmtEZWZhdWx0LnByb3BzLnJlc29sdXRpb25Qb2xpY3kpLnRvQmUoXCJEZWZhdWx0XCIpO1xuICAgICAgZXhwZWN0KGxpbmtSZWRpcmVjdC5wcm9wcy5yZXNvbHV0aW9uUG9saWN5KS50b0JlKFwiTnhEb21haW5SZWRpcmVjdFwiKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
465
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1kbnMtem9uZS1saW5rLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcHJpdmF0ZWRuc3pvbmVsaW5rL3Rlc3QvcHJpdmF0ZS1kbnMtem9uZS1saW5rLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7O0FBRUgsaUNBQWdDO0FBQ2hDLCtCQUErQjtBQUMvQixrR0FBNkY7QUFDN0YsMkdBQXlHO0FBQ3pHLHdFQUdzQztBQUN0Qyx3RkFHOEM7QUFFOUMsUUFBUSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtJQUNuRCxJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFDaEMsSUFBSSxPQUEwQixDQUFDO0lBRS9CLE1BQU0sb0JBQW9CLEdBQ3hCLDZJQUE2SSxDQUFDO0lBQ2hKLE1BQU0sb0JBQW9CLEdBQ3hCLGtJQUFrSSxDQUFDO0lBRXJJLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxHQUFHLEdBQUcsZUFBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sR0FBRyx1Q0FBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV2QyxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxDQUFDLG9CQUFvQixDQUMxQiwwREFBMEIsRUFDMUIsa0VBQWtDLENBQ25DLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLCtCQUErQjtRQUNqQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1FBQ2hELEVBQUUsQ0FBQyw2RUFBNkUsRUFBRSxHQUFHLEVBQUU7WUFDckYsTUFBTSxLQUFLLEdBQTRCO2dCQUNyQyxJQUFJLEVB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QUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7WUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSwwQ0FBa0IsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7Z0JBQ25FLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixnQkFBZ0IsRUFBRSxvQkFBb0I7Z0JBQ3RDLGdCQUFnQixFQUFFLG9CQUFvQjtnQkFDdEMsZ0JBQWdCLEVBQUUsU0FBUzthQUM1QixDQUFDLENBQUM7WUFFSCxNQUFNLFlBQVksR0FBRyxJQUFJLDBDQUFrQixDQUFDLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtnQkFDckUsSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGdCQUFnQixFQUFFLG9CQUFvQjtnQkFDdEMsZ0JBQWdCLEVBQUUsb0JBQW9CO2dCQUN0QyxnQkFBZ0IsRUFBRSxrQkFBa0I7YUFDckMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXByZWhlbnNpdmUgdGVzdHMgZm9yIHRoZSBQcml2YXRlRG5zWm9uZUxpbmsgaW1wbGVtZW50YXRpb25cbiAqXG4gKiBUaGlzIHRlc3Qgc3VpdGUgdmFsaWRhdGVzIHRoZSBQcml2YXRlRG5zWm9uZUxpbmsgY2xhc3MgdXNpbmcgdGhlXG4gKiBBemFwaVJlc291cmNlIGZyYW1ld29yay4gVGVzdHMgY292ZXIgYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbixcbiAqIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZywgc2NoZW1hIHZhbGlkYXRpb24sIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uLFxuICogcGFyZW50LWNoaWxkIHJlc291cmNlIHJlbGF0aW9uc2hpcHMsIGFuZCBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKi9cblxuaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0ICogYXMgY2RrdG4gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgeyBBcGlWZXJzaW9uTWFuYWdlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvYXBpLXZlcnNpb24tbWFuYWdlclwiO1xuaW1wb3J0IHsgVmVyc2lvblN1cHBvcnRMZXZlbCB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcbmltcG9ydCB7XG4gIFByaXZhdGVEbnNab25lTGluayxcbiAgUHJpdmF0ZURuc1pvbmVMaW5rUHJvcHMsXG59IGZyb20gXCIuLi9saWIvcHJpdmF0ZS1kbnMtem9uZS1saW5rXCI7XG5pbXBvcnQge1xuICBBTExfUFJJVkFURV9ETlNfWk9ORV9MSU5LX1ZFUlNJT05TLFxuICBQUklWQVRFX0ROU19aT05FX0xJTktfVFlQRSxcbn0gZnJvbSBcIi4uL2xpYi9wcml2YXRlLWRucy16b25lLWxpbmstc2NoZW1hc1wiO1xuXG5kZXNjcmliZShcIlByaXZhdGVEbnNab25lTGluayAtIEltcGxlbWVudGF0aW9uXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdG4uQXBwO1xuICBsZXQgc3RhY2s6IGNka3RuLlRlcnJhZm9ybVN0YWNrO1xuICBsZXQgbWFuYWdlcjogQXBpVmVyc2lvbk1hbmFnZXI7XG5cbiAgY29uc3QgbW9ja1ByaXZhdGVEbnNab25lSWQgPVxuICAgIFwiL3N1YnNjcmlwdGlvbnMvMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ByaXZhdGVEbnNab25lcy9pbnRlcm5hbC5jb250b3NvLmNvbVwiO1xuICBjb25zdCBtb2NrVmlydHVhbE5ldHdvcmtJZCA9XG4gICAgXCIvc3Vic2NyaXB0aW9ucy8xMjM0NTY3OC0xMjM0LTEyMzQtMTIzNC0xMjM0NTY3ODkwMTIvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3Rlc3Qtdm5ldFwiO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdG4uVGVycmFmb3JtU3RhY2soYXBwLCBcIlRlc3RTdGFja1wiKTtcbiAgICBtYW5hZ2VyID0gQXBpVmVyc2lvbk1hbmFnZXIuaW5zdGFuY2UoKTtcblxuICAgIC8vIEVuc3VyZSBzY2hlbWFzIGFyZSByZWdpc3RlcmVkXG4gICAgdHJ5IHtcbiAgICAgIG1hbmFnZXIucmVnaXN0ZXJSZXNvdXJjZVR5cGUoXG4gICAgICAgIFBSSVZBVEVfRE5TX1pPTkVfTElOS19UWVBFLFxuICAgICAgICBBTExfUFJJVkFURV9ETlNfWk9ORV9MSU5LX1ZFUlNJT05TLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWdub3JlIGlmIGFscmVhZHkgcmVnaXN0ZXJlZFxuICAgIH1cbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDb25zdHJ1Y3RvciBhbmQgQmFzaWMgUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFZpcnR1YWwgTmV0d29yayBMaW5rIHdpdGggYXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFByaXZhdGVEbnNab25lTGlua1Byb3BzID0ge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobGluaykudG9CZUluc3RhbmNlT2YoUHJpdmF0ZURuc1pvbmVMaW5rKTtcbiAgICAgIGV4cGVjdChsaW5rLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDYtMDFcIik7XG4gICAgICBleHBlY3QobGluay5wcm9wcykudG9CZShwcm9wcyk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgVmlydHVhbCBOZXR3b3JrIExpbmsgd2l0aCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmdcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFByaXZhdGVEbnNab25lTGlua1Byb3BzID0ge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjQtMDYtMDFcIixcbiAgICAgICAgdGFnczogeyBlbnZpcm9ubWVudDogXCJ0ZXN0XCIgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGxpbmsucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wNi0wMVwiKTtcbiAgICAgIGV4cGVjdChsaW5rLnRhZ3MpLnRvRXF1YWwoeyBlbnZpcm9ubWVudDogXCJ0ZXN0XCIgfSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB1c2UgbG9jYXRpb24gZnJvbSBwcm9wcyBvciBkZWZhdWx0IGZyb20gYmFzZSBjbGFzc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUHJpdmF0ZURuc1pvbmVMaW5rUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChsaW5rLmxvY2F0aW9uKS50b0JlKFwiZ2xvYmFsXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFZpcnR1YWwgTmV0d29yayBMaW5rIHdpdGggYXV0by1yZWdpc3RyYXRpb24gZW5hYmxlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogUHJpdmF0ZURuc1pvbmVMaW5rUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICAgIHJlZ2lzdHJhdGlvbkVuYWJsZWQ6IHRydWUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChsaW5rKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvcHMucmVnaXN0cmF0aW9uRW5hYmxlZCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBWaXJ0dWFsIE5ldHdvcmsgTGluayB3aXRoIHJlc29sdXRpb24gcG9saWN5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBQcml2YXRlRG5zWm9uZUxpbmtQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgcmVzb2x1dGlvblBvbGljeTogXCJOeERvbWFpblJlZGlyZWN0XCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChsaW5rKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvcHMucmVzb2x1dGlvblBvbGljeSkudG9CZShcIk54RG9tYWluUmVkaXJlY3RcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiRnJhbWV3b3JrIEludGVncmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCByZXNvbHZlIGxhdGVzdCBBUEkgdmVyc2lvbiBhdXRvbWF0aWNhbGx5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA2LTAxXCIpO1xuICAgICAgZXhwZWN0KGxpbmsubGF0ZXN0VmVyc2lvbigpKS50b0JlKFwiMjAyNC0wNi0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3ZpZGUgdmVyc2lvbiBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay52ZXJzaW9uQ29uZmlnKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxpbmsudmVyc2lvbkNvbmZpZy52ZXJzaW9uKS50b0JlKFwiMjAyNC0wNi0wMVwiKTtcbiAgICAgIGV4cGVjdChsaW5rLnZlcnNpb25Db25maWcuc3VwcG9ydExldmVsKS50b0JlKFZlcnNpb25TdXBwb3J0TGV2ZWwuQUNUSVZFKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3ZpZGUgc3VwcG9ydGVkIHZlcnNpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB2ZXJzaW9ucyA9IGxpbmsuc3VwcG9ydGVkVmVyc2lvbnMoKTtcbiAgICAgIGV4cGVjdCh2ZXJzaW9ucykudG9Db250YWluKFwiMjAyNC0wNi0wMVwiKTtcbiAgICAgIGV4cGVjdCh2ZXJzaW9ucy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQYXJlbnQtQ2hpbGQgUmVzb3VyY2UgUmVsYXRpb25zaGlwXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB1c2UgcHJpdmF0ZURuc1pvbmVJZCBhcyBwYXJlbnQgSURcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgbGluayB3YXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkgd2l0aCBwcm9wZXIgcGFyZW50XG4gICAgICBleHBlY3QobGluaykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChsaW5rLnByb3BzLnByaXZhdGVEbnNab25lSWQpLnRvQmUobW9ja1ByaXZhdGVEbnNab25lSWQpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBjaGlsZCByZXNvdXJjZSBpbiBUZXJyYWZvcm0gc3ludGhlc2lzXCIsICgpID0+IHtcbiAgICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihcInZpcnR1YWxOZXR3b3JrTGlua3NcIik7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihtb2NrUHJpdmF0ZURuc1pvbmVJZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUHVibGljIE1ldGhvZHMgLSBWaXJ0dWFsIE5ldHdvcmsgTGluayBQcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBwcm92aWRlIHZpcnR1YWwgbmV0d29yayBJRFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGxpbmsudmlydHVhbE5ldHdvcmtJZCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay52aXJ0dWFsTmV0d29ya0lkKS50b0JlKFwic3RyaW5nXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgcHJvdmlkZSByZWdpc3RyYXRpb24gZW5hYmxlZCBzdGF0dXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICByZWdpc3RyYXRpb25FbmFibGVkOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChsaW5rLnJlZ2lzdHJhdGlvbkVuYWJsZWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QodHlwZW9mIGxpbmsucmVnaXN0cmF0aW9uRW5hYmxlZCkudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3ZpZGUgcmVzb2x1dGlvbiBwb2xpY3lcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICByZXNvbHV0aW9uUG9saWN5OiBcIkRlZmF1bHRcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay5yZXNvbHV0aW9uUG9saWN5KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBsaW5rLnJlc29sdXRpb25Qb2xpY3kpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBwcm92aWRlIHByb3Zpc2lvbmluZyBzdGF0ZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGxpbmsucHJvdmlzaW9uaW5nU3RhdGUpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QodHlwZW9mIGxpbmsucHJvdmlzaW9uaW5nU3RhdGUpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBwcm92aWRlIHZpcnR1YWwgbmV0d29yayBsaW5rIHN0YXRlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay52aXJ0dWFsTmV0d29ya0xpbmtTdGF0ZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay52aXJ0dWFsTmV0d29ya0xpbmtTdGF0ZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJUYWcgTWFuYWdlbWVudFwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgYWxsb3cgYWRkaW5nIHRhZ3NcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICB0YWdzOiB7IGluaXRpYWw6IFwidGFnXCIgfSxcbiAgICAgIH0pO1xuXG4gICAgICBsaW5rLmFkZFRhZyhcIm5ld0tleVwiLCBcIm5ld1ZhbHVlXCIpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvcHMudGFncykudG9IYXZlUHJvcGVydHkoXCJuZXdLZXlcIiwgXCJuZXdWYWx1ZVwiKTtcbiAgICAgIGV4cGVjdChsaW5rLnByb3BzLnRhZ3MpLnRvSGF2ZVByb3BlcnR5KFwiaW5pdGlhbFwiLCBcInRhZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGFsbG93IHJlbW92aW5nIHRhZ3NcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICB0YWdzOiB7IGtleTE6IFwidmFsdWUxXCIsIGtleTI6IFwidmFsdWUyXCIgfSxcbiAgICAgIH0pO1xuXG4gICAgICBsaW5rLnJlbW92ZVRhZyhcImtleTFcIik7XG4gICAgICBleHBlY3QobGluay5wcm9wcy50YWdzKS5ub3QudG9IYXZlUHJvcGVydHkoXCJrZXkxXCIpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvcHMudGFncykudG9IYXZlUHJvcGVydHkoXCJrZXkyXCIsIFwidmFsdWUyXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGFkZGluZyB0YWdzIHdoZW4gbm8gaW5pdGlhbCB0YWdzIGV4aXN0XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBsaW5rLmFkZFRhZyhcIm5ld0tleVwiLCBcIm5ld1ZhbHVlXCIpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvcHMudGFncykudG9IYXZlUHJvcGVydHkoXCJuZXdLZXlcIiwgXCJuZXdWYWx1ZVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJPdXRwdXRzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgYWxsIHJlcXVpcmVkIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChsaW5rLmlkT3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxpbmsubmFtZU91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChsaW5rLmxvY2F0aW9uT3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGxpbmsucHJvdmlzaW9uaW5nU3RhdGVPdXRwdXQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QobGluay52aXJ0dWFsTmV0d29ya0xpbmtTdGF0ZU91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgY29ycmVjdCBsb2dpY2FsIElEcyBmb3Igb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4oJ1wiaWRcIicpO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4oJ1wibmFtZVwiJyk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbignXCJsb2NhdGlvblwiJyk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbignXCJwcm92aXNpb25pbmdfc3RhdGVcIicpO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4oJ1widmlydHVhbF9uZXR3b3JrX2xpbmtfc3RhdGVcIicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklnbm9yZSBDaGFuZ2VzIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlc1wiLCAoKSA9PiB7XG4gICAgICBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4oXCJpZ25vcmVfY2hhbmdlc1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBpZ25vcmUgY2hhbmdlcyBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmtcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCIsIFwibG9jYXRpb25cIl0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgVGVycmFmb3JtIEludGVncmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHRvIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiU3ludGhUZXN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgdGFnczogeyB0ZXN0OiBcInN5bnRoZXNpc1wiIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGdlbmVyYXRlIGNvcnJlY3QgcmVzb3VyY2UgdHlwZSBpbiBUZXJyYWZvcm1cIiwgKCkgPT4ge1xuICAgICAgbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJTeW50aFRlc3RcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihcInZpcnR1YWxOZXR3b3JrTGlua3NcIik7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihcIjIwMjQtMDYtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBpbmNsdWRlIGFsbCBwcm9wZXJ0aWVzIGluIFRlcnJhZm9ybSBib2R5XCIsICgpID0+IHtcbiAgICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiU3ludGhUZXN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgcmVnaXN0cmF0aW9uRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgcmVzb2x1dGlvblBvbGljeTogXCJOeERvbWFpblJlZGlyZWN0XCIsXG4gICAgICAgIHRhZ3M6IHsgZW52OiBcInRlc3RcIiB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihcImdsb2JhbFwiKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9Db250YWluKFwiZW52XCIpO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4obW9ja1ZpcnR1YWxOZXR3b3JrSWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlJlc291cmNlIElkZW50aWZpY2F0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBwcm92aWRlIHJlc291cmNlIElEXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay5pZCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay5pZCkudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3ZpZGUgcmVzb3VyY2UgbmFtZSBmcm9tIGNvbnN0cnVjdCBpZCB3aGVuIG5hbWUgbm90IGluIHByb3BzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGluay5uYW1lKS50b0JlKFwiVGVzdExpbmtcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBwcm92aWRlIHJlc291cmNlIG5hbWUgZnJvbSBwcm9wcyB3aGVuIHNwZWNpZmllZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGxpbmsubmFtZSkudG9CZShcIm15LXZuZXQtbGlua1wiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJKU0lJIENvbXBsaWFuY2VcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhdmUgcHJvcGVyIHJldHVybiB0eXBlcyBmb3IgYWxsIHB1YmxpYyBtZXRob2RzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGxpbmsgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmtcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBBbGwgZ2V0dGVyIG1ldGhvZHMgc2hvdWxkIHJldHVybiBzdHJpbmdzIGZvciBUZXJyYWZvcm0gaW50ZXJwb2xhdGlvbnNcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay52aXJ0dWFsTmV0d29ya0lkKS50b0JlKFwic3RyaW5nXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBsaW5rLnJlZ2lzdHJhdGlvbkVuYWJsZWQpLnRvQmUoXCJzdHJpbmdcIik7XG4gICAgICBleHBlY3QodHlwZW9mIGxpbmsucmVzb2x1dGlvblBvbGljeSkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay5wcm92aXNpb25pbmdTdGF0ZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICAgIGV4cGVjdCh0eXBlb2YgbGluay52aXJ0dWFsTmV0d29ya0xpbmtTdGF0ZSkudG9CZShcInN0cmluZ1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIG5vdCB1c2UgZnVuY3Rpb24gdHlwZXMgaW4gcHVibGljIGludGVyZmFjZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgLy8gVmVyaWZ5IG1ldGhvZHMgZXhpc3QgYW5kIGFyZSBjYWxsYWJsZVxuICAgICAgZXhwZWN0KHR5cGVvZiBsaW5rLmFkZFRhZykudG9CZShcImZ1bmN0aW9uXCIpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBsaW5rLnJlbW92ZVRhZykudG9CZShcImZ1bmN0aW9uXCIpO1xuXG4gICAgICAvLyBUZXN0IHRoYXQgdGhleSB3b3JrIGNvcnJlY3RseVxuICAgICAgbGluay5hZGRUYWcoXCJ0ZXN0XCIsIFwidmFsdWVcIik7XG4gICAgICBleHBlY3QobGluay5wcm9wcy50YWdzKS50b0hhdmVQcm9wZXJ0eShcInRlc3RcIiwgXCJ2YWx1ZVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJTY2hlbWEgUmVnaXN0cmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCByZWdpc3RlciBzY2hlbWFzIHN1Y2Nlc3NmdWxseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBsaW5rID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgdGhlIGxpbmsgd2FzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LCBzY2hlbWFzIHdlcmUgcmVnaXN0ZXJlZFxuICAgICAgZXhwZWN0KGxpbmspLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QobGluay5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA2LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIGluc3RhbnRpYXRpb25zIHdpdGhvdXQgZXJyb3JzXCIsICgpID0+IHtcbiAgICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsoc3RhY2ssIFwiVGVzdExpbmsxXCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmstMVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFNlY29uZCBpbnN0YW50aWF0aW9uIHNob3VsZCBub3QgdGhyb3cgYW4gZXJyb3IgZXZlbiBpZiBzY2hlbWFzIGFyZSBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgICAgIGNvbnN0IGxpbmsyID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGluazJcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGluay0yXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgICBwcml2YXRlRG5zWm9uZUlkOiBtb2NrUHJpdmF0ZURuc1pvbmVJZCxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtJZDogbW9ja1ZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGxpbmsyKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlByb3BlcnR5IFZhbGlkYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhbmRsZSByZWdpc3RyYXRpb24gZW5hYmxlZCBwcm9wZXJ0eSBjb3JyZWN0bHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGlua0VuYWJsZWQgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rRW5hYmxlZFwiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rLWVuYWJsZWRcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgcmVnaXN0cmF0aW9uRW5hYmxlZDogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBsaW5rRGlzYWJsZWQgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rRGlzYWJsZWRcIiwge1xuICAgICAgICBuYW1lOiBcIm15LXZuZXQtbGluay1kaXNhYmxlZFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgICAgcHJpdmF0ZURuc1pvbmVJZDogbW9ja1ByaXZhdGVEbnNab25lSWQsXG4gICAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IG1vY2tWaXJ0dWFsTmV0d29ya0lkLFxuICAgICAgICByZWdpc3RyYXRpb25FbmFibGVkOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobGlua0VuYWJsZWQucHJvcHMucmVnaXN0cmF0aW9uRW5hYmxlZCkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChsaW5rRGlzYWJsZWQucHJvcHMucmVnaXN0cmF0aW9uRW5hYmxlZCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgZGlmZmVyZW50IHJlc29sdXRpb24gcG9saWNpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbGlua0RlZmF1bHQgPSBuZXcgUHJpdmF0ZURuc1pvbmVMaW5rKHN0YWNrLCBcIlRlc3RMaW5rRGVmYXVsdFwiLCB7XG4gICAgICAgIG5hbWU6IFwibXktdm5ldC1saW5rLWRlZmF1bHRcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgcmVzb2x1dGlvblBvbGljeTogXCJEZWZhdWx0XCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbGlua1JlZGlyZWN0ID0gbmV3IFByaXZhdGVEbnNab25lTGluayhzdGFjaywgXCJUZXN0TGlua1JlZGlyZWN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJteS12bmV0LWxpbmstcmVkaXJlY3RcIixcbiAgICAgICAgbG9jYXRpb246IFwiZ2xvYmFsXCIsXG4gICAgICAgIHByaXZhdGVEbnNab25lSWQ6IG1vY2tQcml2YXRlRG5zWm9uZUlkLFxuICAgICAgICB2aXJ0dWFsTmV0d29ya0lkOiBtb2NrVmlydHVhbE5ldHdvcmtJZCxcbiAgICAgICAgcmVzb2x1dGlvblBvbGljeTogXCJOeERvbWFpblJlZGlyZWN0XCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGxpbmtEZWZhdWx0LnByb3BzLnJlc29sdXRpb25Qb2xpY3kpLnRvQmUoXCJEZWZhdWx0XCIpO1xuICAgICAgZXhwZWN0KGxpbmtSZWRpcmVjdC5wcm9wcy5yZXNvbHV0aW9uUG9saWN5KS50b0JlKFwiTnhEb21haW5SZWRpcmVjdFwiKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* - Full backward compatibility
|
|
18
18
|
* - JSII compliance for multi-language support
|
|
19
19
|
*/
|
|
20
|
-
import * as
|
|
20
|
+
import * as cdktn from "cdktn";
|
|
21
21
|
import { Construct } from "constructs";
|
|
22
22
|
import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
|
|
23
23
|
import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
|
|
@@ -176,10 +176,10 @@ export declare class PublicIPAddress extends AzapiResource {
|
|
|
176
176
|
* The input properties for this Public IP Address instance
|
|
177
177
|
*/
|
|
178
178
|
readonly props: PublicIPAddressProps;
|
|
179
|
-
readonly idOutput:
|
|
180
|
-
readonly nameOutput:
|
|
181
|
-
readonly locationOutput:
|
|
182
|
-
readonly tagsOutput:
|
|
179
|
+
readonly idOutput: cdktn.TerraformOutput;
|
|
180
|
+
readonly nameOutput: cdktn.TerraformOutput;
|
|
181
|
+
readonly locationOutput: cdktn.TerraformOutput;
|
|
182
|
+
readonly tagsOutput: cdktn.TerraformOutput;
|
|
183
183
|
/**
|
|
184
184
|
* Creates a new Azure Public IP Address using the AzapiResource framework
|
|
185
185
|
*
|
|
@@ -22,7 +22,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
22
22
|
* - Full backward compatibility
|
|
23
23
|
* - JSII compliance for multi-language support
|
|
24
24
|
*/
|
|
25
|
-
const
|
|
25
|
+
const cdktn = require("cdktn");
|
|
26
26
|
const public_ip_address_schemas_1 = require("./public-ip-address-schemas");
|
|
27
27
|
const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
|
|
28
28
|
/**
|
|
@@ -102,19 +102,19 @@ class PublicIPAddress extends azapi_resource_1.AzapiResource {
|
|
|
102
102
|
this.props = props;
|
|
103
103
|
// Extract properties from the AZAPI resource outputs using Terraform interpolation
|
|
104
104
|
// Create Terraform outputs for easy access and referencing from other resources
|
|
105
|
-
this.idOutput = new
|
|
105
|
+
this.idOutput = new cdktn.TerraformOutput(this, "id", {
|
|
106
106
|
value: this.id,
|
|
107
107
|
description: "The ID of the Public IP Address",
|
|
108
108
|
});
|
|
109
|
-
this.nameOutput = new
|
|
109
|
+
this.nameOutput = new cdktn.TerraformOutput(this, "name", {
|
|
110
110
|
value: `\${${this.terraformResource.fqn}.name}`,
|
|
111
111
|
description: "The name of the Public IP Address",
|
|
112
112
|
});
|
|
113
|
-
this.locationOutput = new
|
|
113
|
+
this.locationOutput = new cdktn.TerraformOutput(this, "location", {
|
|
114
114
|
value: `\${${this.terraformResource.fqn}.location}`,
|
|
115
115
|
description: "The location of the Public IP Address",
|
|
116
116
|
});
|
|
117
|
-
this.tagsOutput = new
|
|
117
|
+
this.tagsOutput = new cdktn.TerraformOutput(this, "tags", {
|
|
118
118
|
value: `\${${this.terraformResource.fqn}.tags}`,
|
|
119
119
|
description: "The tags assigned to the Public IP Address",
|
|
120
120
|
});
|
|
@@ -238,8 +238,8 @@ class PublicIPAddress extends azapi_resource_1.AzapiResource {
|
|
|
238
238
|
}
|
|
239
239
|
exports.PublicIPAddress = PublicIPAddress;
|
|
240
240
|
_a = JSII_RTTI_SYMBOL_1;
|
|
241
|
-
PublicIPAddress[_a] = { fqn: "@microsoft/terraform-cdk-constructs.PublicIPAddress", version: "
|
|
241
|
+
PublicIPAddress[_a] = { fqn: "@microsoft/terraform-cdk-constructs.PublicIPAddress", version: "2.2.0" };
|
|
242
242
|
(() => {
|
|
243
243
|
azapi_resource_1.AzapiResource.registerSchemas(public_ip_address_schemas_1.PUBLIC_IP_ADDRESS_TYPE, public_ip_address_schemas_1.ALL_PUBLIC_IP_ADDRESS_VERSIONS);
|
|
244
244
|
})();
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWlwLWFkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcHVibGljaXBhZGRyZXNzL2xpYi9wdWJsaWMtaXAtYWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCwrQkFBK0I7QUFFL0IsMkVBR3FDO0FBQ3JDLDhFQUdtRDtBQTJHbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwREc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsOEJBQWE7SUFtQmhELHNFQUFzRTtJQUV0RTs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixtRkFBbUY7UUFFbkYsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLGlDQUFpQztTQUMvQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hELEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVE7WUFDL0MsV0FBVyxFQUFFLG1DQUFtQztTQUNqRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEtBQUssRUFBRSxNQUFN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SUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBYSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLEdBQVc7UUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYseUJBQXlCO0lBQ3pCLGdGQUFnRjtJQUVoRjs7T0FFRztJQUNLLG1CQUFtQjtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDOUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTthQUN6QyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFsTUgsMENBbU1DOzs7QUFsTUM7SUFDRSw4QkFBYSxDQUFDLGVBQWUsQ0FDM0Isa0RBQXNCLEVBQ3RCLDBEQUE4QixDQUMvQixDQUFDO0FBQ0osQ0FBQyxHQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF6dXJlIFB1YmxpYyBJUCBBZGRyZXNzIGltcGxlbWVudGF0aW9uIHVzaW5nIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHVuaWZpZWQgaW1wbGVtZW50YXRpb24gZm9yIEF6dXJlIFB1YmxpYyBJUCBBZGRyZXNzZXMgdGhhdFxuICogYXV0b21hdGljYWxseSBoYW5kbGVzIHZlcnNpb24gbWFuYWdlbWVudCwgc2NoZW1hIHZhbGlkYXRpb24sIGFuZCBwcm9wZXJ0eVxuICogdHJhbnNmb3JtYXRpb24gYWNyb3NzIGFsbCBzdXBwb3J0ZWQgQVBJIHZlcnNpb25zLlxuICpcbiAqIFN1cHBvcnRlZCBBUEkgVmVyc2lvbnM6XG4gKiAtIDIwMjQtMDctMDEgKEFjdGl2ZSlcbiAqIC0gMjAyNC0xMC0wMSAoQWN0aXZlKVxuICogLSAyMDI1LTAxLTAxIChBY3RpdmUsIExhdGVzdClcbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gQXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb24gd2hlbiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICogLSBFeHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcgZm9yIHN0YWJpbGl0eSByZXF1aXJlbWVudHNcbiAqIC0gU2NoZW1hLWRyaXZlbiB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvblxuICogLSBGdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAqIC0gSlNJSSBjb21wbGlhbmNlIGZvciBtdWx0aS1sYW5ndWFnZSBzdXBwb3J0XG4gKi9cblxuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQUxMX1BVQkxJQ19JUF9BRERSRVNTX1ZFUlNJT05TLFxuICBQVUJMSUNfSVBfQUREUkVTU19UWVBFLFxufSBmcm9tIFwiLi9wdWJsaWMtaXAtYWRkcmVzcy1zY2hlbWFzXCI7XG5pbXBvcnQge1xuICBBemFwaVJlc291cmNlLFxuICBBemFwaVJlc291cmNlUHJvcHMsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9hemFwaS1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vKipcbiAqIFNLVSBjb25maWd1cmF0aW9uIGZvciBQdWJsaWMgSVAgQWRkcmVzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0lQQWRkcmVzc1NrdSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBTS1VcbiAgICogQGV4YW1wbGUgXCJCYXNpY1wiLCBcIlN0YW5kYXJkXCJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGllciBvZiB0aGUgU0tVXG4gICAqIEBleGFtcGxlIFwiUmVnaW9uYWxcIiwgXCJHbG9iYWxcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGllcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBETlMgc2V0dGluZ3MgY29uZmlndXJhdGlvbiBmb3IgUHVibGljIElQIEFkZHJlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNJUEFkZHJlc3NEbnNTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgbGFiZWxcbiAgICogVGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIGRvbWFpbiBuYW1lIGxhYmVsIGFuZCByZWdpb25hbGl6ZWQgRE5TIHpvbmVcbiAgICogbWFrZSB1cCB0aGUgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChGUUROKSBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpYyBJUFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRnVsbHkgUXVhbGlmaWVkIERvbWFpbiBOYW1lXG4gICAqIFRoaXMgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIGRvbWFpbk5hbWVMYWJlbCBhbmQgdGhlIHJlZ2lvbmFsaXplZCBETlMgem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZnFkbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJldmVyc2UgRlFETlxuICAgKiBBIHVzZXItdmlzaWJsZSwgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIHRoYXQgcmVzb2x2ZXMgdG8gdGhpcyBwdWJsaWMgSVAgYWRkcmVzc1xuICAgKi9cbiAgcmVhZG9ubHkgcmV2ZXJzZUZxZG4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIEF6dXJlIFB1YmxpYyBJUCBBZGRyZXNzXG4gKlxuICogRXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMgd2l0aCBQdWJsaWMgSVAgQWRkcmVzcyBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljSVBBZGRyZXNzUHJvcHMgZXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogU0tVIG9mIHRoZSBwdWJsaWMgSVAgYWRkcmVzc1xuICAgKiBTdGFuZGFyZCBTS1Ugc3VwcG9ydHMgem9uZXMgYW5kIGhhcyBTTEEgZ3VhcmFudGVlc1xuICAgKiBCYXNpYyBTS1UgZG9lcyBub3Qgc3VwcG9ydCB6b25lc1xuICAgKi9cbiAgcmVhZG9ubHkgc2t1PzogUHVibGljSVBBZGRyZXNzU2t1O1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgSVAgYWxsb2NhdGlvbiBtZXRob2RcbiAgICogLSBTdGF0aWM6IElQIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGltbWVkaWF0ZWx5IGFuZCBkb2Vzbid0IGNoYW5nZVxuICAgKiAtIER5bmFtaWM6IElQIGFkZHJlc3MgaXMgYWxsb2NhdGVkIHdoZW4gYXNzb2NpYXRlZCB3aXRoIGEgcmVzb3VyY2VcbiAgICogTm90ZTogU3RhbmRhcmQgU0tVIHJlcXVpcmVzIFN0YXRpYyBhbGxvY2F0aW9uXG4gICAqIEBkZWZhdWx0VmFsdWUgXCJEeW5hbWljXCJcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZD86IHN0cmluZztcblxuICAvKipcbiAgICogUHVibGljIElQIGFkZHJlc3MgdmVyc2lvblxuICAgKiBAZGVmYXVsdFZhbHVlIFwiSVB2NFwiXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNJUEFkZHJlc3NWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBETlMgc2V0dGluZ3MgZm9yIHRoZSBwdWJsaWMgSVAgYWRkcmVzc1xuICAgKiBPcHRpb25hbCAtIGNvbmZpZ3VyZXMgRE5TIGxhYmVsIGZvciB0aGUgcHVibGljIElQXG4gICAqL1xuICByZWFkb25seSBkbnNTZXR0aW5ncz86IFB1YmxpY0lQQWRkcmVzc0Ruc1NldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBJZGxlIHRpbWVvdXQgaW4gbWludXRlc1xuICAgKiBWYWxpZCByYW5nZTogNC0zMCBtaW51dGVzXG4gICAqIEBkZWZhdWx0VmFsdWUgNFxuICAgKi9cbiAgcmVhZG9ubHkgaWRsZVRpbWVvdXRJbk1pbnV0ZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF2YWlsYWJpbGl0eSB6b25lcyBmb3IgdGhlIHB1YmxpYyBJUCBhZGRyZXNzXG4gICAqIE9ubHkgc3VwcG9ydGVkIHdpdGggU3RhbmRhcmQgU0tVXG4gICAqIEBleGFtcGxlIFtcIjFcIl0sIFtcIjJcIl0sIFtcIjNcIl0sIFtcIjFcIiwgXCIyXCIsIFwiM1wiXVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVzb3VyY2UgZ3JvdXAgSUQgd2hlcmUgdGhlIFB1YmxpYyBJUCB3aWxsIGJlIGNyZWF0ZWRcbiAgICogT3B0aW9uYWwgLSB3aWxsIHVzZSB0aGUgc3Vic2NyaXB0aW9uIHNjb3BlIGlmIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGlnbm9yZSBjaGFuZ2VzXG4gICAqIFVzZWZ1bCBmb3IgcHJvcGVydGllcyB0aGF0IGFyZSBleHRlcm5hbGx5IG1hbmFnZWRcbiAgICpcbiAgICogQGV4YW1wbGUgW1widGFnc1wiXVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ2hhbmdlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEF6dXJlIFB1YmxpYyBJUCBBZGRyZXNzIGltcGxlbWVudGF0aW9uXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbmdsZSwgdmVyc2lvbi1hd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlcGxhY2VzXG4gKiB2ZXJzaW9uLXNwZWNpZmljIFB1YmxpYyBJUCBBZGRyZXNzIGNsYXNzZXMuIEl0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uXG4gKiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlIG1haW50YWluaW5nXG4gKiBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbiAoU3RhbmRhcmQgU3RhdGljIElQKTpcbiAqIGNvbnN0IHB1YmxpY0lwID0gbmV3IFB1YmxpY0lQQWRkcmVzcyh0aGlzLCBcInB1YmxpY0lwXCIsIHtcbiAqICAgbmFtZTogXCJteS1wdWJsaWMtaXBcIixcbiAqICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gKiAgIHNrdToge1xuICogICAgIG5hbWU6IFwiU3RhbmRhcmRcIixcbiAqICAgICB0aWVyOiBcIlJlZ2lvbmFsXCJcbiAqICAgfSxcbiAqICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOiBcIlN0YXRpY1wiXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgRHluYW1pYyBJUDpcbiAqIGNvbnN0IHB1YmxpY0lwID0gbmV3IFB1YmxpY0lQQWRkcmVzcyh0aGlzLCBcInB1YmxpY0lwXCIsIHtcbiAqICAgbmFtZTogXCJteS1wdWJsaWMtaXBcIixcbiAqICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gKiAgIHNrdToge1xuICogICAgIG5hbWU6IFwiQmFzaWNcIlxuICogICB9LFxuICogICBwdWJsaWNJUEFsbG9jYXRpb25NZXRob2Q6IFwiRHluYW1pY1wiXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUHVibGljIElQIHdpdGggRE5TIGxhYmVsOlxuICogY29uc3QgcHVibGljSXAgPSBuZXcgUHVibGljSVBBZGRyZXNzKHRoaXMsIFwicHVibGljSXBcIiwge1xuICogICBuYW1lOiBcIm15LXB1YmxpYy1pcFwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgc2t1OiB7XG4gKiAgICAgbmFtZTogXCJTdGFuZGFyZFwiXG4gKiAgIH0sXG4gKiAgIHB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZDogXCJTdGF0aWNcIixcbiAqICAgZG5zU2V0dGluZ3M6IHtcbiAqICAgICBkb21haW5OYW1lTGFiZWw6IFwibXlhcHBcIlxuICogICB9XG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gWm9uYWwgUHVibGljIElQOlxuICogY29uc3QgcHVibGljSXAgPSBuZXcgUHVibGljSVBBZGRyZXNzKHRoaXMsIFwicHVibGljSXBcIiwge1xuICogICBuYW1lOiBcIm15LXB1YmxpYy1pcFwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgc2t1OiB7XG4gKiAgICAgbmFtZTogXCJTdGFuZGFyZFwiXG4gKiAgIH0sXG4gKiAgIHB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZDogXCJTdGF0aWNcIixcbiAqICAgem9uZXM6IFtcIjFcIl1cbiAqIH0pO1xuICpcbiAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaWNJUEFkZHJlc3MgZXh0ZW5kcyBBemFwaVJlc291cmNlIHtcbiAgc3RhdGljIHtcbiAgICBBemFwaVJlc291cmNlLnJlZ2lzdGVyU2NoZW1hcyhcbiAgICAgIFBVQkxJQ19JUF9BRERSRVNTX1RZUEUsXG4gICAgICBBTExfUFVCTElDX0lQX0FERFJFU1NfVkVSU0lPTlMsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgcHJvcGVydGllcyBmb3IgdGhpcyBQdWJsaWMgSVAgQWRkcmVzcyBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBQdWJsaWNJUEFkZHJlc3NQcm9wcztcblxuICAvLyBPdXRwdXQgcHJvcGVydGllcyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nXG4gIHB1YmxpYyByZWFkb25seSBpZE91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZU91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYXRpb25PdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IHRhZ3NPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcblxuICAvLyBQdWJsaWMgcHJvcGVydGllcyB0aGF0IG1hdGNoIHRoZSBvcmlnaW5hbCBQdWJsaWNJUEFkZHJlc3MgaW50ZXJmYWNlXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgUHVibGljIElQIEFkZHJlc3MgdXNpbmcgdGhlIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gICAqXG4gICAqIFRoZSBjb25zdHJ1Y3RvciBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvbiByZXNvbHV0aW9uLCBzY2hlbWEgcmVnaXN0cmF0aW9uLFxuICAgKiB2YWxpZGF0aW9uLCBhbmQgcmVzb3VyY2UgY3JlYXRpb24uIEl0IG1haW50YWlucyBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICogd2l0aCBleGlzdGluZyBQdWJsaWMgSVAgQWRkcmVzcyBpbXBsZW1lbnRhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIFB1YmxpYyBJUCBBZGRyZXNzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGljSVBBZGRyZXNzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIC8vIEV4dHJhY3QgcHJvcGVydGllcyBmcm9tIHRoZSBBWkFQSSByZXNvdXJjZSBvdXRwdXRzIHVzaW5nIFRlcnJhZm9ybSBpbnRlcnBvbGF0aW9uXG5cbiAgICAvLyBDcmVhdGUgVGVycmFmb3JtIG91dHB1dHMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZyBmcm9tIG90aGVyIHJlc291cmNlc1xuICAgIHRoaXMuaWRPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwiaWRcIiwge1xuICAgICAgdmFsdWU6IHRoaXMuaWQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgSUQgb2YgdGhlIFB1YmxpYyBJUCBBZGRyZXNzXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5uYW1lfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbmFtZSBvZiB0aGUgUHVibGljIElQIEFkZHJlc3NcIixcbiAgICB9KTtcblxuICAgIHRoaXMubG9jYXRpb25PdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibG9jYXRpb25cIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubG9jYXRpb259YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBsb2NhdGlvbiBvZiB0aGUgUHVibGljIElQIEFkZHJlc3NcIixcbiAgICB9KTtcblxuICAgIHRoaXMudGFnc091dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJ0YWdzXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LnRhZ3N9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSB0YWdzIGFzc2lnbmVkIHRvIHRoZSBQdWJsaWMgSVAgQWRkcmVzc1wiLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHMgdG8gbWF0Y2ggb3JpZ2luYWwgbmFtaW5nIGNvbnZlbnRpb25cbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5uYW1lT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibmFtZVwiKTtcbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibG9jYXRpb25cIik7XG4gICAgdGhpcy50YWdzT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwidGFnc1wiKTtcblxuICAgIC8vIEFwcGx5IGlnbm9yZSBjaGFuZ2VzIGlmIHNwZWNpZmllZFxuICAgIHRoaXMuX2FwcGx5SWdub3JlQ2hhbmdlcygpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUkVRVUlSRUQgQUJTVFJBQ1QgTUVUSE9EUyBGUk9NIFZlcnNpb25lZEF6YXBpUmVzb3VyY2VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGVmYXVsdCBBUEkgdmVyc2lvbiB0byB1c2Ugd2hlbiBubyBleHBsaWNpdCB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICAgKiBSZXR1cm5zIHRoZSBtb3N0IHJlY2VudCBzdGFibGUgdmVyc2lvbiBhcyB0aGUgZGVmYXVsdFxuICAgKi9cbiAgcHJvdGVjdGVkIGRlZmF1bHRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiMjAyNC0xMC0wMVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEF6dXJlIHJlc291cmNlIHR5cGUgZm9yIFB1YmxpYyBJUCBBZGRyZXNzZXNcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUFVCTElDX0lQX0FERFJFU1NfVFlQRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBUEkgc2NoZW1hIGZvciB0aGUgcmVzb2x2ZWQgdmVyc2lvblxuICAgKiBVc2VzIHRoZSBmcmFtZXdvcmsncyBzY2hlbWEgcmVzb2x1dGlvbiB0byBnZXQgdGhlIGFwcHJvcHJpYXRlIHNjaGVtYVxuICAgKi9cbiAgcHJvdGVjdGVkIGFwaVNjaGVtYSgpOiBBcGlTY2hlbWEge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVTY2hlbWEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBsb2NhdGlvbiBpcyByZXF1aXJlZCBmb3IgUHVibGljIElQIEFkZHJlc3Nlc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlcXVpcmVzTG9jYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgcmVzb3VyY2UgYm9keSBmb3IgdGhlIEF6dXJlIEFQSSBjYWxsXG4gICAqIFRyYW5zZm9ybXMgdGhlIGlucHV0IHByb3BlcnRpZXMgaW50byB0aGUgSlNPTiBmb3JtYXQgZXhwZWN0ZWQgYnkgQXp1cmUgUkVTVCBBUElcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZUJvZHkocHJvcHM6IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHlwZWRQcm9wcyA9IHByb3BzIGFzIFB1YmxpY0lQQWRkcmVzc1Byb3BzO1xuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbixcbiAgICAgIHRhZ3M6IHRoaXMuYWxsVGFncygpLFxuICAgICAgc2t1OiB0eXBlZFByb3BzLnNrdSxcbiAgICAgIHpvbmVzOiB0eXBlZFByb3BzLnpvbmVzLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBwdWJsaWNJUEFsbG9jYXRpb25NZXRob2Q6XG4gICAgICAgICAgdHlwZWRQcm9wcy5wdWJsaWNJUEFsbG9jYXRpb25NZXRob2QgfHwgXCJEeW5hbWljXCIsXG4gICAgICAgIHB1YmxpY0lQQWRkcmVzc1ZlcnNpb246IHR5cGVkUHJvcHMucHVibGljSVBBZGRyZXNzVmVyc2lvbiB8fCBcIklQdjRcIixcbiAgICAgICAgZG5zU2V0dGluZ3M6IHR5cGVkUHJvcHMuZG5zU2V0dGluZ3MsXG4gICAgICAgIGlkbGVUaW1lb3V0SW5NaW51dGVzOiB0eXBlZFByb3BzLmlkbGVUaW1lb3V0SW5NaW51dGVzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFVCTElDIE1FVEhPRFMgRk9SIFBVQkxJQyBJUCBBRERSRVNTIE9QRVJBVElPTlNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdWJzY3JpcHRpb24gSUQgZnJvbSB0aGUgUHVibGljIElQIEFkZHJlc3MgSURcbiAgICogRXh0cmFjdHMgdGhlIHN1YnNjcmlwdGlvbiBJRCBmcm9tIHRoZSBBenVyZSByZXNvdXJjZSBJRCBmb3JtYXRcbiAgICovXG4gIHB1YmxpYyBnZXQgc3Vic2NyaXB0aW9uSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBpZFBhcnRzID0gdGhpcy5pZC5zcGxpdChcIi9cIik7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uSW5kZXggPSBpZFBhcnRzLmluZGV4T2YoXCJzdWJzY3JpcHRpb25zXCIpO1xuICAgIGlmIChzdWJzY3JpcHRpb25JbmRleCAhPT0gLTEgJiYgc3Vic2NyaXB0aW9uSW5kZXggKyAxIDwgaWRQYXJ0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBpZFBhcnRzW3N1YnNjcmlwdGlvbkluZGV4ICsgMV07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiVW5hYmxlIHRvIGV4dHJhY3Qgc3Vic2NyaXB0aW9uIElEIGZyb20gUHVibGljIElQIEFkZHJlc3MgSURcIixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCByZXNvdXJjZSBpZGVudGlmaWVyIGZvciB1c2UgaW4gb3RoZXIgQXp1cmUgcmVzb3VyY2VzXG4gICAqIEFsaWFzIGZvciB0aGUgaWQgcHJvcGVydHkgdG8gbWF0Y2ggb3JpZ2luYWwgaW50ZXJmYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHJlc291cmNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIElQIGFkZHJlc3Mgb3V0cHV0IHZhbHVlXG4gICAqIFJldHVybnMgdGhlIFRlcnJhZm9ybSBpbnRlcnBvbGF0aW9uIHN0cmluZyBmb3IgdGhlIElQIGFkZHJlc3NcbiAgICovXG4gIHB1YmxpYyBnZXQgaXBBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMuaXBBZGRyZXNzfWA7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGFnIHRvIHRoZSBQdWJsaWMgSVAgQWRkcmVzc1xuICAgKiBOb3RlOiBUaGlzIG1vZGlmaWVzIHRoZSBjb25zdHJ1Y3QgcHJvcHMgYnV0IHJlcXVpcmVzIGEgbmV3IGRlcGxveW1lbnQgdG8gdGFrZSBlZmZlY3RcbiAgICovXG4gIHB1YmxpYyBhZGRUYWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudGFncykge1xuICAgICAgKHRoaXMucHJvcHMgYXMgYW55KS50YWdzID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvcHMudGFncyFba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRhZyBmcm9tIHRoZSBQdWJsaWMgSVAgQWRkcmVzc1xuICAgKiBOb3RlOiBUaGlzIG1vZGlmaWVzIHRoZSBjb25zdHJ1Y3QgcHJvcHMgYnV0IHJlcXVpcmVzIGEgbmV3IGRlcGxveW1lbnQgdG8gdGFrZSBlZmZlY3RcbiAgICovXG4gIHB1YmxpYyByZW1vdmVUYWcoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy50YWdzICYmIHRoaXMucHJvcHMudGFnc1trZXldKSB7XG4gICAgICBkZWxldGUgdGhpcy5wcm9wcy50YWdzW2tleV07XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJJVkFURSBIRUxQRVIgTUVUSE9EU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlcyBpZiBzcGVjaWZpZWQgaW4gcHJvcHNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5SWdub3JlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzICYmIHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmFkZE92ZXJyaWRlKFwibGlmZWN5Y2xlXCIsIHtcbiAgICAgICAgaWdub3JlX2NoYW5nZXM6IHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
245
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWlwLWFkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcHVibGljaXBhZGRyZXNzL2xpYi9wdWJsaWMtaXAtYWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCwrQkFBK0I7QUFFL0IsMkVBR3FDO0FBQ3JDLDhFQUdtRDtBQTJHbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwREc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsOEJBQWE7SUFtQmhELHNFQUFzRTtJQUV0RTs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjtRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixtRkFBbUY7UUFFbkYsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLGlDQUFpQztTQUMvQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hELEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVE7WUFDL0MsV0FBVyxFQUFFLG1DQUFtQztTQUNqRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEtBQUssRUFBRSxNQUFN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SUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBYSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLEdBQVc7UUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYseUJBQXlCO0lBQ3pCLGdGQUFnRjtJQUVoRjs7T0FFRztJQUNLLG1CQUFtQjtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDOUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTthQUN6QyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFsTUgsMENBbU1DOzs7QUFsTUM7SUFDRSw4QkFBYSxDQUFDLGVBQWUsQ0FDM0Isa0RBQXNCLEVBQ3RCLDBEQUE4QixDQUMvQixDQUFDO0FBQ0osQ0FBQyxHQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF6dXJlIFB1YmxpYyBJUCBBZGRyZXNzIGltcGxlbWVudGF0aW9uIHVzaW5nIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHVuaWZpZWQgaW1wbGVtZW50YXRpb24gZm9yIEF6dXJlIFB1YmxpYyBJUCBBZGRyZXNzZXMgdGhhdFxuICogYXV0b21hdGljYWxseSBoYW5kbGVzIHZlcnNpb24gbWFuYWdlbWVudCwgc2NoZW1hIHZhbGlkYXRpb24sIGFuZCBwcm9wZXJ0eVxuICogdHJhbnNmb3JtYXRpb24gYWNyb3NzIGFsbCBzdXBwb3J0ZWQgQVBJIHZlcnNpb25zLlxuICpcbiAqIFN1cHBvcnRlZCBBUEkgVmVyc2lvbnM6XG4gKiAtIDIwMjQtMDctMDEgKEFjdGl2ZSlcbiAqIC0gMjAyNC0xMC0wMSAoQWN0aXZlKVxuICogLSAyMDI1LTAxLTAxIChBY3RpdmUsIExhdGVzdClcbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gQXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb24gd2hlbiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICogLSBFeHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcgZm9yIHN0YWJpbGl0eSByZXF1aXJlbWVudHNcbiAqIC0gU2NoZW1hLWRyaXZlbiB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvblxuICogLSBGdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAqIC0gSlNJSSBjb21wbGlhbmNlIGZvciBtdWx0aS1sYW5ndWFnZSBzdXBwb3J0XG4gKi9cblxuaW1wb3J0ICogYXMgY2RrdG4gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQUxMX1BVQkxJQ19JUF9BRERSRVNTX1ZFUlNJT05TLFxuICBQVUJMSUNfSVBfQUREUkVTU19UWVBFLFxufSBmcm9tIFwiLi9wdWJsaWMtaXAtYWRkcmVzcy1zY2hlbWFzXCI7XG5pbXBvcnQge1xuICBBemFwaVJlc291cmNlLFxuICBBemFwaVJlc291cmNlUHJvcHMsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9hemFwaS1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vKipcbiAqIFNLVSBjb25maWd1cmF0aW9uIGZvciBQdWJsaWMgSVAgQWRkcmVzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0lQQWRkcmVzc1NrdSB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBTS1VcbiAgICogQGV4YW1wbGUgXCJCYXNpY1wiLCBcIlN0YW5kYXJkXCJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGllciBvZiB0aGUgU0tVXG4gICAqIEBleGFtcGxlIFwiUmVnaW9uYWxcIiwgXCJHbG9iYWxcIlxuICAgKi9cbiAgcmVhZG9ubHkgdGllcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBETlMgc2V0dGluZ3MgY29uZmlndXJhdGlvbiBmb3IgUHVibGljIElQIEFkZHJlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNJUEFkZHJlc3NEbnNTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWUgbGFiZWxcbiAgICogVGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIGRvbWFpbiBuYW1lIGxhYmVsIGFuZCByZWdpb25hbGl6ZWQgRE5TIHpvbmVcbiAgICogbWFrZSB1cCB0aGUgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChGUUROKSBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpYyBJUFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZUxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRnVsbHkgUXVhbGlmaWVkIERvbWFpbiBOYW1lXG4gICAqIFRoaXMgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIGRvbWFpbk5hbWVMYWJlbCBhbmQgdGhlIHJlZ2lvbmFsaXplZCBETlMgem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZnFkbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJldmVyc2UgRlFETlxuICAgKiBBIHVzZXItdmlzaWJsZSwgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIHRoYXQgcmVzb2x2ZXMgdG8gdGhpcyBwdWJsaWMgSVAgYWRkcmVzc1xuICAgKi9cbiAgcmVhZG9ubHkgcmV2ZXJzZUZxZG4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIEF6dXJlIFB1YmxpYyBJUCBBZGRyZXNzXG4gKlxuICogRXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMgd2l0aCBQdWJsaWMgSVAgQWRkcmVzcyBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljSVBBZGRyZXNzUHJvcHMgZXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogU0tVIG9mIHRoZSBwdWJsaWMgSVAgYWRkcmVzc1xuICAgKiBTdGFuZGFyZCBTS1Ugc3VwcG9ydHMgem9uZXMgYW5kIGhhcyBTTEEgZ3VhcmFudGVlc1xuICAgKiBCYXNpYyBTS1UgZG9lcyBub3Qgc3VwcG9ydCB6b25lc1xuICAgKi9cbiAgcmVhZG9ubHkgc2t1PzogUHVibGljSVBBZGRyZXNzU2t1O1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgSVAgYWxsb2NhdGlvbiBtZXRob2RcbiAgICogLSBTdGF0aWM6IElQIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGltbWVkaWF0ZWx5IGFuZCBkb2Vzbid0IGNoYW5nZVxuICAgKiAtIER5bmFtaWM6IElQIGFkZHJlc3MgaXMgYWxsb2NhdGVkIHdoZW4gYXNzb2NpYXRlZCB3aXRoIGEgcmVzb3VyY2VcbiAgICogTm90ZTogU3RhbmRhcmQgU0tVIHJlcXVpcmVzIFN0YXRpYyBhbGxvY2F0aW9uXG4gICAqIEBkZWZhdWx0VmFsdWUgXCJEeW5hbWljXCJcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZD86IHN0cmluZztcblxuICAvKipcbiAgICogUHVibGljIElQIGFkZHJlc3MgdmVyc2lvblxuICAgKiBAZGVmYXVsdFZhbHVlIFwiSVB2NFwiXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNJUEFkZHJlc3NWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBETlMgc2V0dGluZ3MgZm9yIHRoZSBwdWJsaWMgSVAgYWRkcmVzc1xuICAgKiBPcHRpb25hbCAtIGNvbmZpZ3VyZXMgRE5TIGxhYmVsIGZvciB0aGUgcHVibGljIElQXG4gICAqL1xuICByZWFkb25seSBkbnNTZXR0aW5ncz86IFB1YmxpY0lQQWRkcmVzc0Ruc1NldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBJZGxlIHRpbWVvdXQgaW4gbWludXRlc1xuICAgKiBWYWxpZCByYW5nZTogNC0zMCBtaW51dGVzXG4gICAqIEBkZWZhdWx0VmFsdWUgNFxuICAgKi9cbiAgcmVhZG9ubHkgaWRsZVRpbWVvdXRJbk1pbnV0ZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF2YWlsYWJpbGl0eSB6b25lcyBmb3IgdGhlIHB1YmxpYyBJUCBhZGRyZXNzXG4gICAqIE9ubHkgc3VwcG9ydGVkIHdpdGggU3RhbmRhcmQgU0tVXG4gICAqIEBleGFtcGxlIFtcIjFcIl0sIFtcIjJcIl0sIFtcIjNcIl0sIFtcIjFcIiwgXCIyXCIsIFwiM1wiXVxuICAgKi9cbiAgcmVhZG9ubHkgem9uZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVzb3VyY2UgZ3JvdXAgSUQgd2hlcmUgdGhlIFB1YmxpYyBJUCB3aWxsIGJlIGNyZWF0ZWRcbiAgICogT3B0aW9uYWwgLSB3aWxsIHVzZSB0aGUgc3Vic2NyaXB0aW9uIHNjb3BlIGlmIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGlnbm9yZSBjaGFuZ2VzXG4gICAqIFVzZWZ1bCBmb3IgcHJvcGVydGllcyB0aGF0IGFyZSBleHRlcm5hbGx5IG1hbmFnZWRcbiAgICpcbiAgICogQGV4YW1wbGUgW1widGFnc1wiXVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ2hhbmdlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEF6dXJlIFB1YmxpYyBJUCBBZGRyZXNzIGltcGxlbWVudGF0aW9uXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbmdsZSwgdmVyc2lvbi1hd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHJlcGxhY2VzXG4gKiB2ZXJzaW9uLXNwZWNpZmljIFB1YmxpYyBJUCBBZGRyZXNzIGNsYXNzZXMuIEl0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uXG4gKiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlIG1haW50YWluaW5nXG4gKiBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbiAoU3RhbmRhcmQgU3RhdGljIElQKTpcbiAqIGNvbnN0IHB1YmxpY0lwID0gbmV3IFB1YmxpY0lQQWRkcmVzcyh0aGlzLCBcInB1YmxpY0lwXCIsIHtcbiAqICAgbmFtZTogXCJteS1wdWJsaWMtaXBcIixcbiAqICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gKiAgIHNrdToge1xuICogICAgIG5hbWU6IFwiU3RhbmRhcmRcIixcbiAqICAgICB0aWVyOiBcIlJlZ2lvbmFsXCJcbiAqICAgfSxcbiAqICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOiBcIlN0YXRpY1wiXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgRHluYW1pYyBJUDpcbiAqIGNvbnN0IHB1YmxpY0lwID0gbmV3IFB1YmxpY0lQQWRkcmVzcyh0aGlzLCBcInB1YmxpY0lwXCIsIHtcbiAqICAgbmFtZTogXCJteS1wdWJsaWMtaXBcIixcbiAqICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gKiAgIHNrdToge1xuICogICAgIG5hbWU6IFwiQmFzaWNcIlxuICogICB9LFxuICogICBwdWJsaWNJUEFsbG9jYXRpb25NZXRob2Q6IFwiRHluYW1pY1wiXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUHVibGljIElQIHdpdGggRE5TIGxhYmVsOlxuICogY29uc3QgcHVibGljSXAgPSBuZXcgUHVibGljSVBBZGRyZXNzKHRoaXMsIFwicHVibGljSXBcIiwge1xuICogICBuYW1lOiBcIm15LXB1YmxpYy1pcFwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgc2t1OiB7XG4gKiAgICAgbmFtZTogXCJTdGFuZGFyZFwiXG4gKiAgIH0sXG4gKiAgIHB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZDogXCJTdGF0aWNcIixcbiAqICAgZG5zU2V0dGluZ3M6IHtcbiAqICAgICBkb21haW5OYW1lTGFiZWw6IFwibXlhcHBcIlxuICogICB9XG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gWm9uYWwgUHVibGljIElQOlxuICogY29uc3QgcHVibGljSXAgPSBuZXcgUHVibGljSVBBZGRyZXNzKHRoaXMsIFwicHVibGljSXBcIiwge1xuICogICBuYW1lOiBcIm15LXB1YmxpYy1pcFwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgc2t1OiB7XG4gKiAgICAgbmFtZTogXCJTdGFuZGFyZFwiXG4gKiAgIH0sXG4gKiAgIHB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZDogXCJTdGF0aWNcIixcbiAqICAgem9uZXM6IFtcIjFcIl1cbiAqIH0pO1xuICpcbiAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaWNJUEFkZHJlc3MgZXh0ZW5kcyBBemFwaVJlc291cmNlIHtcbiAgc3RhdGljIHtcbiAgICBBemFwaVJlc291cmNlLnJlZ2lzdGVyU2NoZW1hcyhcbiAgICAgIFBVQkxJQ19JUF9BRERSRVNTX1RZUEUsXG4gICAgICBBTExfUFVCTElDX0lQX0FERFJFU1NfVkVSU0lPTlMsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgcHJvcGVydGllcyBmb3IgdGhpcyBQdWJsaWMgSVAgQWRkcmVzcyBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBQdWJsaWNJUEFkZHJlc3NQcm9wcztcblxuICAvLyBPdXRwdXQgcHJvcGVydGllcyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nXG4gIHB1YmxpYyByZWFkb25seSBpZE91dHB1dDogY2RrdG4uVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZU91dHB1dDogY2RrdG4uVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYXRpb25PdXRwdXQ6IGNka3RuLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IHRhZ3NPdXRwdXQ6IGNka3RuLlRlcnJhZm9ybU91dHB1dDtcblxuICAvLyBQdWJsaWMgcHJvcGVydGllcyB0aGF0IG1hdGNoIHRoZSBvcmlnaW5hbCBQdWJsaWNJUEFkZHJlc3MgaW50ZXJmYWNlXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgUHVibGljIElQIEFkZHJlc3MgdXNpbmcgdGhlIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gICAqXG4gICAqIFRoZSBjb25zdHJ1Y3RvciBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvbiByZXNvbHV0aW9uLCBzY2hlbWEgcmVnaXN0cmF0aW9uLFxuICAgKiB2YWxpZGF0aW9uLCBhbmQgcmVzb3VyY2UgY3JlYXRpb24uIEl0IG1haW50YWlucyBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICogd2l0aCBleGlzdGluZyBQdWJsaWMgSVAgQWRkcmVzcyBpbXBsZW1lbnRhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIFB1YmxpYyBJUCBBZGRyZXNzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGljSVBBZGRyZXNzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIC8vIEV4dHJhY3QgcHJvcGVydGllcyBmcm9tIHRoZSBBWkFQSSByZXNvdXJjZSBvdXRwdXRzIHVzaW5nIFRlcnJhZm9ybSBpbnRlcnBvbGF0aW9uXG5cbiAgICAvLyBDcmVhdGUgVGVycmFmb3JtIG91dHB1dHMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZyBmcm9tIG90aGVyIHJlc291cmNlc1xuICAgIHRoaXMuaWRPdXRwdXQgPSBuZXcgY2RrdG4uVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwiaWRcIiwge1xuICAgICAgdmFsdWU6IHRoaXMuaWQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgSUQgb2YgdGhlIFB1YmxpYyBJUCBBZGRyZXNzXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVPdXRwdXQgPSBuZXcgY2RrdG4uVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5uYW1lfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbmFtZSBvZiB0aGUgUHVibGljIElQIEFkZHJlc3NcIixcbiAgICB9KTtcblxuICAgIHRoaXMubG9jYXRpb25PdXRwdXQgPSBuZXcgY2RrdG4uVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibG9jYXRpb25cIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubG9jYXRpb259YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBsb2NhdGlvbiBvZiB0aGUgUHVibGljIElQIEFkZHJlc3NcIixcbiAgICB9KTtcblxuICAgIHRoaXMudGFnc091dHB1dCA9IG5ldyBjZGt0bi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJ0YWdzXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LnRhZ3N9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSB0YWdzIGFzc2lnbmVkIHRvIHRoZSBQdWJsaWMgSVAgQWRkcmVzc1wiLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHMgdG8gbWF0Y2ggb3JpZ2luYWwgbmFtaW5nIGNvbnZlbnRpb25cbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5uYW1lT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibmFtZVwiKTtcbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibG9jYXRpb25cIik7XG4gICAgdGhpcy50YWdzT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwidGFnc1wiKTtcblxuICAgIC8vIEFwcGx5IGlnbm9yZSBjaGFuZ2VzIGlmIHNwZWNpZmllZFxuICAgIHRoaXMuX2FwcGx5SWdub3JlQ2hhbmdlcygpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUkVRVUlSRUQgQUJTVFJBQ1QgTUVUSE9EUyBGUk9NIFZlcnNpb25lZEF6YXBpUmVzb3VyY2VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGVmYXVsdCBBUEkgdmVyc2lvbiB0byB1c2Ugd2hlbiBubyBleHBsaWNpdCB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICAgKiBSZXR1cm5zIHRoZSBtb3N0IHJlY2VudCBzdGFibGUgdmVyc2lvbiBhcyB0aGUgZGVmYXVsdFxuICAgKi9cbiAgcHJvdGVjdGVkIGRlZmF1bHRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiMjAyNC0xMC0wMVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEF6dXJlIHJlc291cmNlIHR5cGUgZm9yIFB1YmxpYyBJUCBBZGRyZXNzZXNcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUFVCTElDX0lQX0FERFJFU1NfVFlQRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBUEkgc2NoZW1hIGZvciB0aGUgcmVzb2x2ZWQgdmVyc2lvblxuICAgKiBVc2VzIHRoZSBmcmFtZXdvcmsncyBzY2hlbWEgcmVzb2x1dGlvbiB0byBnZXQgdGhlIGFwcHJvcHJpYXRlIHNjaGVtYVxuICAgKi9cbiAgcHJvdGVjdGVkIGFwaVNjaGVtYSgpOiBBcGlTY2hlbWEge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVTY2hlbWEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBsb2NhdGlvbiBpcyByZXF1aXJlZCBmb3IgUHVibGljIElQIEFkZHJlc3Nlc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlcXVpcmVzTG9jYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgcmVzb3VyY2UgYm9keSBmb3IgdGhlIEF6dXJlIEFQSSBjYWxsXG4gICAqIFRyYW5zZm9ybXMgdGhlIGlucHV0IHByb3BlcnRpZXMgaW50byB0aGUgSlNPTiBmb3JtYXQgZXhwZWN0ZWQgYnkgQXp1cmUgUkVTVCBBUElcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZUJvZHkocHJvcHM6IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHlwZWRQcm9wcyA9IHByb3BzIGFzIFB1YmxpY0lQQWRkcmVzc1Byb3BzO1xuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbixcbiAgICAgIHRhZ3M6IHRoaXMuYWxsVGFncygpLFxuICAgICAgc2t1OiB0eXBlZFByb3BzLnNrdSxcbiAgICAgIHpvbmVzOiB0eXBlZFByb3BzLnpvbmVzLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBwdWJsaWNJUEFsbG9jYXRpb25NZXRob2Q6XG4gICAgICAgICAgdHlwZWRQcm9wcy5wdWJsaWNJUEFsbG9jYXRpb25NZXRob2QgfHwgXCJEeW5hbWljXCIsXG4gICAgICAgIHB1YmxpY0lQQWRkcmVzc1ZlcnNpb246IHR5cGVkUHJvcHMucHVibGljSVBBZGRyZXNzVmVyc2lvbiB8fCBcIklQdjRcIixcbiAgICAgICAgZG5zU2V0dGluZ3M6IHR5cGVkUHJvcHMuZG5zU2V0dGluZ3MsXG4gICAgICAgIGlkbGVUaW1lb3V0SW5NaW51dGVzOiB0eXBlZFByb3BzLmlkbGVUaW1lb3V0SW5NaW51dGVzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFVCTElDIE1FVEhPRFMgRk9SIFBVQkxJQyBJUCBBRERSRVNTIE9QRVJBVElPTlNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdWJzY3JpcHRpb24gSUQgZnJvbSB0aGUgUHVibGljIElQIEFkZHJlc3MgSURcbiAgICogRXh0cmFjdHMgdGhlIHN1YnNjcmlwdGlvbiBJRCBmcm9tIHRoZSBBenVyZSByZXNvdXJjZSBJRCBmb3JtYXRcbiAgICovXG4gIHB1YmxpYyBnZXQgc3Vic2NyaXB0aW9uSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBpZFBhcnRzID0gdGhpcy5pZC5zcGxpdChcIi9cIik7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uSW5kZXggPSBpZFBhcnRzLmluZGV4T2YoXCJzdWJzY3JpcHRpb25zXCIpO1xuICAgIGlmIChzdWJzY3JpcHRpb25JbmRleCAhPT0gLTEgJiYgc3Vic2NyaXB0aW9uSW5kZXggKyAxIDwgaWRQYXJ0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBpZFBhcnRzW3N1YnNjcmlwdGlvbkluZGV4ICsgMV07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiVW5hYmxlIHRvIGV4dHJhY3Qgc3Vic2NyaXB0aW9uIElEIGZyb20gUHVibGljIElQIEFkZHJlc3MgSURcIixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCByZXNvdXJjZSBpZGVudGlmaWVyIGZvciB1c2UgaW4gb3RoZXIgQXp1cmUgcmVzb3VyY2VzXG4gICAqIEFsaWFzIGZvciB0aGUgaWQgcHJvcGVydHkgdG8gbWF0Y2ggb3JpZ2luYWwgaW50ZXJmYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHJlc291cmNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIElQIGFkZHJlc3Mgb3V0cHV0IHZhbHVlXG4gICAqIFJldHVybnMgdGhlIFRlcnJhZm9ybSBpbnRlcnBvbGF0aW9uIHN0cmluZyBmb3IgdGhlIElQIGFkZHJlc3NcbiAgICovXG4gIHB1YmxpYyBnZXQgaXBBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMuaXBBZGRyZXNzfWA7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGFnIHRvIHRoZSBQdWJsaWMgSVAgQWRkcmVzc1xuICAgKiBOb3RlOiBUaGlzIG1vZGlmaWVzIHRoZSBjb25zdHJ1Y3QgcHJvcHMgYnV0IHJlcXVpcmVzIGEgbmV3IGRlcGxveW1lbnQgdG8gdGFrZSBlZmZlY3RcbiAgICovXG4gIHB1YmxpYyBhZGRUYWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudGFncykge1xuICAgICAgKHRoaXMucHJvcHMgYXMgYW55KS50YWdzID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvcHMudGFncyFba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRhZyBmcm9tIHRoZSBQdWJsaWMgSVAgQWRkcmVzc1xuICAgKiBOb3RlOiBUaGlzIG1vZGlmaWVzIHRoZSBjb25zdHJ1Y3QgcHJvcHMgYnV0IHJlcXVpcmVzIGEgbmV3IGRlcGxveW1lbnQgdG8gdGFrZSBlZmZlY3RcbiAgICovXG4gIHB1YmxpYyByZW1vdmVUYWcoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy50YWdzICYmIHRoaXMucHJvcHMudGFnc1trZXldKSB7XG4gICAgICBkZWxldGUgdGhpcy5wcm9wcy50YWdzW2tleV07XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJJVkFURSBIRUxQRVIgTUVUSE9EU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlcyBpZiBzcGVjaWZpZWQgaW4gcHJvcHNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5SWdub3JlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzICYmIHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmFkZE92ZXJyaWRlKFwibGlmZWN5Y2xlXCIsIHtcbiAgICAgICAgaWdub3JlX2NoYW5nZXM6IHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
* Run with: npm run integration:nostream
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
const
|
|
12
|
-
require("
|
|
11
|
+
const cdktn_1 = require("cdktn");
|
|
12
|
+
require("cdktn/lib/testing/adapters/jest");
|
|
13
13
|
const azure_resourcegroup_1 = require("../../azure-resourcegroup");
|
|
14
14
|
const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
|
|
15
15
|
const testing_1 = require("../../testing");
|
|
@@ -17,7 +17,7 @@ const public_ip_address_1 = require("../lib/public-ip-address");
|
|
|
17
17
|
/**
|
|
18
18
|
* Example stack demonstrating Public IP Address usage
|
|
19
19
|
*/
|
|
20
|
-
class PublicIPAddressExampleStack extends
|
|
20
|
+
class PublicIPAddressExampleStack extends cdktn_1.TerraformStack {
|
|
21
21
|
constructor(scope, id) {
|
|
22
22
|
super(scope, id);
|
|
23
23
|
// Configure AZAPI provider
|
|
@@ -62,9 +62,9 @@ class PublicIPAddressExampleStack extends cdktf_1.TerraformStack {
|
|
|
62
62
|
}
|
|
63
63
|
describe("Public IP Address Integration Test", () => {
|
|
64
64
|
it("should deploy, validate idempotency, and cleanup public IP address resources", () => {
|
|
65
|
-
const app =
|
|
65
|
+
const app = cdktn_1.Testing.app();
|
|
66
66
|
const stack = new PublicIPAddressExampleStack(app, "test-public-ip-address");
|
|
67
|
-
const synthesized =
|
|
67
|
+
const synthesized = cdktn_1.Testing.fullSynth(stack);
|
|
68
68
|
// This will:
|
|
69
69
|
// 1. Run terraform apply to deploy resources
|
|
70
70
|
// 2. Run terraform plan to check idempotency (no changes expected)
|
|
@@ -72,4 +72,4 @@ describe("Public IP Address Integration Test", () => {
|
|
|
72
72
|
(0, testing_1.TerraformApplyCheckAndDestroy)(synthesized);
|
|
73
73
|
}, 600000); // 10 minute timeout for deployment and cleanup
|
|
74
74
|
});
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWlwLWFkZHJlc3MuaW50ZWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcHVibGljaXBhZGRyZXNzL3Rlc3QvcHVibGljLWlwLWFkZHJlc3MuaW50ZWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7O0FBRUgsaUNBQWdEO0FBRWhELDJDQUF5QztBQUN6QyxtRUFBMEQ7QUFDMUQsa0ZBQW9GO0FBQ3BGLDJDQUE4RDtBQUM5RCxnRUFBMkQ7QUFFM0Q7O0dBRUc7QUFDSCxNQUFNLDJCQUE0QixTQUFRLHNCQUFjO0lBQ3RELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMkJBQTJCO1FBQzNCLElBQUksd0JBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLDBCQUEwQjtRQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJLG1DQUFhLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUMxRCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRTtnQkFDSixXQUFXLEVBQUUsU0FBUztnQkFDdEIsT0FBTyxFQUFFLGtCQUFrQjthQUM1QjtTQUNGLENBQUMsQ0FBQztRQUVILDZDQUE2QztRQUM3QyxJQUFJLG1DQUFlLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQzNDLElBQUksRUFBRSxtQkFBbUI7WUFDekIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUztZQUN2QyxlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsR0FBRyxFQUFFO2dCQUNILElBQUksRUFBRSxVQUFVO2FBQ2pCO1lBQ0Qsd0JBQXdCLEVBQUUsUUFBUTtZQUNsQyxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLE9BQU87YUFDakI7U0FDRixDQUFDLENBQUM7UUFFSCw2Q0FBNkM7UUFDN0MsSUFBSSxtQ0FBZSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUMvQyxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVM7WUFDdkMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ2pDLEdBQUcsRUFBRTtnQkFDSCxJQUFJLEVBQUUsVUFBVTthQUNqQjtZQUNELHdCQUF3QixFQUFFLFFBQVE7WUFDbEMsVUFBVSxFQUFFLFlBQVk7WUFDeEIsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxXQUFXO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtJQUNsRCxFQUFFLENBQUMsOEVBQThFLEVBQUUsR0FBRyxFQUFFO1FBQ3RGLE1BQU0sR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLDJCQUEyQixDQUMzQyxHQUFHLEVBQ0gsd0JBQXdCLENBQ3pCLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLGFBQWE7UUFDYiw2Q0FBNkM7UUFDN0MsbUVBQW1FO1FBQ25FLGdEQUFnRDtRQUNoRCxJQUFBLHVDQUE2QixFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLCtDQUErQztBQUM3RCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCBmb3IgQXp1cmUgUHVibGljIElQIEFkZHJlc3NcbiAqXG4gKiBUaGlzIHRlc3QgZGVtb25zdHJhdGVzIGJhc2ljIHVzYWdlIG9mIHRoZSBQdWJsaWNJUEFkZHJlc3MgY29uc3RydWN0XG4gKiBhbmQgdmFsaWRhdGVzIGRlcGxveW1lbnQsIGlkZW1wb3RlbmN5LCBhbmQgY2xlYW51cC5cbiAqXG4gKiBSdW4gd2l0aDogbnBtIHJ1biBpbnRlZ3JhdGlvbjpub3N0cmVhbVxuICovXG5cbmltcG9ydCB7IFRlc3RpbmcsIFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IFwiY2RrdG4vbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCIuLi8uLi9henVyZS1yZXNvdXJjZWdyb3VwXCI7XG5pbXBvcnQgeyBBemFwaVByb3ZpZGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL3Byb3ZpZGVycy1hemFwaS9wcm92aWRlclwiO1xuaW1wb3J0IHsgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3kgfSBmcm9tIFwiLi4vLi4vdGVzdGluZ1wiO1xuaW1wb3J0IHsgUHVibGljSVBBZGRyZXNzIH0gZnJvbSBcIi4uL2xpYi9wdWJsaWMtaXAtYWRkcmVzc1wiO1xuXG4vKipcbiAqIEV4YW1wbGUgc3RhY2sgZGVtb25zdHJhdGluZyBQdWJsaWMgSVAgQWRkcmVzcyB1c2FnZVxuICovXG5jbGFzcyBQdWJsaWNJUEFkZHJlc3NFeGFtcGxlU3RhY2sgZXh0ZW5kcyBUZXJyYWZvcm1TdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gQ29uZmlndXJlIEFaQVBJIHByb3ZpZGVyXG4gICAgbmV3IEF6YXBpUHJvdmlkZXIodGhpcywgXCJhemFwaVwiLCB7fSk7XG5cbiAgICAvLyBDcmVhdGUgYSByZXNvdXJjZSBncm91cFxuICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcImV4YW1wbGUtcmdcIiwge1xuICAgICAgbmFtZTogXCJwdWJsaWNpcC1leGFtcGxlLXJnXCIsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgZW52aXJvbm1lbnQ6IFwiZXhhbXBsZVwiLFxuICAgICAgICBwdXJwb3NlOiBcImludGVncmF0aW9uLXRlc3RcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBFeGFtcGxlIDE6IEJhc2ljIFN0YW5kYXJkIFN0YXRpYyBQdWJsaWMgSVBcbiAgICBuZXcgUHVibGljSVBBZGRyZXNzKHRoaXMsIFwiYmFzaWMtcHVibGljLWlwXCIsIHtcbiAgICAgIG5hbWU6IFwicGlwLWJhc2ljLWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiByZXNvdXJjZUdyb3VwLnByb3BzLmxvY2F0aW9uISxcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHNrdToge1xuICAgICAgICBuYW1lOiBcIlN0YW5kYXJkXCIsXG4gICAgICB9LFxuICAgICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOiBcIlN0YXRpY1wiLFxuICAgICAgdGFnczoge1xuICAgICAgICBleGFtcGxlOiBcImJhc2ljXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gRXhhbXBsZSAyOiBQdWJsaWMgSVAgd2l0aCBzcGVjaWZpYyB2ZXJzaW9uXG4gICAgbmV3IFB1YmxpY0lQQWRkcmVzcyh0aGlzLCBcInZlcnNpb25lZC1wdWJsaWMtaXBcIiwge1xuICAgICAgbmFtZTogXCJwaXAtdmVyc2lvbmVkLWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiByZXNvdXJjZUdyb3VwLnByb3BzLmxvY2F0aW9uISxcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHNrdToge1xuICAgICAgICBuYW1lOiBcIlN0YW5kYXJkXCIsXG4gICAgICB9LFxuICAgICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOiBcIlN0YXRpY1wiLFxuICAgICAgYXBpVmVyc2lvbjogXCIyMDI0LTA3LTAxXCIsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIGV4YW1wbGU6IFwidmVyc2lvbmVkXCIsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmRlc2NyaWJlKFwiUHVibGljIElQIEFkZHJlc3MgSW50ZWdyYXRpb24gVGVzdFwiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIGRlcGxveSwgdmFsaWRhdGUgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwIHB1YmxpYyBJUCBhZGRyZXNzIHJlc291cmNlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBQdWJsaWNJUEFkZHJlc3NFeGFtcGxlU3RhY2soXG4gICAgICBhcHAsXG4gICAgICBcInRlc3QtcHVibGljLWlwLWFkZHJlc3NcIixcbiAgICApO1xuICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5mdWxsU3ludGgoc3RhY2spO1xuXG4gICAgLy8gVGhpcyB3aWxsOlxuICAgIC8vIDEuIFJ1biB0ZXJyYWZvcm0gYXBwbHkgdG8gZGVwbG95IHJlc291cmNlc1xuICAgIC8vIDIuIFJ1biB0ZXJyYWZvcm0gcGxhbiB0byBjaGVjayBpZGVtcG90ZW5jeSAobm8gY2hhbmdlcyBleHBlY3RlZClcbiAgICAvLyAzLiBSdW4gdGVycmFmb3JtIGRlc3Ryb3kgdG8gY2xlYW51cCByZXNvdXJjZXNcbiAgICBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveShzeW50aGVzaXplZCk7XG4gIH0sIDYwMDAwMCk7IC8vIDEwIG1pbnV0ZSB0aW1lb3V0IGZvciBkZXBsb3ltZW50IGFuZCBjbGVhbnVwXG59KTtcbiJdfQ==
|