@drunk-pulumi/azure-components 1.0.5 → 1.1.2
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/aks/AzKubernetes.d.ts +8 -0
- package/aks/AzKubernetes.js +32 -11
- package/aks/helpers.d.ts +12 -0
- package/aks/helpers.js +51 -2
- package/azAd/AppRegistration.d.ts +6 -2
- package/azAd/AppRegistration.js +10 -2
- package/base/BaseComponent.d.ts +1 -1
- package/base/BaseResourceComponent.d.ts +13 -1
- package/base/BaseResourceComponent.js +19 -1
- package/package.json +3 -3
- package/vnet/FirewallPolicies/commonPolicies.d.ts +1 -1
- package/vnet/FirewallPolicies/commonPolicies.js +66 -26
package/aks/AzKubernetes.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import * as pulumi from '@pulumi/pulumi';
|
|
|
4
4
|
import * as types from '../types';
|
|
5
5
|
import { AppRegistration } from '../azAd';
|
|
6
6
|
import { BaseResourceComponent, CommonBaseArgs } from '../base';
|
|
7
|
+
import { ArgoCDExtensionArgs } from './helpers';
|
|
7
8
|
type AgentPoolProfile = inputs.containerservice.ManagedClusterAgentPoolProfileArgs & {
|
|
8
9
|
vmSize: pulumi.Input<string>;
|
|
9
10
|
vnetSubnetID: pulumi.Input<string>;
|
|
@@ -29,12 +30,16 @@ export interface AzKubernetesArgs extends CommonBaseArgs, types.WithEncryptionEn
|
|
|
29
30
|
agentPoolProfiles: AgentPoolProfile[];
|
|
30
31
|
extraAgentPoolProfiles?: AgentPoolProfile[];
|
|
31
32
|
attachToAcr?: types.ResourceInputs;
|
|
33
|
+
extensions?: {
|
|
34
|
+
argoCd?: Omit<ArgoCDExtensionArgs, 'aks' | 'groupRoles' | 'identity' | 'rsGroup'>;
|
|
35
|
+
};
|
|
32
36
|
features: {
|
|
33
37
|
enablePrivateCluster: boolean;
|
|
34
38
|
enablePrivateClusterPublicFQDN?: boolean;
|
|
35
39
|
enableVerticalPodAutoscaler?: boolean;
|
|
36
40
|
/** KEDA (Kubernetes Event-driven Autoscaling) settings for the workload auto-scaler profile. */
|
|
37
41
|
enableKeda?: boolean;
|
|
42
|
+
/** Enable workload identity and OIDC issuer for the AKS cluster */
|
|
38
43
|
enableWorkloadIdentity?: boolean;
|
|
39
44
|
enablePodIdentity?: boolean;
|
|
40
45
|
enableAzurePolicy?: boolean;
|
|
@@ -66,6 +71,7 @@ export declare class AzKubernetes extends BaseResourceComponent<AzKubernetesArgs
|
|
|
66
71
|
readonly keyVaultSecretProviderIdentity?: types.IdentityOutputs;
|
|
67
72
|
readonly kubeletIdentity?: types.IdentityOutputs;
|
|
68
73
|
readonly systemIdentityId?: pulumi.Output<string>;
|
|
74
|
+
readonly oidcIssuerUrl?: pulumi.Output<string>;
|
|
69
75
|
constructor(name: string, args: AzKubernetesArgs, opts?: pulumi.ComponentResourceOptions);
|
|
70
76
|
getOutputs(): {
|
|
71
77
|
id: pulumi.Output<string>;
|
|
@@ -84,6 +90,7 @@ export declare class AzKubernetes extends BaseResourceComponent<AzKubernetesArgs
|
|
|
84
90
|
keyVaultSecretProviderIdentity: types.AsOutput<types.IdentityType> | undefined;
|
|
85
91
|
kubeletIdentity: types.AsOutput<types.IdentityType> | undefined;
|
|
86
92
|
systemIdentityId: pulumi.Output<string> | undefined;
|
|
93
|
+
oidcIssuerUrl: pulumi.Output<string> | undefined;
|
|
87
94
|
};
|
|
88
95
|
private createIdentity;
|
|
89
96
|
private createUserNameAndSshKeys;
|
|
@@ -92,6 +99,7 @@ export declare class AzKubernetes extends BaseResourceComponent<AzKubernetesArgs
|
|
|
92
99
|
private createExtraAgentPoolProfiles;
|
|
93
100
|
private createNameSpaces;
|
|
94
101
|
private createMaintenance;
|
|
102
|
+
private createExtensions;
|
|
95
103
|
private getExtraAksOutputs;
|
|
96
104
|
private assignPermission;
|
|
97
105
|
private getPrivateDNSZone;
|
package/aks/AzKubernetes.js
CHANGED
|
@@ -75,12 +75,14 @@ class AzKubernetes extends base_1.BaseResourceComponent {
|
|
|
75
75
|
keyVaultSecretProviderIdentity;
|
|
76
76
|
kubeletIdentity;
|
|
77
77
|
systemIdentityId;
|
|
78
|
+
oidcIssuerUrl;
|
|
78
79
|
constructor(name, args, opts) {
|
|
79
80
|
super('AzKubernetes', name, args, opts);
|
|
80
81
|
const app = this.createIdentity();
|
|
81
82
|
const cluster = this.createCluster(app);
|
|
82
83
|
this.createExtraAgentPoolProfiles(cluster);
|
|
83
84
|
this.createMaintenance(cluster);
|
|
85
|
+
this.createExtensions(cluster, app);
|
|
84
86
|
const nss = this.createNameSpaces(cluster);
|
|
85
87
|
this.namespaces = helpers_1.rsHelpers.dictReduce(nss, (n, ns) => ({
|
|
86
88
|
id: ns.id,
|
|
@@ -101,6 +103,9 @@ class AzKubernetes extends base_1.BaseResourceComponent {
|
|
|
101
103
|
}))
|
|
102
104
|
: undefined;
|
|
103
105
|
this.kubeletIdentity = this.getExtraAksOutputs(cluster);
|
|
106
|
+
this.oidcIssuerUrl = args.features?.enableWorkloadIdentity
|
|
107
|
+
? cluster.oidcIssuerProfile.apply((o) => o?.issuerURL)
|
|
108
|
+
: undefined;
|
|
104
109
|
this.assignPermission(cluster);
|
|
105
110
|
this.registerOutputs();
|
|
106
111
|
}
|
|
@@ -115,13 +120,18 @@ class AzKubernetes extends base_1.BaseResourceComponent {
|
|
|
115
120
|
keyVaultSecretProviderIdentity: this.keyVaultSecretProviderIdentity,
|
|
116
121
|
kubeletIdentity: this.kubeletIdentity,
|
|
117
122
|
systemIdentityId: this.systemIdentityId,
|
|
123
|
+
oidcIssuerUrl: this.oidcIssuerUrl,
|
|
118
124
|
};
|
|
119
125
|
}
|
|
120
126
|
createIdentity() {
|
|
121
127
|
const { rsGroup, vaultInfo, groupRoles } = this.args;
|
|
122
128
|
return new azAd_1.AppRegistration(`${this.name}-identity`, {
|
|
123
129
|
vaultInfo,
|
|
124
|
-
memberof: groupRoles ? [groupRoles.readOnly] : undefined,
|
|
130
|
+
//memberof: groupRoles ? [groupRoles.readOnly] : undefined,
|
|
131
|
+
servicePrincipal: {
|
|
132
|
+
appRoleAssignmentRequired: true,
|
|
133
|
+
assignedGroupIds: groupRoles ? [groupRoles.readOnly.objectId] : undefined,
|
|
134
|
+
},
|
|
125
135
|
roleAssignments: [
|
|
126
136
|
{
|
|
127
137
|
scope: helpers_1.rsHelpers.getRsGroupIdFrom(rsGroup),
|
|
@@ -368,6 +378,18 @@ class AzKubernetes extends base_1.BaseResourceComponent {
|
|
|
368
378
|
}, { dependsOn: aks, deletedWith: aks, deleteBeforeReplace: true, parent: this });
|
|
369
379
|
return { default: defaultMaintenance, autoUpgrade: autoUpgradeMaintenance, nodeOS: nodeOSMaintenance };
|
|
370
380
|
}
|
|
381
|
+
createExtensions(aks, identity) {
|
|
382
|
+
const { extensions, rsGroup, groupRoles } = this.args;
|
|
383
|
+
if (extensions?.argoCd && groupRoles) {
|
|
384
|
+
(0, helpers_2.createArgoCDExtension)(`${this.name}-argocd`, {
|
|
385
|
+
...extensions.argoCd,
|
|
386
|
+
aks,
|
|
387
|
+
rsGroup,
|
|
388
|
+
groupRoles,
|
|
389
|
+
identity,
|
|
390
|
+
}, { parent: this, retainOnDelete: true });
|
|
391
|
+
}
|
|
392
|
+
}
|
|
371
393
|
getExtraAksOutputs(aks) {
|
|
372
394
|
const { rsGroup } = this.args;
|
|
373
395
|
const aksInfo = (0, helpers_2.getAksClusterOutput)({ resourceGroupName: rsGroup.resourceGroupName, resourceName: aks.name });
|
|
@@ -378,24 +400,23 @@ class AzKubernetes extends base_1.BaseResourceComponent {
|
|
|
378
400
|
}));
|
|
379
401
|
}
|
|
380
402
|
assignPermission(aks) {
|
|
381
|
-
const {
|
|
403
|
+
const { attachToAcr } = this.args;
|
|
382
404
|
if (attachToAcr && this.kubeletIdentity) {
|
|
383
405
|
pulumi.output(this.kubeletIdentity).apply((p) => {
|
|
384
|
-
new azAd_1.RoleAssignment(`${this.name}-aks-acr`, {
|
|
406
|
+
new azAd_1.RoleAssignment(`${this.name}-aks-acr-pull`, {
|
|
385
407
|
principalId: p.objectId,
|
|
386
408
|
principalType: 'ServicePrincipal',
|
|
387
409
|
roleName: 'AcrPull',
|
|
388
410
|
scope: attachToAcr.id,
|
|
389
411
|
}, { dependsOn: aks, deletedWith: aks, parent: this });
|
|
412
|
+
new azAd_1.RoleAssignment(`${this.name}-aks-acr-read`, {
|
|
413
|
+
principalId: p.objectId,
|
|
414
|
+
principalType: 'ServicePrincipal',
|
|
415
|
+
roleName: 'Container Registry Repository Reader',
|
|
416
|
+
scope: attachToAcr.id,
|
|
417
|
+
}, { dependsOn: aks, deletedWith: aks, parent: this });
|
|
390
418
|
});
|
|
391
419
|
}
|
|
392
|
-
//Allows AKS to have Contributor role on the resource group
|
|
393
|
-
aks.identity.apply((id) => new azAd_1.RoleAssignment(`${this.name}-aks-identity`, {
|
|
394
|
-
principalId: id.principalId,
|
|
395
|
-
principalType: 'ServicePrincipal',
|
|
396
|
-
roleName: 'Contributor',
|
|
397
|
-
scope: helpers_1.rsHelpers.getRsGroupIdFrom(rsGroup),
|
|
398
|
-
}, { dependsOn: aks, deletedWith: aks, parent: this }));
|
|
399
420
|
}
|
|
400
421
|
getPrivateDNSZone(aks) {
|
|
401
422
|
const { features } = this.args;
|
|
@@ -438,4 +459,4 @@ class AzKubernetes extends base_1.BaseResourceComponent {
|
|
|
438
459
|
}
|
|
439
460
|
}
|
|
440
461
|
exports.AzKubernetes = AzKubernetes;
|
|
441
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXpLdWJlcm5ldGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Frcy9Bekt1YmVybmV0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkVBQTZEO0FBRTdELHVEQUF5QztBQUd6QyxrQ0FBMEQ7QUFDMUQsa0NBQWdFO0FBQ2hFLHdDQUE2RDtBQUU3RCw4QkFBMEM7QUFDMUMsc0NBQXlDO0FBQ3pDLHVDQUFnRDtBQUNoRCw2Q0FBNEQ7QUFtQjVELE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxXQUF3QyxFQUF3QyxFQUFFO0lBQ2pILElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0IsT0FBTyxZQUFZLElBQUksV0FBVyxJQUFJLGdCQUFnQixJQUFJLFdBQVcsQ0FBQztBQUN4RSxDQUFDLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHLENBQUMsV0FBd0MsRUFBcUMsRUFBRTtJQUNoSCxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ25DLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDN0QsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxXQUF3QyxFQUF1QyxFQUFFO0lBQzdHLElBQUksQ0FBQyxXQUFXLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDM0UsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsV0FBd0MsRUFBdUMsRUFBRTtJQUN4RyxJQUFJLENBQUMsV0FBVyxJQUFJLHVCQUF1QixDQUFDLFdBQVcsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNFLE9BQU8sV0FBVyxD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
|
|
462
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXpLdWJlcm5ldGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Frcy9Bekt1YmVybmV0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkVBQTZEO0FBRTdELHVEQUF5QztBQUd6QyxrQ0FBMEQ7QUFDMUQsa0NBQWdFO0FBQ2hFLHdDQUE2RDtBQUU3RCw4QkFBMEM7QUFDMUMsc0NBQXlDO0FBQ3pDLHVDQUE0RjtBQUM1Riw2Q0FBNEQ7QUFtQjVELE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxXQUF3QyxFQUF3QyxFQUFFO0lBQ2pILElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDL0IsT0FBTyxZQUFZLElBQUksV0FBVyxJQUFJLGdCQUFnQixJQUFJLFdBQVcsQ0FBQztBQUN4RSxDQUFDLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHLENBQUMsV0FBd0MsRUFBcUMsRUFBRTtJQUNoSCxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ25DLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDN0QsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDO0FBQzdCLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxXQUF3QyxFQUF1QyxFQUFFO0lBQzdHLElBQUksQ0FBQyxXQUFXLElBQUksdUJBQXVCLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDM0UsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsV0FBd0MsRUFBdUMsRUFBRTtJQUN4RyxJQUFJLENBQUMsV0FBVyxJQUFJLHVCQUF1QixDQUFDLFdBQVcsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzNFLE9BQU8sV0FBVyxD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
|
package/aks/helpers.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import * as azure from '@pulumi/azure-native';
|
|
1
2
|
import * as pulumi from '@pulumi/pulumi';
|
|
2
3
|
import { AksOutputType } from './types';
|
|
4
|
+
import { AppRegistration } from '../azAd';
|
|
5
|
+
import * as types from '../types';
|
|
3
6
|
export declare const aksRequiredOutboundPorts: string[];
|
|
4
7
|
export declare const getAksConfig: ({ resourceName, resourceGroupName, disableLocalAccounts, }: {
|
|
5
8
|
resourceName: string;
|
|
@@ -10,3 +13,12 @@ export declare const getAksClusterOutput: ({ resourceName, resourceGroupName, }:
|
|
|
10
13
|
resourceName: pulumi.Input<string>;
|
|
11
14
|
resourceGroupName: pulumi.Input<string>;
|
|
12
15
|
}) => pulumi.Output<AksOutputType>;
|
|
16
|
+
export type ArgoCDExtensionArgs = Required<types.WithGroupRolesArgs> & types.WithResourceGroupInputs & {
|
|
17
|
+
namespace: pulumi.Input<string>;
|
|
18
|
+
argoCdDomain: pulumi.Input<string>;
|
|
19
|
+
workloadIdentityClientId: pulumi.Input<string>;
|
|
20
|
+
aks: azure.containerservice.ManagedCluster;
|
|
21
|
+
identity: AppRegistration;
|
|
22
|
+
releaseTrain?: 'preview' | pulumi.Input<string>;
|
|
23
|
+
};
|
|
24
|
+
export declare const createArgoCDExtension: (name: string, { argoCdDomain, namespace, workloadIdentityClientId, aks, identity, groupRoles, rsGroup, releaseTrain, }: ArgoCDExtensionArgs, opts?: pulumi.ComponentResourceOptions) => import("@pulumi/azure-native/kubernetesconfiguration/extension").Extension;
|
package/aks/helpers.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.getAksClusterOutput = exports.getAksConfig = exports.aksRequiredOutboundPorts = void 0;
|
|
36
|
+
exports.createArgoCDExtension = exports.getAksClusterOutput = exports.getAksConfig = exports.aksRequiredOutboundPorts = void 0;
|
|
37
37
|
const azure = __importStar(require("@pulumi/azure-native"));
|
|
38
38
|
const helpers_1 = require("../helpers");
|
|
39
39
|
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
@@ -70,4 +70,53 @@ const getAksClusterOutput = ({ resourceName, resourceGroupName, }) => {
|
|
|
70
70
|
});
|
|
71
71
|
};
|
|
72
72
|
exports.getAksClusterOutput = getAksClusterOutput;
|
|
73
|
-
|
|
73
|
+
const createArgoCDExtension = (name, { argoCdDomain, namespace, workloadIdentityClientId, aks, identity, groupRoles, rsGroup, releaseTrain, }, opts) => {
|
|
74
|
+
const oidcConfig = pulumi.interpolate `
|
|
75
|
+
name: Azure
|
|
76
|
+
issuer: https://login.microsoftonline.com/${helpers_1.azureEnv.tenantId}/v2.0
|
|
77
|
+
clientID: ${identity.clientId}
|
|
78
|
+
azure:
|
|
79
|
+
useWorkloadIdentity: true
|
|
80
|
+
requestedIDTokenClaims:
|
|
81
|
+
groups:
|
|
82
|
+
essential: true
|
|
83
|
+
requestedScopes:
|
|
84
|
+
- openid
|
|
85
|
+
- profile
|
|
86
|
+
- email
|
|
87
|
+
`;
|
|
88
|
+
const defaultPolicy = 'role:readonly';
|
|
89
|
+
const policy = `
|
|
90
|
+
p, role:org-admin, applications, *, */*, allow
|
|
91
|
+
p, role:org-admin, clusters, get, *, allow
|
|
92
|
+
p, role:org-admin, repositories, get, *, allow
|
|
93
|
+
p, role:org-admin, repositories, create, *, allow
|
|
94
|
+
p, role:org-admin, repositories, update, *, allow
|
|
95
|
+
p, role:org-admin, repositories, delete, *, allow
|
|
96
|
+
g, ${groupRoles.admin.objectId}, role:org-admin
|
|
97
|
+
g, ${groupRoles.readOnly.objectId}, role:readonly
|
|
98
|
+
`;
|
|
99
|
+
return new azure.kubernetesconfiguration.Extension(name, {
|
|
100
|
+
autoUpgradeMinorVersion: true,
|
|
101
|
+
clusterName: aks.name,
|
|
102
|
+
resourceGroupName: rsGroup.resourceGroupName,
|
|
103
|
+
clusterResourceName: 'managedClusters',
|
|
104
|
+
clusterRp: 'Microsoft.ContainerService',
|
|
105
|
+
extensionType: 'Microsoft.ArgoCD',
|
|
106
|
+
releaseTrain: releaseTrain ?? 'preview',
|
|
107
|
+
configurationSettings: {
|
|
108
|
+
deployWithHighAvailability: 'false',
|
|
109
|
+
namespaceInstall: 'true',
|
|
110
|
+
'workloadIdentity.enable': 'true',
|
|
111
|
+
'workloadIdentity.clientId': workloadIdentityClientId,
|
|
112
|
+
'workloadIdentity.entraSSOClientId': identity.clientId,
|
|
113
|
+
'config-maps.argocd-cm.data.oidc\\.config': oidcConfig,
|
|
114
|
+
'config-maps.argocd-cm.data.url': pulumi.interpolate `https://${argoCdDomain}/`,
|
|
115
|
+
'config-maps.argocd-rbac-cm.data.policy\\.default': defaultPolicy,
|
|
116
|
+
'config-maps.argocd-rbac-cm.data.policy\\.csv': policy,
|
|
117
|
+
'config-maps.argocd-cmd-params-cm.data.application\\.namespaces': namespace,
|
|
118
|
+
},
|
|
119
|
+
}, { ...opts, dependsOn: [aks, identity] });
|
|
120
|
+
};
|
|
121
|
+
exports.createArgoCDExtension = createArgoCDExtension;
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ha3MvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0REFBOEM7QUFDOUMsd0NBQXNDO0FBQ3RDLHVEQUF5QztBQUs1QixRQUFBLHdCQUF3QixHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUU1RSxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsRUFDakMsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixvQkFBb0IsR0FLckIsRUFBbUIsRUFBRTtJQUNwQixNQUFNLEdBQUcsR0FBRyxvQkFBb0I7UUFDOUIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLGlDQUFpQyxDQUFDO1lBQzdELFlBQVk7WUFDWixpQkFBaUI7U0FDbEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBa0MsQ0FBQztZQUM5RCxZQUFZO1lBQ1osaUJBQWlCO1NBQ2xCLENBQUMsQ0FBQztJQUVQLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDO0FBcEJXLFFBQUEsWUFBWSxnQkFvQnZCO0FBRUssTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEVBQ2xDLFlBQVksRUFDWixpQkFBaUIsR0FJbEIsRUFBZ0MsRUFBRTtJQUNqQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFBLDhDQUE4QyxrQkFBUSxDQUFDLGNBQWMsbUJBQW1CLGlCQUFpQix5REFBeUQsWUFBWSx5QkFBeUIsQ0FBQztJQUN0Tyw0Q0FBNEM7SUFDNUMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDNUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNoQyxNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRTtnQkFDUCxhQUFhLEVBQUUsVUFBVSxLQUFLLENBQUMsS0FBSyxFQUFFO2FBQ3ZDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsT0FBTyxJQUFxQixDQUFDO0lBQy9CLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBeEJXLFFBQUEsbUJBQW1CLHVCQXdCOUI7QUFZSyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLElBQVksRUFDWixFQUNFLFlBQVksRUFDWixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLEdBQUcsRUFDSCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE9BQU8sRUFDUCxZQUFZLEdBQ1EsRUFDdEIsSUFBc0MsRUFDdEMsRUFBRTtJQUNGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUE7OzRDQUVLLGtCQUFRLENBQUMsUUFBUTtZQUNqRCxRQUFRLENBQUMsUUFBUTs7Ozs7Ozs7OztHQVUxQixDQUFDO0lBRUYsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDO0lBQ3RDLE1BQU0sTUFBTSxHQUFHOzs7Ozs7O0tBT1osVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRO0tBQ3pCLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUTtHQUM5QixDQUFDO0lBRUYsT0FBTyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQ2hELElBQUksRUFDSjtRQUNFLHVCQUF1QixFQUFFLElBQUk7UUFDN0IsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJO1FBQ3JCLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUI7UUFDNUMsbUJBQW1CLEVBQUUsaUJBQWlCO1FBQ3RDLFNBQVMsRUFBRSw0QkFBNEI7UUFDdkMsYUFBYSxFQUFFLGtCQUFrQjtRQUNqQyxZQUFZLEVBQUUsWUFBWSxJQUFJLFNBQVM7UUFDdkMscUJBQXFCLEVBQUU7WUFDckIsMEJBQTBCLEVBQUUsT0FBTztZQUNuQyxnQkFBZ0IsRUFBRSxNQUFNO1lBQ3hCLHlCQUF5QixFQUFFLE1BQU07WUFDakMsMkJBQTJCLEVBQUUsd0JBQXdCO1lBQ3JELG1DQUFtQyxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQ3RELDBDQUEwQyxFQUFFLFVBQVU7WUFDdEQsZ0NBQWdDLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQSxXQUFXLFlBQVksR0FBRztZQUM5RSxrREFBa0QsRUFBRSxhQUFhO1lBQ2pFLDhDQUE4QyxFQUFFLE1BQU07WUFDdEQsZ0VBQWdFLEVBQUUsU0FBUztTQUM1RTtLQUNGLEVBQ0QsRUFBRSxHQUFHLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FDeEMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQWxFVyxRQUFBLHFCQUFxQix5QkFrRWhDIn0=
|
|
@@ -14,9 +14,12 @@ export interface AppRegistrationArgs extends WithVaultInfo, WithMemberOfArgs, Pa
|
|
|
14
14
|
info?: Pick<azAd.ApplicationArgs, 'description' | 'displayName' | 'logoImage' | 'marketingUrl' | 'notes' | 'privacyStatementUrl'>;
|
|
15
15
|
groupMembershipClaims?: pulumi.Input<GroupMembershipClaimsTypes[]>;
|
|
16
16
|
identifierUris?: pulumi.Input<pulumi.Input<string>[]>;
|
|
17
|
-
servicePrincipal?: Pick<azAd.ServicePrincipalArgs, 'notificationEmailAddresses' | 'preferredSingleSignOnMode' | 'samlSingleSignOn'
|
|
17
|
+
servicePrincipal?: Pick<azAd.ServicePrincipalArgs, 'notificationEmailAddresses' | 'preferredSingleSignOnMode' | 'samlSingleSignOn'> & {
|
|
18
|
+
appRoleAssignmentRequired?: pulumi.Input<boolean>;
|
|
19
|
+
assignedGroupIds?: pulumi.Input<string>[];
|
|
20
|
+
};
|
|
18
21
|
appType?: 'web' | 'singlePageApplication' | 'native';
|
|
19
|
-
/** This is
|
|
22
|
+
/** This is required when the appType is 'web' or 'singlePageApplication' */
|
|
20
23
|
redirectUris?: pulumi.Input<pulumi.Input<string>[]>;
|
|
21
24
|
/** This option is for the appType is 'web' */
|
|
22
25
|
homepageUrl?: pulumi.Input<string>;
|
|
@@ -27,6 +30,7 @@ export interface AppRegistrationArgs extends WithVaultInfo, WithMemberOfArgs, Pa
|
|
|
27
30
|
accessTokenIssuanceEnabled?: pulumi.Input<boolean>;
|
|
28
31
|
idTokenIssuanceEnabled?: pulumi.Input<boolean>;
|
|
29
32
|
}>;
|
|
33
|
+
/** Role assignments to be created for the Service Principal */
|
|
30
34
|
roleAssignments?: Array<Omit<RoleAssignmentArgs, 'roleAssignmentName' | 'principalId' | 'principalType'>>;
|
|
31
35
|
}
|
|
32
36
|
export declare class AppRegistration extends BaseComponent<AppRegistrationArgs> {
|
package/azAd/AppRegistration.js
CHANGED
|
@@ -109,9 +109,10 @@ class AppRegistration extends base_1.BaseComponent {
|
|
|
109
109
|
return { app, clientSecret: clientSecret.value };
|
|
110
110
|
}
|
|
111
111
|
createServicePrincipal(app) {
|
|
112
|
+
const { servicePrincipal } = this.args;
|
|
112
113
|
//Service Principal
|
|
113
114
|
const sp = new azAd.ServicePrincipal(`${this.name}-sp`, {
|
|
114
|
-
...
|
|
115
|
+
...servicePrincipal,
|
|
115
116
|
description: this.name,
|
|
116
117
|
clientId: app.clientId,
|
|
117
118
|
owners: this.args.owners,
|
|
@@ -120,6 +121,13 @@ class AppRegistration extends base_1.BaseComponent {
|
|
|
120
121
|
displayName: this.name,
|
|
121
122
|
servicePrincipalId: pulumi.interpolate `/servicePrincipals/${sp.objectId}`,
|
|
122
123
|
}, { dependsOn: sp, deletedWith: app, parent: this });
|
|
124
|
+
if (servicePrincipal?.assignedGroupIds) {
|
|
125
|
+
pulumi.output(servicePrincipal?.assignedGroupIds).apply((ids) => ids.map((id) => new azAd.AppRoleAssignment(`${this.name}-sp-appRole-${id}`, {
|
|
126
|
+
appRoleId: '00000000-0000-0000-0000-000000000000',
|
|
127
|
+
resourceObjectId: sp.objectId,
|
|
128
|
+
principalObjectId: id,
|
|
129
|
+
}, { dependsOn: sp, retainOnDelete: true, parent: this })));
|
|
130
|
+
}
|
|
123
131
|
this.addRoleAssignments(sp);
|
|
124
132
|
this.addMemberOf(sp);
|
|
125
133
|
return {
|
|
@@ -164,4 +172,4 @@ class AppRegistration extends base_1.BaseComponent {
|
|
|
164
172
|
}
|
|
165
173
|
}
|
|
166
174
|
exports.AppRegistration = AppRegistration;
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwUmVnaXN0cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6QWQvQXBwUmVnaXN0cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3QztBQUN4Qyx1REFBeUM7QUFFekMscURBQXNFO0FBR3RFLGtDQUF3QztBQUN4QyxvQ0FBd0M7QUFDeEMsNkNBQTJEO0FBQzNELHdDQUFpRDtBQUVqRCxJQUFZLDBCQU1YO0FBTkQsV0FBWSwwQkFBMEI7SUFDcEMsMkNBQWEsQ0FBQTtJQUNiLDZEQUErQixDQUFBO0lBQy9CLDZEQUErQixDQUFBO0lBQy9CLG1FQUFxQyxDQUFBO0lBQ3JDLHlDQUFXLENBQUE7QUFDYixDQUFDLEVBTlcsMEJBQTBCLDBDQUExQiwwQkFBMEIsUUFNckM7QUFpREQsTUFBYSxlQUFnQixTQUFRLG9CQUFrQztJQUNyRCxRQUFRLENBQXdCO0lBQ2hDLFFBQVEsQ0FBd0I7SUFDaEMsWUFBWSxDQUF3QjtJQUNwQyxrQkFBa0IsQ0FBd0I7SUFDMUMsd0JBQXdCLENBQXdCO0lBQ3hELFlBQVksR0FBMkMsRUFBRSxDQUFDO0lBRWxFLFlBQVksSUFBWSxFQUFFLE9BQTRCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQXNDO1FBQ2pILEtBQUssQ0FBQyxJQUFBLGtDQUF3QixFQUFDLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVyRSxhQUFhO1FBQ2IsTUFBTSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMzRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUNoRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLGtCQUFRLENBQUMsUUFBUSxDQUFDO1FBRWxDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDZCxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDdEIsWUFBWSxFQUFFLFlBQVk7WUFDMUIsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQjtZQUN6QyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsd0JBQXdCO1NBQ2xELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRTNCLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FDOUIsR0FBRyxtQkFBUyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQ2pDO1lBQ0UsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLEdBQUcsSUFBSTtZQUNQLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxJQUFJLEdBQUcsbUJBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNuRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsSUFBSSxHQUFHLG1CQUFTLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDbkUscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixjQUFjLEVBQUUsY0FBYztZQUU5QixjQUFjO1lBQ2QsR0FBRyxFQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUs7Z0JBQ3hCLENBQUMsQ0FBQztvQkFDRSxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO29CQUNwQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO29CQUM5QixhQUFhLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO29CQUN0QyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO2lCQUNuQztnQkFDSCxDQUFDLENBQUMsU0FBUztZQUNmLHFCQUFxQixFQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN0RyxFQUNELEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDeEQsQ0FBQztRQUVGLE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUMvQyxHQUFHLElBQUksQ0FBQyxJQUFJLGdCQUFnQixFQUM1QjtZQUNFLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSTtZQUN0QixhQUFhLEVBQUUsR0FBRyxDQUFDLEVBQUU7U0FDdEIsRUFDRCxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUNqQyxDQUFDO1FBRUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxHQUFxQjtRQUNsRCxNQUFLLEVBQUMsZ0JBQWdCLEVBQUMsR0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2xDLG1CQUFtQjtRQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbEMsR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQ2pCO1lBQ0UsR0FBRyxnQkFBZ0I7WUFDbkIsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ3RCLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtZQUN0QixNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1NBQ3pCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUNuRCxDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQzlDLEdBQUcsSUFBSSxDQUFDLElBQUksVUFBVSxFQUN0QjtZQUNFLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSTtZQUN0QixrQkFBa0IsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFBLHNCQUFzQixFQUFFLENBQUMsUUFBUSxFQUFFO1NBQzFFLEVBQ0QsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUNsRCxDQUFDO1FBRUYsSUFBSSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUM5RCxHQUFHLENBQUMsR0FBRyxDQUNMLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDTCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FDeEIsR0FBRyxJQUFJLENBQUMsSUFBSSxlQUFlLEVBQUUsRUFBRSxFQUMvQjtnQkFDRSxTQUFTLEVBQUUsc0NBQXNDO2dCQUNqRCxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsUUFBUTtnQkFDN0IsaUJBQWlCLEVBQUUsRUFBRTthQUN0QixFQUNELEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDdEQsQ0FDSixDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckIsT0FBTztZQUNMLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ3pCLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxLQUFLO1NBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCLENBQUMsRUFBeUI7UUFDbEQsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPO1FBRTdCLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FDeEIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLElBQUksK0JBQWMsQ0FDaEIsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDL0IsRUFBRSxHQUFHLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsRUFDeEUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUNqRCxDQUNKLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFDLEVBQXlCO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUN4QixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUNsQixHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUM3QjtZQUNFLGFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUTtZQUMxQixjQUFjLEVBQUUsRUFBRSxDQUFDLFFBQVE7U0FDNUIsRUFDRCxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQ2pELENBQ0osQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLFVBQVUsQ0FBQyxFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixvQkFBb0IsR0FNckI7UUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLG9CQUFZLENBQzdCLElBQUksQ0FBQyxJQUFJLEVBQ1Q7WUFDRSxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQzlCLE9BQU8sRUFBRTtnQkFDUCxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRTtnQkFDaEYsQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ3hGLENBQUMsY0FBYyxDQUFDLEVBQUU7b0JBQ2hCLEtBQUssRUFBRSxrQkFBa0I7b0JBQ3pCLFdBQVcsRUFBRSxtQkFBbUIsSUFBSSxDQUFDLElBQUksR0FBRztpQkFDN0M7Z0JBQ0QsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO29CQUNwQixLQUFLLEVBQUUsb0JBQW9CO29CQUMzQixXQUFXLEVBQUUsbUJBQW1CLElBQUksQ0FBQyxJQUFJLEdBQUc7aUJBQzdDO2FBQ0Y7U0FDRixFQUNELEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDbEQsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQW5NRCwwQ0FtTUMifQ==
|
package/base/BaseComponent.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare abstract class BaseComponent<TArgs extends pulumi.Inputs> extends
|
|
|
23
23
|
* @param args - Configuration arguments for this component
|
|
24
24
|
* @param opts - Optional Pulumi resource options to control component behavior
|
|
25
25
|
*/
|
|
26
|
-
constructor(type: string, name: string, args: TArgs, opts?: pulumi.ComponentResourceOptions | undefined);
|
|
26
|
+
protected constructor(type: string, name: string, args: TArgs, opts?: pulumi.ComponentResourceOptions | undefined);
|
|
27
27
|
/**
|
|
28
28
|
* Registers component outputs with the Pulumi engine.
|
|
29
29
|
* This method should be overridden by derived classes to ensure proper output registration.
|
|
@@ -7,6 +7,7 @@ import { BaseComponent } from './BaseComponent';
|
|
|
7
7
|
import { EncryptionKey } from '../vault/EncryptionKey';
|
|
8
8
|
import { ResourceLocker } from '../common/ResourceLocker';
|
|
9
9
|
import { RoleAssignment } from '../azAd/RoleAssignment';
|
|
10
|
+
import * as enums from '@pulumi/azure-native/types/enums';
|
|
10
11
|
/**
|
|
11
12
|
* Base interface for resource component arguments that combines vault information
|
|
12
13
|
* and Azure AD group role requirements.
|
|
@@ -57,7 +58,7 @@ export declare abstract class BaseResourceComponent<TArgs extends BaseArgs> exte
|
|
|
57
58
|
* @param args - Arguments containing vault and resource group information
|
|
58
59
|
* @param opts - Optional component resource options
|
|
59
60
|
*/
|
|
60
|
-
constructor(type: string, name: string, args: TArgs, opts?: pulumi.ComponentResourceOptions | undefined);
|
|
61
|
+
protected constructor(type: string, name: string, args: TArgs, opts?: pulumi.ComponentResourceOptions | undefined);
|
|
61
62
|
/**
|
|
62
63
|
* Adds a managed identity to a specified Azure AD group role
|
|
63
64
|
* @param type - The type of group role to add the identity to (from GroupRoleTypes enum)
|
|
@@ -112,4 +113,15 @@ export declare abstract class BaseResourceComponent<TArgs extends BaseArgs> exte
|
|
|
112
113
|
* Creates vault secrets if any secrets were added during component creation
|
|
113
114
|
*/
|
|
114
115
|
private postCreated;
|
|
116
|
+
/** Assigns a role to a principal at the scope of this resource.
|
|
117
|
+
* @param roleName The name of the role to assign (e.g., "Contributor", "Reader").
|
|
118
|
+
* @param principalType The type of the principal (e.g., "User", "Group", "ServicePrincipal").
|
|
119
|
+
* @param principalId The ID of the principal to whom the role is assigned.
|
|
120
|
+
* @returns A RoleAssignment resource representing the role assignment.
|
|
121
|
+
* */
|
|
122
|
+
roleAssignment({ roleName, principalType, principalId }: {
|
|
123
|
+
roleName: pulumi.Input<string>;
|
|
124
|
+
principalId: pulumi.Input<string>;
|
|
125
|
+
principalType: enums.authorization.PrincipalType;
|
|
126
|
+
}): pulumi.Output<RoleAssignment>;
|
|
115
127
|
}
|
|
@@ -191,6 +191,24 @@ class BaseResourceComponent extends BaseComponent_1.BaseComponent {
|
|
|
191
191
|
}, { dependsOn: this.opts?.dependsOn, parent: this });
|
|
192
192
|
this.vaultSecrets = rs.results;
|
|
193
193
|
}
|
|
194
|
+
/** Assigns a role to a principal at the scope of this resource.
|
|
195
|
+
* @param roleName The name of the role to assign (e.g., "Contributor", "Reader").
|
|
196
|
+
* @param principalType The type of the principal (e.g., "User", "Group", "ServicePrincipal").
|
|
197
|
+
* @param principalId The ID of the principal to whom the role is assigned.
|
|
198
|
+
* @returns A RoleAssignment resource representing the role assignment.
|
|
199
|
+
* */
|
|
200
|
+
roleAssignment({ roleName, principalType, principalId }) {
|
|
201
|
+
const resourceId = this.getOutputs()?.id;
|
|
202
|
+
if (!resourceId) {
|
|
203
|
+
throw new Error(`Resource ID is not available for role assignment in component "${this.type}:${this.name}"`);
|
|
204
|
+
}
|
|
205
|
+
return pulumi.output([roleName, principalId]).apply(([role, id]) => new RoleAssignment_1.RoleAssignment(`${this.name}-${role}-${id}`, {
|
|
206
|
+
principalId: id,
|
|
207
|
+
principalType,
|
|
208
|
+
roleName: role,
|
|
209
|
+
scope: resourceId,
|
|
210
|
+
}, { parent: this, deletedWith: this }));
|
|
211
|
+
}
|
|
194
212
|
}
|
|
195
213
|
exports.BaseResourceComponent = BaseResourceComponent;
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVJlc291cmNlQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2UvQmFzZVJlc291cmNlQ29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUF3QztBQUN4Qyx1REFBeUM7QUFHekMsNkRBQThFO0FBQzlFLHlEQUF3RTtBQUN4RSx3REFBd0U7QUFFeEUsbURBQWdEO0FBQ2hELDBEQUF1RDtBQUN2RCw2REFBMEQ7QUFDMUQsMkRBQXdEO0FBRXhELHVDQUFxRDtBQW1CckQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFzQixxQkFBOEMsU0FBUSw2QkFBb0I7SUFhM0U7SUFDRDtJQUNHO0lBQ0E7SUFmZCxZQUFZLENBQXdDO0lBQ25ELFFBQVEsR0FBNEMsRUFBRSxDQUFDO0lBQ3ZELG9CQUFvQixHQUFZLEtBQUssQ0FBQztJQUU5Qzs7Ozs7O09BTUc7SUFDSCxZQUNtQixJQUFZLEVBQ2IsSUFBWSxFQUNULElBQVcsRUFDWCxJQUFzQztRQUV6RCxLQUFLLENBQUMsSUFBQSxrQ0FBd0IsRUFBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBTHZDLFNBQUksR0FBSixJQUFJLENBQVE7UUFDYixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1QsU0FBSSxHQUFKLElBQUksQ0FBTztRQUNYLFNBQUksR0FBSixJQUFJLENBQWtDO0lBRzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGlCQUFpQixDQUN0QixJQUEwQixFQUMxQixRQUF5RTtRQUV6RSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFeEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drunk-pulumi/azure-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "The custom components for Pulumi Azure",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"@drunk-pulumi/azure-providers": "^1.0.10",
|
|
23
23
|
"@pulumi/azure-native": "^3.12.0",
|
|
24
24
|
"@pulumi/azuread": "^6.8.0",
|
|
25
|
-
"@pulumi/pulumi": "^3.214.
|
|
26
|
-
"@pulumi/random": "^4.18.
|
|
25
|
+
"@pulumi/pulumi": "^3.214.1",
|
|
26
|
+
"@pulumi/random": "^4.18.5",
|
|
27
27
|
"lodash": "^4.17.21",
|
|
28
28
|
"netmask": "^2.0.2",
|
|
29
29
|
"openpgp": "^6.3.0"
|
|
@@ -27,7 +27,7 @@ export declare function allowsCloudflareTunnels({ name, priority, sourceAddresse
|
|
|
27
27
|
internalDestinationPorts?: pulumi.Input<string>[];
|
|
28
28
|
}): import("..").RulePolicyArgs;
|
|
29
29
|
/** These rules are not required for Private AKS */
|
|
30
|
-
export declare function allowsAksPolicies({ name, priority, subnetAddressSpaces, privateCluster, }: {
|
|
30
|
+
export declare function allowsAksPolicies({ name, priority, subnetAddressSpaces, privateCluster, allowsAcrs, }: {
|
|
31
31
|
name?: string;
|
|
32
32
|
priority: number;
|
|
33
33
|
privateCluster?: boolean;
|
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.allAzurePorts = void 0;
|
|
4
37
|
exports.newFirewallPolicy = newFirewallPolicy;
|
|
@@ -6,6 +39,7 @@ exports.defaultAllowedPolicies = defaultAllowedPolicies;
|
|
|
6
39
|
exports.defaultDeniedPolicies = defaultDeniedPolicies;
|
|
7
40
|
exports.allowsCloudflareTunnels = allowsCloudflareTunnels;
|
|
8
41
|
exports.allowsAksPolicies = allowsAksPolicies;
|
|
42
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
9
43
|
const helpers_1 = require("../../helpers");
|
|
10
44
|
const FirewallPolicyBuilder_1 = require("./FirewallPolicyBuilder");
|
|
11
45
|
exports.allAzurePorts = [
|
|
@@ -422,7 +456,7 @@ function allowsCloudflareTunnels({ name = 'cf-tunnels', priority, sourceAddresse
|
|
|
422
456
|
return builder.build();
|
|
423
457
|
}
|
|
424
458
|
/** These rules are not required for Private AKS */
|
|
425
|
-
function allowsAksPolicies({ name = 'aks', priority, subnetAddressSpaces, privateCluster, }) {
|
|
459
|
+
function allowsAksPolicies({ name = 'aks', priority, subnetAddressSpaces, privateCluster, allowsAcrs, }) {
|
|
426
460
|
const builder = new FirewallPolicyBuilder_1.FirewallPolicyBuilder(name, { priority, action: 'Allow' });
|
|
427
461
|
if (!privateCluster) {
|
|
428
462
|
builder
|
|
@@ -465,37 +499,43 @@ function allowsAksPolicies({ name = 'aks', priority, subnetAddressSpaces, privat
|
|
|
465
499
|
destinationAddresses: ['AzureMonitor'],
|
|
466
500
|
destinationPorts: ['443'],
|
|
467
501
|
});
|
|
502
|
+
const targetFqdns = [
|
|
503
|
+
`*.hcp.${helpers_1.azureEnv.currentRegionCode}.azmk8s.io`,
|
|
504
|
+
'mcr.microsoft.com',
|
|
505
|
+
'*.data.mcr.microsoft.com',
|
|
506
|
+
'mcr-0001.mcr-msedge.net',
|
|
507
|
+
'management.azure.com',
|
|
508
|
+
'login.microsoftonline.com',
|
|
509
|
+
'packages.microsoft.com',
|
|
510
|
+
'acs-mirror.azureedge.net',
|
|
511
|
+
'packages.aks.azure.com',
|
|
512
|
+
//Defender for Containers and Monitoring
|
|
513
|
+
'*.ods.opinsights.azure.com',
|
|
514
|
+
'*.oms.opinsights.azure.com',
|
|
515
|
+
'*.cloud.defender.microsoft.com',
|
|
516
|
+
'*.in.applicationinsights.azure.com',
|
|
517
|
+
'*.monitoring.azure.com',
|
|
518
|
+
'global.handler.control.monitor.azure.com',
|
|
519
|
+
'*.ingest.monitor.azure.com',
|
|
520
|
+
'*.metrics.ingest.monitor.azure.com',
|
|
521
|
+
`${helpers_1.azureEnv.currentRegionCode}.handler.control.monitor.azure.com`,
|
|
522
|
+
//Key Vault
|
|
523
|
+
'vault.azure.net',
|
|
524
|
+
'*.vault.usgovcloudapi.net',
|
|
525
|
+
//Storage for container
|
|
526
|
+
'*.blob.core.windows.net',
|
|
527
|
+
];
|
|
528
|
+
if (allowsAcrs) {
|
|
529
|
+
allowsAcrs.map(acr => targetFqdns.push(pulumi.interpolate `${acr}.azurecr.io`));
|
|
530
|
+
}
|
|
468
531
|
builder
|
|
469
532
|
//App
|
|
470
533
|
.addAppRule('acrs', {
|
|
471
534
|
description: 'Allows pods to access AzureKubernetesService',
|
|
472
535
|
sourceAddresses: subnetAddressSpaces,
|
|
473
|
-
targetFqdns
|
|
474
|
-
`*.hcp.${helpers_1.azureEnv.currentRegionCode}.azmk8s.io`,
|
|
475
|
-
'mcr.microsoft.com',
|
|
476
|
-
'*.data.mcr.microsoft.com',
|
|
477
|
-
'mcr-0001.mcr-msedge.net',
|
|
478
|
-
'management.azure.com',
|
|
479
|
-
'login.microsoftonline.com',
|
|
480
|
-
'packages.microsoft.com',
|
|
481
|
-
'acs-mirror.azureedge.net',
|
|
482
|
-
'packages.aks.azure.com',
|
|
483
|
-
//Defender for Containers and Monitoring
|
|
484
|
-
'*.ods.opinsights.azure.com',
|
|
485
|
-
'*.oms.opinsights.azure.com',
|
|
486
|
-
'*.cloud.defender.microsoft.com',
|
|
487
|
-
'*.in.applicationinsights.azure.com',
|
|
488
|
-
'*.monitoring.azure.com',
|
|
489
|
-
'global.handler.control.monitor.azure.com',
|
|
490
|
-
'*.ingest.monitor.azure.com',
|
|
491
|
-
'*.metrics.ingest.monitor.azure.com',
|
|
492
|
-
`${helpers_1.azureEnv.currentRegionCode}.handler.control.monitor.azure.com`,
|
|
493
|
-
//Key Vault
|
|
494
|
-
'vault.azure.net',
|
|
495
|
-
'*.vault.usgovcloudapi.net',
|
|
496
|
-
],
|
|
536
|
+
targetFqdns,
|
|
497
537
|
protocols: [{ protocolType: 'Https', port: 443 }],
|
|
498
538
|
});
|
|
499
539
|
return builder;
|
|
500
540
|
}
|
|
501
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uUG9saWNpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdm5ldC9GaXJld2FsbFBvbGljaWVzL2NvbW1vblBvbGljaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNCQSw4Q0FFQztBQUVELHdEQWlXQztBQUVELHNEQWFDO0FBRUQsMERBaUVDO0FBR0QsOENBMEZDO0FBemlCRCwyQ0FBeUM7QUFDekMsbUVBQWdFO0FBRW5ELFFBQUEsYUFBYSxHQUFHO0lBQzNCLElBQUk7SUFDSixLQUFLO0lBQ0wsS0FBSztJQUNMLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sT0FBTztDQUNSLENBQUM7QUFFRixTQUFnQixpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFrRDtJQUNsSCxPQUFPLElBQUksNkNBQXFCLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQWdCLHNCQUFzQixDQUFDLEVBQ3JDLElBQUksR0FBRyxnQkFBZ0IsRUFDdkIsUUFBUSxHQUFHLEdBQUcsRUFDZCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLG1CQUFtQixHQVdwQjtJQUNDLE1BQU0sT0FBTyxHQUFHLElBQUksNkNBQXFCLENBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRS9FLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRTtZQUNyQyxXQUFXLEVBQUUsK0JBQStCO1lBQzVDLGVBQWU7WUFDZixXQUFX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
|
|
541
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uUG9saWNpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdm5ldC9GaXJld2FsbFBvbGljaWVzL2NvbW1vblBvbGljaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSw4Q0FFQztBQUVELHdEQWlXQztBQUVELHNEQWFDO0FBRUQsMERBaUVDO0FBR0QsOENBbUdDO0FBbmpCRCx1REFBeUM7QUFDekMsMkNBQXlDO0FBQ3pDLG1FQUFnRTtBQUVuRCxRQUFBLGFBQWEsR0FBRztJQUMzQixJQUFJO0lBQ0osS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87Q0FDUixDQUFDO0FBRUYsU0FBZ0IsaUJBQWlCLENBQUMsSUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBa0Q7SUFDbEgsT0FBTyxJQUFJLDZDQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FBQyxFQUNyQyxJQUFJLEdBQUcsZ0JBQWdCLEVBQ3ZCLFFBQVEsR0FBRyxHQUFHLEVBQ2QsZUFBZSxFQUNmLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixtQkFBbUIsR0FXcEI7SUFDQyxNQUFNLE9BQU8sR0FBRyxJQUFJLDZDQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUUvRSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUU7WUFDckMsV0FBVyxFQUFFLCtCQUErQjtZQUM1QyxlQUFlO1lBQ2YsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDO1lBQ2xCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDbEMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7YUFDckM7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RCLE9BQU87YUFDSixVQUFVLENBQUMsa0JBQWtCLEVBQUU7WUFDOUIsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQzNCLGVBQWU7WUFDZixvQkFBb0IsRUFBRSxDQUFDLGNBQWMsa0JBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sa0JBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZHLGdCQUFnQixFQUFFLHFCQUFhO1NBQ2hDLENBQUM7YUFDRCxVQUFVLENBQUMsWUFBWSxFQUFFO1lBQ3hCLFdBQVcsRUFBRSx3QkFBd0I7WUFDckMsZUFBZTtZQUNmLFdBQVcsRUFBRSxDQUFDLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxvQ0FBb0MsQ0FBQztZQUM1RixTQUFTLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQ2xELENBQUM7YUFDRCxVQUFVLENBQUMsa0JBQWtCLEVBQUU7WUFDOUIsV0FBVyxFQUFFLDZCQUE2QjtZQUMxQyxlQUFlO1lBQ2YsV0FBVyxFQUFFO2dCQUNYLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYix1QkFBdUI7Z0JBQ3ZCLGNBQWM7Z0JBQ2Qsb0JBQW9CO2dCQUNwQixjQUFjO2dCQUNkLGdCQUFnQjtnQkFDaEIsc0JBQXNCO2dCQUN0QixtQkFBbUI7Z0JBQ25CLHFCQUFxQjthQUN0QjtZQUNELFNBQVMsRUFBRTtnQkFDVCxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDbEMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7YUFDckM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUU7WUFDckMsV0FBVyxFQUFFLDRCQUE0QjtZQUN6QyxlQUFlO1lBQ2YsV0FBVyxFQUFFO2dCQUNYLG1CQUFtQjtnQkFDbkIsaUJBQWlCO2dCQUNqQixtQkFBbUI7Z0JBQ25CLHlCQUF5QjtnQkFDekIsb0JBQW9CO2dCQUNwQiw4QkFBOEI7Z0JBQzlCLDBCQUEwQjtnQkFDMUIsd0JBQXdCO2dCQUN4QixvQkFBb0I7Z0JBQ3BCLHlCQUF5QjtnQkFDekIsMEJBQTBCO2dCQUMxQix5QkFBeUI7Z0JBQ3pCLDBCQUEwQjtnQkFDMUIsMkJBQTJCO2dCQUMzQixtQ0FBbUM7Z0JBQ25DLDJCQUEyQjtnQkFDM0IsZUFBZTtnQkFDZix5QkFBeUI7Z0JBQ3pCLDBCQUEwQjtnQkFDMUIsaUJBQWlCO2dCQUNqQix3QkFBd0I7Z0JBQ3hCLHVCQUF1QjtnQkFDdkIsaUJBQWlCO2dCQUNqQix5QkFBeUI7Z0JBQ3pCLHVCQUF1QjtnQkFDdkIsT0FBTztnQkFDUCxxQkFBcUI7Z0JBQ3JCLGFBQWE7Z0JBQ2IsS0FBSztnQkFDTCxtQkFBbUI7Z0JBQ25CLHlCQUF5QjtnQkFDekIsMkJBQTJCO2dCQUMzQixxQkFBcUI7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsNkJBQTZCO2dCQUM3QixxQkFBcUI7Z0JBQ3JCLDhCQUE4QjtnQkFDOUIsZUFBZTtnQkFDZiwwQ0FBMEM7Z0JBQzFDLFVBQVU7Z0JBQ1YsZ0JBQWdCO2dCQUNoQixTQUFTO2dCQUNULCtCQUErQjtnQkFDL0IsVUFBVTtnQkFDVixtQkFBbUI7Z0JBQ25CLHFCQUFxQjtnQkFDckIsb0JBQW9CO2dCQUNwQiwyQkFBMkI7YUFDNUI7WUFDRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO1NBQ2xELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFO1lBQ2xDLFdBQVcsRUFBRSx3Q0FBd0M7WUFDckQsZUFBZTtZQUNmLFdBQVcsRUFBRTtnQkFDWCwrQkFBK0I7Z0JBQy9CLG1CQUFtQjtnQkFDbkIsb0JBQW9CO2dCQUNwQix5QkFBeUI7Z0JBQ3pCLGlCQUFpQjtnQkFDakIseUJBQXlCO2dCQUN6QixvQkFBb0I7Z0JBQ3BCLHVCQUF1QjtnQkFDdkIsZUFBZTtnQkFDZiwwQkFBMEI7Z0JBQzFCLCtCQUErQjtnQkFDL0IsZ0JBQWdCO2dCQUNoQixvQkFBb0I7Z0JBQ3BCLGdDQUFnQztnQkFDaEMsa0JBQWtCO2dCQUNsQix3QkFBd0I7Z0JBQ3hCLGtCQUFrQjtnQkFDbEIsNkNBQTZDO2dCQUM3Qyw2Q0FBNkM7Z0JBQzdDLDJDQUEyQztnQkFDM0MsbUJBQW1CO2dCQUNuQixvQkFBb0I7Z0JBQ3BCLDRCQUE0QjtnQkFDNUIsWUFBWTtnQkFDWixrQkFBa0I7Z0JBQ2xCLHdCQUF3QjtnQkFDeEIsVUFBVTtnQkFDVixpQkFBaUI7Z0JBQ2pCLFlBQVk7Z0JBQ1oseUJBQXlCO2dCQUN6Qix1QkFBdUI7Z0JBQ3ZCLHVCQUF1QjtnQkFDdkIscUJBQXFCO2dCQUNyQix5Q0FBeUM7Z0JBQ3pDLHVDQUF1QztnQkFDdkMsUUFBUTtnQkFDUixpQkFBaUI7Z0JBQ2pCLDZCQUE2QjtnQkFDN0IsMEJBQTBCO2dCQUMxQixhQUFhO2dCQUNiLHdDQUF3QztnQkFDeEMsdUJBQXVCO2dCQUN2QixxQkFBcUI7Z0JBQ3JCLGlCQUFpQjtnQkFDakIsY0FBYztnQkFDZCxlQUFlO2dCQUNmLGtCQUFrQjtnQkFDbEIsb0JBQW9CO2dCQUNwQixlQUFlO2dCQUNmLHFCQUFxQjtnQkFDckIsa0JBQWtCO2dCQUNsQiwyQkFBMkI7Z0JBQzNCLHNCQUFzQjtnQkFDdEIsb0JBQW9CO2dCQUNwQixrQkFBa0I7Z0JBQ2xCLDBDQUEwQztnQkFDMUMsb0NBQW9DO2dCQUNwQyxxQ0FBcUM7Z0JBQ3JDLHVDQUF1QztnQkFDdkMsb0NBQW9DO2dCQUNwQywyQkFBMkI7Z0JBQzNCLCtCQUErQjtnQkFDL0Isb0NBQW9DO2dCQUNwQyxvQ0FBb0M7Z0JBQ3BDLGtDQUFrQztnQkFDbEMsOEJBQThCO2dCQUM5QixxQkFBcUI7Z0JBQ3JCLDZCQUE2QjtnQkFDN0IsMkJBQTJCO2dCQUMzQixtQkFBbUI7Z0JBQ25CLCtCQUErQjtnQkFDL0IsNkJBQTZCO2dCQUM3Qiw2QkFBNkI7Z0JBQzdCLG1DQUFtQztnQkFDbkMscUNBQXFDO2dCQUNyQyxnQkFBZ0I7Z0JBQ2hCLHlCQUF5QjtnQkFDekIsdUJBQXVCO2dCQUN2QixjQUFjO2dCQUNkLG9CQUFvQjtnQkFDcEIsY0FBYztnQkFDZCxnQkFBZ0I7Z0JBQ2hCLHNCQUFzQjtnQkFDdEIsbUJBQW1CO2dCQUNuQixvQ0FBb0M7Z0JBQ3BDLHVCQUF1QjtnQkFDdkIseUJBQXlCO2dCQUN6QiwwQkFBMEI7Z0JBQzFCLDBCQUEwQjtnQkFDMUIsd0JBQXdCO2dCQUN4Qix1QkFBdUI7Z0JBQ3ZCLHVCQUF1QjtnQkFDdkIsd0JBQXdCO2dCQUN4QiwrQkFBK0I7Z0JBQy9CLHlCQUF5QjtnQkFDekIsc0JBQXNCO2dCQUN0Qiw2QkFBNkI7Z0JBQzdCLGlCQUFpQjtnQkFDakIsZ0JBQWdCO2dCQUNoQiw2QkFBNkI7Z0JBQzdCLG9CQUFvQjtnQkFDcEIsYUFBYTtnQkFDYixrQkFBa0I7Z0JBQ2xCLDRCQUE0QjtnQkFDNUIsb0JBQW9CO2dCQUNwQixvQkFBb0I7Z0JBQ3BCLHVCQUF1QjtnQkFDdkIsaUJBQWlCO2dCQUNqQixzQkFBc0I7Z0JBQ3RCLHVCQUF1QjtnQkFDdkIsdUJBQXVCO2dCQUN2QixpQkFBaUI7Z0JBQ2pCLHdCQUF3QjtnQkFDeEIsYUFBYTtnQkFDYixnQkFBZ0I7Z0JBQ2hCLG1DQUFtQztnQkFDbkMsMEJBQTBCO2dCQUMxQixnREFBZ0Q7Z0JBQ2hELGdCQUFnQjtnQkFDaEIsOEJBQThCO2dCQUM5QixZQUFZO2dCQUNaLGlCQUFpQjtnQkFDakIsY0FBYztnQkFDZCxtQkFBbUI7Z0JBQ25CLCtCQUErQjtnQkFDL0Isa0NBQWtDO2dCQUNsQywyQkFBMkI7Z0JBQzNCLHdCQUF3QjtnQkFDeEIsOEJBQThCO2dCQUM5QixtQkFBbUI7Z0JBQ25CLDhCQUE4QjtnQkFDOUIsNkJBQTZCO2dCQUM3Qix5QkFBeUI7Z0JBQ3pCLHVDQUF1QztnQkFDdkMseUJBQXlCO2dCQUN6QixtQkFBbUI7Z0JBQ25CLG9CQUFvQjtnQkFDcEIsWUFBWTtnQkFDWiwrQkFBK0I7Z0JBQy9CLGtCQUFrQjtnQkFDbEIsY0FBYztnQkFDZCxlQUFlO2dCQUNmLHFCQUFxQjtnQkFDckIsdUJBQXVCO2dCQUN2QixrQkFBa0I7Z0JBQ2xCLGlCQUFpQjtnQkFDakIsb0JBQW9CO2dCQUNwQixrQkFBa0I7Z0JBQ2xCLFlBQVk7Z0JBQ1oscUNBQXFDO2dCQUNyQyxpQkFBaUI7Z0JBQ2pCLHFCQUFxQjtnQkFDckIsaUJBQWlCO2dCQUNqQixzQkFBc0I7Z0JBQ3RCLDZCQUE2QjtnQkFDN0Isc0JBQXNCO2dCQUN0Qiw2QkFBNkI7Z0JBQzdCLFVBQVU7Z0JBQ1YsY0FBYztnQkFDZCx5QkFBeUI7Z0JBQ3pCLGVBQWU7Z0JBQ2YsZ0JBQWdCO2dCQUNoQixnQkFBZ0I7Z0JBQ2hCLG9CQUFvQjtnQkFDcEIsYUFBYTtnQkFDYixhQUFhO2dCQUNiLGdCQUFnQjtnQkFDaEIsZ0JBQWdCO2dCQUNoQixzQkFBc0I7Z0JBQ3RCLDZCQUE2QjtnQkFDN0Isb0JBQW9CO2dCQUNwQixvQkFBb0I7Z0JBQ3BCLG1CQUFtQjtnQkFDbkIsbUJBQW1CO2dCQUNuQixtQkFBbUI7Z0JBQ25CLGlDQUFpQztnQkFDakMscUJBQXFCO2dCQUNyQixtQkFBbUI7Z0JBQ25CLHFCQUFxQjtnQkFDckIsaUJBQWlCO2dCQUNqQixzQkFBc0I7Z0JBQ3RCLG9CQUFvQjtnQkFDcEIsdUJBQXVCO2dCQUN2Qix1QkFBdUI7Z0JBQ3ZCLGtCQUFrQjtnQkFDbEIsbUJBQW1CO2dCQUNuQixpQkFBaUI7Z0JBQ2pCLGdDQUFnQztnQkFDaEMsY0FBYztnQkFDZCxzQkFBc0I7Z0JBQ3RCLDRCQUE0QjtnQkFDNUIsa0JBQWtCO2dCQUNsQixzQkFBc0I7Z0JBQ3RCLGlCQUFpQjtnQkFDakIscUJBQXFCO2dCQUNyQix3QkFBd0I7Z0JBQ3hCLHNCQUFzQjtnQkFDdEIsY0FBYztnQkFDZCxxQkFBcUI7Z0JBQ3JCLDZCQUE2QjthQUM5QjtZQUNELFNBQVMsRUFBRTtnQkFDVCxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDbEMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7YUFDckM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEVBQUU7WUFDdkMsV0FBVyxFQUFFLHdCQUF3QjtZQUNyQyxlQUFlO1lBQ2YsV0FBVyxFQUFFLENBQUMsZUFBZSxFQUFFLG9CQUFvQixDQUFDO1lBQ3BELFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDbEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxXQUFtQixJQUFJO0lBQzNELE9BQU8sSUFBSSw2Q0FBcUIsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDN0UsVUFBVSxDQUFDLHNCQUFzQixFQUFFO1FBQ2xDLFdBQVcsRUFBRSw4QkFBOEI7UUFDM0MsU0FBUyxFQUFFO1lBQ1QsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDbEMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7WUFDcEMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7U0FDdEM7UUFDRCxlQUFlLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDdEIsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDO0tBQ25CLENBQUM7U0FDRCxLQUFLLEVBQUUsQ0FBQztBQUNiLENBQUM7QUFFRCxTQUFnQix1QkFBdUIsQ0FBQyxFQUN0QyxJQUFJLEdBQUcsWUFBWSxFQUNuQixRQUFRLEVBQ1IsZUFBZSxFQUNmLDRCQUE0QixFQUM1Qix3QkFBd0IsR0FTekI7SUFDQyxNQUFNLE9BQU8sR0FBRyxJQUFJLDZDQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDM0UsVUFBVSxDQUFDLEtBQUssRUFBRTtRQUNqQixXQUFXLEVBQUUsMkNBQTJDO1FBQ3hELFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFDM0IsZUFBZTtRQUNmLG9CQUFvQixFQUFFO1lBQ3BCLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsY0FBYztZQUNkLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsZUFBZTtZQUNmLGVBQWU7WUFDZixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGVBQWU7WUFDZixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGVBQWU7WUFDZixlQUFlO1NBQ2hCO1FBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLENBQUM7S0FDM0IsQ0FBQztTQUNELFVBQVUsQ0FBQyxLQUFLLEVBQUU7UUFDakIsV0FBVyxFQUFFLDJDQUEyQztRQUN4RCxlQUFlO1FBQ2YsV0FBVyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLENBQUM7UUFDekcsU0FBUyxFQUFFO1lBQ1QsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7WUFDcEMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7U0FDdEM7S0FDRixDQUFDLENBQUM7SUFFTCxJQUFJLDRCQUE0QixJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDN0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDN0IsV0FBVyxFQUFFLDBDQUEwQztZQUN2RCxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDcEIsZUFBZTtZQUNmLG9CQUFvQixFQUFFLDRCQUE0QjtZQUNsRCxnQkFBZ0IsRUFBRSx3QkFBd0I7U0FDM0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxtREFBbUQ7QUFDbkQsU0FBZ0IsaUJBQWlCLENBQUMsRUFDaEMsSUFBSSxHQUFHLEtBQUssRUFDWixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxVQUFVLEdBUVg7SUFDQyxNQUFNLE9BQU8sR0FBRyxJQUFJLDZDQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsT0FBTzthQUNKLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDakIsV0FBVyxFQUFFLDRFQUE0RTtZQUN6RixXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDcEIsZUFBZSxFQUFFLG1CQUFtQjtZQUNwQyxvQkFBb0IsRUFBRSxDQUFDLGNBQWMsa0JBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xFLGdCQUFnQixFQUFFLENBQUMsTUFBTSxDQUFDO1NBQzNCLENBQUM7YUFDRCxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ2pCLFdBQVcsRUFBRSw0RUFBNEU7WUFDekYsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3BCLGVBQWUsRUFBRSxtQkFBbUI7WUFDcEMsb0JBQW9CLEVBQUUsQ0FBQyxjQUFjLGtCQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsRSxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sQ0FBQztTQUMzQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTztTQUNKLFVBQVUsQ0FBQyxLQUFLLEVBQUU7UUFDakIsV0FBVyxFQUFFLDZDQUE2QztRQUMxRCxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDcEIsZUFBZSxFQUFFLG1CQUFtQjtRQUNwQyw0RUFBNEU7UUFDNUUsb0JBQW9CLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDM0IsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUM7S0FDekIsQ0FBQztTQUNELFVBQVUsQ0FBQyxRQUFRLEVBQUU7UUFDcEIsV0FBVyxFQUFFLDhFQUE4RTtRQUMzRixXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDcEIsZUFBZSxFQUFFLG1CQUFtQjtRQUNwQyw0RUFBNEU7UUFDNUUsb0JBQW9CLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDM0IsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLENBQUM7S0FDMUIsQ0FBQztTQUNELFVBQVUsQ0FBQyxhQUFhLEVBQUU7UUFDekIsV0FBVyxFQUFFLHlGQUF5RjtRQUN0RyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDcEIsZUFBZSxFQUFFLG1CQUFtQjtRQUNwQyxvQkFBb0IsRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUN0QyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssQ0FBQztLQUMxQixDQUFDLENBQUM7SUFFTCxNQUFNLFdBQVcsR0FBMEI7UUFDckMsU0FBUyxrQkFBUSxDQUFDLGlCQUFpQixZQUFZO1FBQy9DLG1CQUFtQjtRQUNuQiwwQkFBMEI7UUFDMUIseUJBQXlCO1FBQ3pCLHNCQUFzQjtRQUN0QiwyQkFBMkI7UUFDM0Isd0JBQXdCO1FBQ3hCLDBCQUEwQjtRQUMxQix3QkFBd0I7UUFDeEIsd0NBQXdDO1FBQ3hDLDRCQUE0QjtRQUM1Qiw0QkFBNEI7UUFDNUIsZ0NBQWdDO1FBQ2hDLG9DQUFvQztRQUNwQyx3QkFBd0I7UUFDeEIsMENBQTBDO1FBQzFDLDRCQUE0QjtRQUM1QixvQ0FBb0M7UUFDcEMsR0FBRyxrQkFBUSxDQUFDLGlCQUFpQixvQ0FBb0M7UUFDakUsV0FBVztRQUNYLGlCQUFpQjtRQUNqQiwyQkFBMkI7UUFDM0IsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtLQUMxQixDQUFDO0lBRU4sSUFBRyxVQUFVLEVBQUMsQ0FBQztRQUNiLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFBLEVBQUUsQ0FBQSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUEsR0FBRyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE9BQU87UUFDTCxLQUFLO1NBQ0osVUFBVSxDQUFDLE1BQU0sRUFBRTtRQUNsQixXQUFXLEVBQUUsOENBQThDO1FBQzNELGVBQWUsRUFBRSxtQkFBbUI7UUFDcEMsV0FBVztRQUNYLFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDbEQsQ0FBQyxDQUFDO0lBRUwsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyJ9
|