@liflig/cdk 3.25.2 → 3.26.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.
@@ -4,30 +4,30 @@ requires-python = ">=3.14"
4
4
 
5
5
  [[package]]
6
6
  name = "boto3"
7
- version = "1.42.89"
7
+ version = "1.42.92"
8
8
  source = { registry = "https://pypi.org/simple" }
9
9
  dependencies = [
10
10
  { name = "botocore" },
11
11
  { name = "jmespath" },
12
12
  { name = "s3transfer" },
13
13
  ]
14
- sdist = { url = "https://files.pythonhosted.org/packages/bb/0c/f7bccb22b245cabf392816baba20f9e95f78ace7dbc580fd40136e80e732/boto3-1.42.89.tar.gz", hash = "sha256:3e43aacc0801bba9bcd23a8c271c089af297a69565f783fcdd357ae0e330bf1e", size = 113165, upload-time = "2026-04-13T19:36:17.516Z" }
14
+ sdist = { url = "https://files.pythonhosted.org/packages/e7/3b/84cafa37e85a57618554bd2bc21bd569417097f45f18c23ef488e6c69683/boto3-1.42.92.tar.gz", hash = "sha256:55ec6ef6fc81f46d567a7d1d398d1e5c375d468905d0ccd9e1f767f0c77dbe9b", size = 113207, upload-time = "2026-04-20T19:38:17.293Z" }
15
15
  wheels = [
16
- { url = "https://files.pythonhosted.org/packages/b9/33/55103ba5ef9975ea54b8d39e69b76eb6e9fded3beae5f01065e26951a3a1/boto3-1.42.89-py3-none-any.whl", hash = "sha256:6204b189f4d0c655535f43d7eaa57ff4e8d965b8463c97e45952291211162932", size = 140556, upload-time = "2026-04-13T19:36:13.894Z" },
16
+ { url = "https://files.pythonhosted.org/packages/8f/8f/350ffd50aaa515429464deb1dc85893a21a64cb41892feb6b22ce87304ad/boto3-1.42.92-py3-none-any.whl", hash = "sha256:c90d9a170faa0585755fa103a3cd9595e1f53443864e902c180f3d8177589125", size = 140555, upload-time = "2026-04-20T19:38:14.323Z" },
17
17
  ]
18
18
 
19
19
  [[package]]
20
20
  name = "botocore"
21
- version = "1.42.89"
21
+ version = "1.42.92"
22
22
  source = { registry = "https://pypi.org/simple" }
23
23
  dependencies = [
24
24
  { name = "jmespath" },
25
25
  { name = "python-dateutil" },
26
26
  { name = "urllib3" },
27
27
  ]
28
- sdist = { url = "https://files.pythonhosted.org/packages/0f/cc/e6be943efa9051bd15c2ee14077c2b10d6e27c9e9385fc43a03a5c4ed8b5/botocore-1.42.89.tar.gz", hash = "sha256:95ac52f472dad29942f3088b278ab493044516c16dbf9133c975af16527baa99", size = 15206290, upload-time = "2026-04-13T19:36:02.321Z" }
28
+ sdist = { url = "https://files.pythonhosted.org/packages/d5/0a/6785ce224ba4483b3e1282d959e1dd2c2898823336f013464c43cb154036/botocore-1.42.92.tar.gz", hash = "sha256:f1193d3057a2d0267353d7ef4e136be37ea432336d097fcb1951fae566ca3a22", size = 15235239, upload-time = "2026-04-20T19:38:05.085Z" }
29
29
  wheels = [
30
- { url = "https://files.pythonhosted.org/packages/91/f1/90a7b8eda38b7c3a65ca7ee0075bdf310b6b471cb1b95fab6e8994323a50/botocore-1.42.89-py3-none-any.whl", hash = "sha256:d9b786c8d9db6473063b4cc5be0ba7e6a381082307bd6afb69d4216f9fa95f35", size = 14887287, upload-time = "2026-04-13T19:35:56.677Z" },
30
+ { url = "https://files.pythonhosted.org/packages/32/b8/41d4d7ba75a4fb4f11362e96371a12695bc6ba0bb7cc680137db0213f97e/botocore-1.42.92-py3-none-any.whl", hash = "sha256:09ddefddbb1565ceef4b44b4b6e61b1ca5f12701d1494ecc85c1133d1b1e81fb", size = 14916275, upload-time = "2026-04-20T19:38:01.684Z" },
31
31
  ]
32
32
 
33
33
  [[package]]
@@ -59,11 +59,11 @@ wheels = [
59
59
 
60
60
  [[package]]
61
61
  name = "packaging"
62
- version = "26.0"
62
+ version = "26.1"
63
63
  source = { registry = "https://pypi.org/simple" }
64
- sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" }
64
+ sdist = { url = "https://files.pythonhosted.org/packages/df/de/0d2b39fb4af88a0258f3bac87dfcbb48e73fbdea4a2ed0e2213f9a4c2f9a/packaging-26.1.tar.gz", hash = "sha256:f042152b681c4bfac5cae2742a55e103d27ab2ec0f3d88037136b6bfe7c9c5de", size = 215519, upload-time = "2026-04-14T21:12:49.362Z" }
65
65
  wheels = [
66
- { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" },
66
+ { url = "https://files.pythonhosted.org/packages/7a/c2/920ef838e2f0028c8262f16101ec09ebd5969864e5a64c4c05fad0617c56/packaging-26.1-py3-none-any.whl", hash = "sha256:5d9c0669c6285e491e0ced2eee587eaf67b670d94a19e94e3984a481aba6802f", size = 95831, upload-time = "2026-04-14T21:12:47.56Z" },
67
67
  ]
68
68
 
69
69
  [[package]]
@@ -120,6 +120,33 @@ export interface DatabaseProps extends cdk.StackProps {
120
120
  * @default false
121
121
  */
122
122
  usePublicSubnets?: boolean;
123
+ /**
124
+ * Weekly maintenance window in UTC, format `ddd:hh:mm-ddd:hh:mm`.
125
+ * Minimum 30 minutes; must not overlap `preferredBackupWindow`.
126
+ *
127
+ * @default AWS-assigned
128
+ * @example "sun:03:00-sun:04:00"
129
+ */
130
+ preferredMaintenanceWindow?: string;
131
+ /**
132
+ * Daily backup window in UTC, format `hh:mm-hh:mm`.
133
+ * Minimum 30 minutes; must not overlap `preferredMaintenanceWindow`.
134
+ *
135
+ * @default AWS-assigned
136
+ * @example "01:00-02:00"
137
+ */
138
+ preferredBackupWindow?: string;
139
+ /**
140
+ * Whether AWS automatically applies minor engine version upgrades
141
+ * during the maintenance window.
142
+ *
143
+ * @default AWS default (true)
144
+ */
145
+ autoMinorVersionUpgrade?: boolean;
146
+ /**
147
+ * Escape hatch for RDS option combinations the construct doesn't expose
148
+ * directly. Overrides any value set via the typed props above.
149
+ */
123
150
  overrideDbOptions?: Partial<rds.DatabaseInstanceSourceProps>;
124
151
  /**
125
152
  * Configure database alarms.
@@ -3,6 +3,7 @@ import * as ec2 from "aws-cdk-lib/aws-ec2";
3
3
  import * as rds from "aws-cdk-lib/aws-rds";
4
4
  import * as constructs from "constructs";
5
5
  import { DatabaseAlarms } from "../alarms";
6
+ import { overlaps, parseBackupWindow, parseMaintenanceWindow } from "./windows";
6
7
  export class Database extends constructs.Construct {
7
8
  secret;
8
9
  connections;
@@ -16,9 +17,37 @@ export class Database extends constructs.Construct {
16
17
  const secret = new rds.DatabaseSecret(this, "Secret", {
17
18
  username: masterUsername,
18
19
  });
20
+ const preferredMaintenanceWindow = props.overrideDbOptions?.preferredMaintenanceWindow ??
21
+ props.preferredMaintenanceWindow;
22
+ const preferredBackupWindow = props.overrideDbOptions?.preferredBackupWindow ??
23
+ props.preferredBackupWindow;
24
+ if (preferredMaintenanceWindow !== undefined &&
25
+ preferredBackupWindow !== undefined) {
26
+ const mw = parseMaintenanceWindow(preferredMaintenanceWindow);
27
+ const bw = parseBackupWindow(preferredBackupWindow);
28
+ if (overlaps(mw, bw)) {
29
+ throw new Error(`preferredBackupWindow "${preferredBackupWindow}" overlaps ` +
30
+ `preferredMaintenanceWindow "${preferredMaintenanceWindow}". ` +
31
+ "AWS requires these windows to be disjoint.");
32
+ }
33
+ }
34
+ else if (preferredMaintenanceWindow !== undefined) {
35
+ parseMaintenanceWindow(preferredMaintenanceWindow);
36
+ }
37
+ else if (preferredBackupWindow !== undefined) {
38
+ parseBackupWindow(preferredBackupWindow);
39
+ }
40
+ warnOnPinnedMinorWithAutoUpgrade(this, props.engine,
41
+ // AWS default is true.
42
+ props.overrideDbOptions?.autoMinorVersionUpgrade ??
43
+ props.autoMinorVersionUpgrade ??
44
+ true);
19
45
  const options = {
20
46
  engine: props.engine,
21
47
  allowMajorVersionUpgrade: true,
48
+ autoMinorVersionUpgrade: props.autoMinorVersionUpgrade,
49
+ preferredMaintenanceWindow: props.preferredMaintenanceWindow,
50
+ preferredBackupWindow: props.preferredBackupWindow,
22
51
  instanceIdentifier: props.instanceIdentifier,
23
52
  instanceType: props.instanceType,
24
53
  vpc: props.vpc,
@@ -98,4 +127,16 @@ export class Database extends constructs.Construct {
98
127
  this.connections.allowDefaultPortFrom(source);
99
128
  }
100
129
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmRzL2RhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFBO0FBRWxDLE9BQU8sS0FBSyxHQUFHLE1BQU0scUJBQXFCLENBQUE7QUFDMUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUUxQyxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBdUkxQyxNQUFNLE9BQU8sUUFBUyxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ2hDLE1BQU0sQ0FBWTtJQUNsQixXQUFXLENBQWlCO0lBQzVCLGdCQUFnQixDQUF1QjtJQUN2QyxZQUFZLENBQWtCO0lBQzlCLGdCQUFnQixDQUFVO0lBRTFDLFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxJQUFJLFFBQVEsQ0FBQTtRQUN2RCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQTtRQUVoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNwRCxRQUFRLEVBQUUsY0FBYztTQUN6QixDQUFDLENBQUE7UUFFRixNQUFNLE9BQU8sR0FBb0M7WUFDL0MsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLHdCQUF3QixFQUFFLElBQUk7WUFDOUIsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtZQUM1QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2QsVUFBVSxFQUFF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O1lBQ0osQ0FBQztZQUVELElBQUksTUFBTSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDakQsUUFBUSxDQUFDLHFCQUFxQixDQUFDO29CQUM3QixHQUFHLE1BQU0sQ0FBQyxrQkFBa0I7aUJBQzdCLENBQUMsQ0FBQTtZQUNKLENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ2xELFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDOUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxNQUFNO29CQUMxQyxTQUFTLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLFNBQVM7b0JBQ2hELGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUI7b0JBQ2hFLE1BQU0sRUFBRSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsTUFBTTtvQkFDMUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxhQUFhO29CQUN4RCx3QkFBd0IsRUFDdEIsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHdCQUF3QjtpQkFDdkQsQ0FBQyxDQUFBO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsTUFBMEI7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCB0eXBlICogYXMgY2xvdWR3YXRjaCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIlxuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCJcbmltcG9ydCAqIGFzIHJkcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJkc1wiXG5pbXBvcnQgdHlwZSAqIGFzIHNtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIlxuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgeyBEYXRhYmFzZUFsYXJtcyB9IGZyb20gXCIuLi9hbGFybXNcIlxuXG4vKipcbiAqIENvbmZpZ3VyZSBkYXRhYmFzZSBhbGFybXMuXG4gKlxuICogQWxhcm1zIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQgKHdoZW4geW91IHN1cHBseSBhbiBgYWxhcm1BY3Rpb25gIGFuZFxuICogYHdhcm5pbmdBY3Rpb25gKS4gVG8gZXhwbGljaXRseSBkaXNhYmxlIGF1dG9tYXRpYyBhbGFybXMgdXNlXG4gKiBgeyBlbmFibGVkOiBmYWxzZSB9YC5cbiAqL1xuZXhwb3J0IHR5cGUgRGF0YWJhc2VBbGFybXNDb25maWcgPVxuICB8IHsgZW5hYmxlZDogZmFsc2UgfVxuICB8IHtcbiAgICAgIC8qKlxuICAgICAgICogV2hlbiBhbGFybXMgYXJlIGVuYWJsZWQsIGJvdGggYWN0aW9ucyBhcmUgcmVxdWlyZWQuXG4gICAgICAgKi9cbiAgICAgIGFsYXJtQWN0aW9uOiBjbG91ZHdhdGNoLklBbGFybUFjdGlvblxuICAgICAgd2FybmluZ0FjdGlvbjogY2xvdWR3YXRjaC5JQWxhcm1BY3Rpb25cblxuICAgICAgLyoqXG4gICAgICAgKiBDUFUgY3JlZGl0cyBhbGFybSBjb25maWdcbiAgICAgICAqL1xuICAgICAgY3B1Q3JlZGl0c0FsYXJtPzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlZmF1bHQgdHJ1ZSBpZiBpbnN0YW5jZSB0eXBlIGlzIGJ1cnN0YWJsZVxuICAgICAgICAgKi9cbiAgICAgICAgZW5hYmxlZD86IGJvb2xlYW5cbiAgICAgICAgLyoqIFdoZXRoZXIgdG8gYXR0YWNoIE9LIGFjdGlvbnMgZm9yIHRoaXMgYWxhcm0uIEBkZWZhdWx0IHRydWUgKi9cbiAgICAgICAgZW5hYmxlT2tBbGFybT86IGJvb2xlYW5cbiAgICAgICAgYWN0aW9uPzogY2xvdWR3YXRjaC5JQWxhcm1BY3Rpb25cbiAgICAgICAgLyoqIEBkZWZhdWx0IDEwJSBvZiBtYXhpbXVtIGVhcm5lZCBjcmVkaXRzIGZvciBpbnN0YW5jZSB0eXBlICovXG4gICAgICAgIHRocmVzaG9sZD86IG51bWJlclxuICAgICAgICBhcHBlbmRUb0FsYXJtRGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBTdG9yYWdlIHNwYWNlIGFsYXJtIG92ZXJyaWRlc1xuICAgICAgICovXG4gICAgICBzdG9yYWdlU3BhY2VBbGFybXM/OiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIGFsbCBzdG9yYWdlIHNwYWNlIGFsYXJtcyAoYm90aCBsb3cgYW5kIGNyaXRpY2FsbHkgbG93KS5cbiAgICAgICAgICogSW5kaXZpZHVhbCBhbGFybXMgY2FuIHN0aWxsIGJlIGRpc2FibGVkIGV2ZW4gd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgICAgICovXG4gICAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICAgIGxvd1N0b3JhZ2VTcGFjZUFsYXJtPzoge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIFNldCB0byBgZmFsc2VgIHRvIGRpc2FibGUgdGhlIGxvdyBzdG9yYWdlIHNwYWNlIGFsYXJtLlxuICAgICAgICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmFibGVkPzogYm9vbGVhblxuICAgICAgICAgIGFjdGlvbj86IGNsb3Vkd2F0Y2guSUFsYXJtQWN0aW9uXG4gICAgICAgICAgLyoqIFdoZXRoZXIgdG8gYXR0YWNoIE9LIGFjdGlvbnMgZm9yIHRoaXMgYWxhcm0uIEBkZWZhdWx0IHRydWUgKi9cbiAgICAgICAgICBlbmFibGVPa0FsYXJtPzogYm9vbGVhblxuICAgICAgICAgIC8qKiBAZGVmYXVsdCAyNSUgb2YgYWxsb2NhdGVkIHN0b3JhZ2UgKi9cbiAgICAgICAgICB0aHJlc2hvbGQ/OiBjZGsuU2l6ZVxuICAgICAgICB9XG4gICAgICAgIGNyaXRpY2FsbHlMb3dTdG9yYWdlU3BhY2VBbGFybT86IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoZSBjcml0aWNhbGx5IGxvdyBzdG9yYWdlIHNwYWNlIGFsYXJtLlxuICAgICAgICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBlbmFibGVkPzogYm9vbGVhblxuICAgICAgICAgIGFjdGlvbj86IGNsb3Vkd2F0Y2guSUFsYXJtQWN0aW9uXG4gICAgICAgICAgLyoqIFdoZXRoZXIgdG8gYXR0YWNoIE9LIGFjdGlvbnMgZm9yIHRoaXMgYWxhcm0uIEBkZWZhdWx0IHRydWUgKi9cbiAgICAgICAgICBlbmFibGVPa0FsYXJtPzogYm9vbGVhblxuICAgICAgICAgIC8qKiBAZGVmYXVsdCA1JSBvZiBhbGxvY2F0ZWQgc3RvcmFnZSAqL1xuICAgICAgICAgIHRocmVzaG9sZD86IGNkay5TaXplXG4gICAgICAgIH1cbiAgICAgICAgYXBwZW5kVG9BbGFybURlc2NyaXB0aW9uPzogc3RyaW5nXG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogQ1BVIHV0aWxpemF0aW9uIGFsYXJtIG92ZXJyaWRlcy5cbiAgICAgICAqL1xuICAgICAgY3B1VXRpbGl6YXRpb25BbGFybT86IHtcbiAgICAgICAgZW5hYmxlZD86IGJvb2xlYW5cbiAgICAgICAgLyoqIFdoZXRoZXIgdG8gYXR0YWNoIE9LIGFjdGlvbnMgZm9yIHRoaXMgYWxhcm0uIEBkZWZhdWx0IHRydWUgKi9cbiAgICAgICAgZW5hYmxlT2tBbGFybT86IGJvb2xlYW5cbiAgICAgICAgYWN0aW9uPzogY2xvdWR3YXRjaC5JQWxhcm1BY3Rpb25cbiAgICAgICAgLyoqIEBkZWZhdWx0IDgwICovXG4gICAgICAgIHRocmVzaG9sZD86IG51bWJlclxuICAgICAgICAvKiogQGRlZmF1bHQgNSAqL1xuICAgICAgICBldmFsdWF0aW9uUGVyaW9kcz86IG51bWJlclxuICAgICAgICAvKiogQGRlZmF1bHQgMiBtaW51dGVzICovXG4gICAgICAgIHBlcmlvZD86IGNkay5EdXJhdGlvblxuICAgICAgICBhcHBlbmRUb0FsYXJtRGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICAgIH1cbiAgICB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VQcm9wcyBleHRlbmRzIGNkay5TdGFja1Byb3BzIHtcbiAgdnBjOiBlYzIuSVZwY1xuICBlbmdpbmU6IHJkcy5JSW5zdGFuY2VFbmdpbmVcbiAgLyoqXG4gICAqIEBkZWZhdWx0IG1hc3RlclxuICAgKi9cbiAgbWFzdGVyVXNlcm5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZWZhdWx0IGFwcFxuICAgKi9cbiAgZGF0YWJhc2VOYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAyNVxuICAgKi9cbiAgYWxsb2NhdGVkU3RvcmFnZUdiPzogbnVtYmVyXG4gIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZVxuICBpbnN0YW5jZUlkZW50aWZpZXI6IHN0cmluZ1xuICAvKipcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaXNNdWx0aUF6PzogYm9vbGVhblxuICAvKipcbiAgICogTXVzdCBub3QgYmUgcmVtb3ZlZCBvbmNlIGl0IGhhcyBiZWVuIHNldCwgYXMgY2hhbmdpbmcgdGhpc1xuICAgKiByZXN1bHRzIGluIGEgbmV3IERCIGluc3RhbmNlIGJlaW5nIGNyZWF0ZWQuXG4gICAqXG4gICAqIEFsc28sIHJlbWVtYmVyIHRvIGdpdmUgZGF0YWJhc2UgYSBuZXcgbmFtZSB3aGVuIGNoYW5naW5nIHRoaXMgcHJvcCwgb3IgZWxzZVxuICAgKiB0aGUgbmV3IGluc3RhbmNlIG5hbWUgd2lsbCBjcmFzaCB3aXRoIHRoZSBleGlzdGluZyBpbnN0YW5jZS5cbiAgICovXG4gIHNuYXBzaG90SWRlbnRpZmllcj86IHN0cmluZ1xuICAvKipcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHVzZVB1YmxpY1N1Ym5ldHM/OiBib29sZWFuXG4gIG92ZXJyaWRlRGJPcHRpb25zPzogUGFydGlhbDxyZHMuRGF0YWJhc2VJbnN0YW5jZVNvdXJjZVByb3BzPlxuICAvKipcbiAgICogQ29uZmlndXJlIGRhdGFiYXNlIGFsYXJtcy5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBvbmUgb2YgdHdvIHNoYXBlczpcbiAgICogIC0gYHsgZW5hYmxlZDogZmFsc2UgfWAgdG8gZXhwbGljaXRseSBkaXNhYmxlIGF1dG9tYXRpYyBhbGFybXNcbiAgICogIC0gYHsgYWxhcm1BY3Rpb24sIHdhcm5pbmdBY3Rpb24gfWAgdG8gZW5hYmxlIGFsYXJtcyBhbmQgcHJvdmlkZSBib3RoIGNoYW5uZWxzXG4gICAqXG4gICAqIERlZmF1bHQ6IGVuYWJsZWQuXG4gICAqL1xuICBhbGFybXM6IERhdGFiYXNlQWxhcm1zQ29uZmlnXG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3JldDogc20uSVNlY3JldFxuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9uc1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0YWJhc2VJbnN0YW5jZTogcmRzLklEYXRhYmFzZUluc3RhbmNlXG4gIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGVcbiAgcHVibGljIHJlYWRvbmx5IGFsbG9jYXRlZFN0b3JhZ2U6IGNkay5TaXplXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWJhc2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IG1hc3RlclVzZXJuYW1lID0gcHJvcHMubWFzdGVyVXNlcm5hbWUgPz8gXCJtYXN0ZXJcIlxuICAgIGNvbnN0IGRhdGFiYXNlTmFtZSA9IHByb3BzLmRhdGFiYXNlTmFtZSA/PyBcImFwcFwiXG5cbiAgICBjb25zdCBzZWNyZXQgPSBuZXcgcmRzLkRhdGFiYXNlU2VjcmV0KHRoaXMsIFwiU2VjcmV0XCIsIHtcbiAgICAgIHVzZXJuYW1lOiBtYXN0ZXJVc2VybmFtZSxcbiAgICB9KVxuXG4gICAgY29uc3Qgb3B0aW9uczogcmRzLkRhdGFiYXNlSW5zdGFuY2VTb3VyY2VQcm9wcyA9IHtcbiAgICAgIGVuZ2luZTogcHJvcHMuZW5naW5lLFxuICAgICAgYWxsb3dNYWpvclZlcnNpb25VcGdyYWRlOiB0cnVlLFxuICAgICAgaW5zdGFuY2VJZGVudGlmaWVyOiBwcm9wcy5pbnN0YW5jZUlkZW50aWZpZXIsXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZSxcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgdnBjU3VibmV0czogcHJvcHMudXNlUHVibGljU3VibmV0c1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBVQkxJQyxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgbXVsdGlBejogcHJvcHMuaXNNdWx0aUF6ID8/IHRydWUsXG4gICAgICAvLyBXZSBkZWZhdWx0IHRvIDI1IEdpQiBzdG9yYWdlIGluc3RlYWQgb2YgMTAwIEdpQlxuICAgICAgLy8gaWYgd2UgZG8gbm90IHNwZWNpZnkuXG4gICAgICBhbGxvY2F0ZWRTdG9yYWdlOiBwcm9wcy5hbGxvY2F0ZWRTdG9yYWdlR2IgPz8gMjUsXG4gICAgICAvLyBXZSBzcGVjaWZ5IG1heGltdW0gYmFja3VwIHJldGVudGlvbi5cbiAgICAgIGJhY2t1cFJldGVudGlvbjogY2RrLkR1cmF0aW9uLmRheXMoMzUpLFxuICAgICAgLi4ucHJvcHMub3ZlcnJpZGVEYk9wdGlvbnMsXG4gICAgfVxuICAgIHRoaXMuYWxsb2NhdGVkU3RvcmFnZSA9IGNkay5TaXplLmdpYmlieXRlcyhvcHRpb25zLmFsbG9jYXRlZFN0b3JhZ2UhKVxuICAgIHRoaXMuaW5zdGFuY2VUeXBlID0gb3B0aW9ucy5pbnN0YW5jZVR5cGUhXG5cbiAgICBjb25zdCBkYiA9IHByb3BzLnNuYXBzaG90SWRlbnRpZmllclxuICAgICAgPyBuZXcgcmRzLkRhdGFiYXNlSW5zdGFuY2VGcm9tU25hcHNob3QodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICBzbmFwc2hvdElkZW50aWZpZXI6IHByb3BzLnNuYXBzaG90SWRlbnRpZmllcixcbiAgICAgICAgICBjcmVkZW50aWFsczogcmRzLlNuYXBzaG90Q3JlZGVudGlhbHMuZnJvbVNlY3JldChzZWNyZXQpLFxuICAgICAgICB9KVxuICAgICAgOiBuZXcgcmRzLkRhdGFiYXNlSW5zdGFuY2UodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICBkYXRhYmFzZU5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbHM6IHJkcy5DcmVkZW50aWFscy5mcm9tU2VjcmV0KHNlY3JldCksXG4gICAgICAgICAgc3RvcmFnZUVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgICAgfSlcblxuICAgIHRoaXMuZGF0YWJhc2VJbnN0YW5jZSA9IGRiXG5cbiAgICB0aGlzLnNlY3JldCA9IGRiLnNlY3JldCFcbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gZGIuY29ubmVjdGlvbnNcblxuICAgIC8vIE92ZXJyaWRlIGluIGNhc2Ugd2UgaGF2ZSBwbGFjZWQgaXQgaW4gYSBwdWJsaWMgc3VibmV0LlxuICAgIC8vIEl0IHdvdWxkIGRlZmF1bHQgdG8gYmVpbmcgcHVibGljIGFjY2Vzc2libGUgd2hpY2ggd2UgZG8gbm90IHdhbnQuXG4gICAgOyhkYi5ub2RlLmRlZmF1bHRDaGlsZCBhcyByZHMuQ2ZuREJJbnN0YW5jZSkucHVibGljbHlBY2Nlc3NpYmxlID0gZmFsc2VcblxuICAgIGlmIChcImFsYXJtQWN0aW9uXCIgaW4gcHJvcHMuYWxhcm1zKSB7XG4gICAgICBjb25zdCBhbGFybXMgPSBwcm9wcy5hbGFybXNcblxuICAgICAgY29uc3QgZGJBbGFybXMgPSBuZXcgRGF0YWJhc2VBbGFybXModGhpcywgXCJBbGFybXNcIiwge1xuICAgICAgICBpbnN0YW5jZUlkZW50aWZpZXI6IHByb3BzLmluc3RhbmNlSWRlbnRpZmllcixcbiAgICAgICAgaW5zdGFuY2VUeXBlOiBwcm9wcy5pbnN0YW5jZVR5cGUsXG4gICAgICAgIGFsbG9jYXRlZFN0b3JhZ2U6IGNkay5TaXplLmdpYmlieXRlcyhvcHRpb25zLmFsbG9jYXRlZFN0b3JhZ2UhKSxcbiAgICAgICAgYWxhcm1BY3Rpb246IGFsYXJtcy5hbGFybUFjdGlvbixcbiAgICAgICAgd2FybmluZ0FjdGlvbjogYWxhcm1zLndhcm5pbmdBY3Rpb24sXG4gICAgICB9KVxuXG4gICAgICAvLyBEZWZhdWx0IG1hcHBpbmc6XG4gICAgICAvLyAtIGxvdyBDUFUgY3JlZGl0cyAtPiBhbGFybVxuICAgICAgLy8gLSBjcml0aWNhbGx5IGxvdyBzdG9yYWdlIC0+IGFsYXJtXG4gICAgICAvLyAtIGxvdyBzdG9yYWdlIC0+IHdhcm5pbmdcbiAgICAgIC8vIC0gaGlnaCBDUFUgdXRpbGl6YXRpb24gLT4gd2FybmluZ1xuICAgICAgLy8gT25seSBjcmVhdGUgdGhlIENQVSBjcmVkaXRzIGFsYXJtIGlmIHRoZSBpbnN0YW5jZSB0eXBlIGlzIGJ1cnN0YWJsZS5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5pbnN0YW5jZVR5cGUuaXNCdXJzdGFibGUoKSAmJlxuICAgICAgICBhbGFybXMuY3B1Q3JlZGl0c0FsYXJtPy5lbmFibGVkICE9PSBmYWxzZVxuICAgICAgKSB7XG4gICAgICAgIGRiQWxhcm1zLmFkZENwdUNyZWRpdHNBbGFybSh7XG4gICAgICAgICAgYWN0aW9uOiBhbGFybXMuY3B1Q3JlZGl0c0FsYXJtPy5hY3Rpb24sXG4gICAgICAgICAgdGhyZXNob2xkOiBhbGFybXMuY3B1Q3JlZGl0c0FsYXJtPy50aHJlc2hvbGQsXG4gICAgICAgICAgZW5hYmxlT2tBbGFybTogYWxhcm1zLmNwdUNyZWRpdHNBbGFybT8uZW5hYmxlT2tBbGFybSxcbiAgICAgICAgICBhcHBlbmRUb0FsYXJtRGVzY3JpcHRpb246XG4gICAgICAgICAgICBhbGFybXMuY3B1Q3JlZGl0c0FsYXJtPy5hcHBlbmRUb0FsYXJtRGVzY3JpcHRpb24sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChhbGFybXMuc3RvcmFnZVNwYWNlQWxhcm1zPy5lbmFibGVkICE9PSBmYWxzZSkge1xuICAgICAgICBkYkFsYXJtcy5hZGRTdG9yYWdlU3BhY2VBbGFybXMoe1xuICAgICAgICAgIC4uLmFsYXJtcy5zdG9yYWdlU3BhY2VBbGFybXMsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChhbGFybXMuY3B1VXRpbGl6YXRpb25BbGFybT8uZW5hYmxlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgZGJBbGFybXMuYWRkQ3B1VXRpbGl6YXRpb25BbGFybSh7XG4gICAgICAgICAgYWN0aW9uOiBhbGFybXMuY3B1VXRpbGl6YXRpb25BbGFybT8uYWN0aW9uLFxuICAgICAgICAgIHRocmVzaG9sZDogYWxhcm1zLmNwdVV0aWxpemF0aW9uQWxhcm0/LnRocmVzaG9sZCxcbiAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogYWxhcm1zLmNwdVV0aWxpemF0aW9uQWxhcm0/LmV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICAgIHBlcmlvZDogYWxhcm1zLmNwdVV0aWxpemF0aW9uQWxhcm0/LnBlcmlvZCxcbiAgICAgICAgICBlbmFibGVPa0FsYXJtOiBhbGFybXMuY3B1VXRpbGl6YXRpb25BbGFybT8uZW5hYmxlT2tBbGFybSxcbiAgICAgICAgICBhcHBlbmRUb0FsYXJtRGVzY3JpcHRpb246XG4gICAgICAgICAgICBhbGFybXMuY3B1VXRpbGl6YXRpb25BbGFybT8uYXBwZW5kVG9BbGFybURlc2NyaXB0aW9uLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhbGxvd0Nvbm5lY3Rpb25Gcm9tKHNvdXJjZTogZWMyLklTZWN1cml0eUdyb3VwKTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0RnJvbShzb3VyY2UpXG4gIH1cbn1cbiJdfQ==
130
+ function warnOnPinnedMinorWithAutoUpgrade(scope, engine, autoMinorVersionUpgrade) {
131
+ if (!autoMinorVersionUpgrade)
132
+ return;
133
+ const version = engine.engineVersion;
134
+ if (!version)
135
+ return;
136
+ if (version.fullVersion === version.majorVersion)
137
+ return;
138
+ cdk.Annotations.of(scope).addWarning(`Engine version "${version.fullVersion}" pins a specific minor, but autoMinorVersionUpgrade is true. ` +
139
+ "AWS may upgrade past this pin during the maintenance window. " +
140
+ "Either use a major-only version (e.g. PostgresEngineVersion.VER_17) or set autoMinorVersionUpgrade to false.");
141
+ }
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmRzL2RhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFBO0FBRWxDLE9BQU8sS0FBSyxHQUFHLE1BQU0scUJBQXFCLENBQUE7QUFDMUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUUxQyxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFrSy9FLE1BQU0sT0FBTyxRQUFTLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDaEMsTUFBTSxDQUFZO0lBQ2xCLFdBQVcsQ0FBaUI7SUFDNUIsZ0JBQWdCLENBQXVCO0lBQ3ZDLFlBQVksQ0FBa0I7SUFDOUIsZ0JBQWdCLENBQVU7SUFFMUMsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLElBQUksUUFBUSxDQUFBO1FBQ3ZELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFBO1FBRWhELE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ3BELFFBQVEsRUFBRSxjQUFjO1NBQ3pCLENBQUMsQ0FBQTtRQUVGLE1BQU0sMEJBQTBCLEdBQzlCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSwwQkFBMEI7WUFDbkQsS0FBSyxDQUFDLDBCQUEwQixDQUFBO1FBQ2xDLE1BQU0scUJBQXFCLEdBQ3pCLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxxQkFBcUI7WUFDOUMsS0FBSyxDQUFDLHFCQUFxQixDQUFBO1FBRTdCLElBQ0UsMEJBQTBCLEtBQUssU0FBUztZQUN4QyxxQkFBcUIsS0FBSyxTQUFTLEVBQ25DLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO1lBQzdELE1BQU0sRUFBRSxHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUE7WUFDbkQsSUFBSSxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQ2IsMEJBQTBCLHFCQUFxQixhQUFhO29CQUMxRCwrQkFBK0IsMEJBQTBCLEtBQUs7b0JBQzlELDRDQUE0QyxDQUMvQyxDQUFBO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLDBCQUEwQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BELHNCQUFzQixDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDcEQsQ0FBQzthQUFNLElBQUkscUJBQXFCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0MsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQTtRQUMxQyxDQUFDO1FBRUQsZ0NBQWdDLENBQzlCLElBQUksRUFDSixLQUFLLENBQUMsTUFBTTtRQUNaLHVCQUF1QjtRQUN2QixLQUFLLENBQUMsaUJBQWlCLEVBQUUsdUJBQXVCO1lBQzlDLEtBQUssQ0FBQyx1QkFBdUI7WUFDN0IsSUFBSSxDQUNQLENBQUE7UUFFRCxNQUFNLE9BQU8sR0FBb0M7WUFDL0MsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLHdCQUF3QixFQUFFLElBQUk7WUFDOUIsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLHVCQUF1QjtZQUN0RCwwQkFBMEIsRUFBRSxLQUFLLENBQUMsMEJBQTBCO1lBQzVELHFCQUFxQixFQUFFLEtBQUssQ0FBQyxxQkFBcUI7WUFDbEQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtZQUM1QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2QsVUFBVSxFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7Z0JBQ2hDLENBQUMsQ0FBQztvQkFDRSxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNO2lCQUNsQztnQkFDSCxDQUFDLENBQUMsU0FBUztZQUNiLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUk7WUFDaEMsa0RBQWtEO1lBQ2xELHdCQUF3QjtZQUN4QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLElBQUksRUFBRTtZQUNoRCx1Q0FBdUM7WUFDdkMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxHQUFHLEtBQUssQ0FBQyxpQkFBaUI7U0FDM0IsQ0FBQTtRQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWlCLENBQUMsQ0FBQTtRQUNyRSxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFhLENBQUE7UUFFekMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLGtCQUFrQjtZQUNqQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDckQsR0FBRyxPQUFPO2dCQUNWLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7Z0JBQzVDLFdBQVcsRUFBRSxHQUFHLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQzthQUN4RCxDQUFDO1lBQ0osQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3pDLEdBQUcsT0FBTztnQkFDVixZQUFZO2dCQUNaLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQy9DLGdCQUFnQixFQUFFLElBQUk7YUFDdkIsQ0FBQyxDQUFBO1FBRU4sSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUUxQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFPLENBQUE7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUloQztRQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBa0MsQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUE7UUFFdkUsSUFBSSxhQUFhLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7WUFFM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQkFDbEQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtnQkFDNUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2dCQUNoQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWlCLENBQUM7Z0JBQy9ELFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztnQkFDL0IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO2FBQ3BDLENBQUMsQ0FBQTtZQUVGLG1CQUFtQjtZQUNuQiw2QkFBNkI7WUFDN0Isb0NBQW9DO1lBQ3BDLDJCQUEyQjtZQUMzQixvQ0FBb0M7WUFDcEMsdUVBQXVFO1lBQ3ZFLElBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUU7Z0JBQy9CLE1BQU0sQ0FBQyxlQUFlLEVBQUUsT0FBTyxLQUFLLEtBQUssRUFDekMsQ0FBQztnQkFDRCxRQUFRLENBQUMsa0JBQWtCLENBQUM7b0JBQzFCLE1BQU0sRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLE1BQU07b0JBQ3RDLFNBQVMsRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLFNBQVM7b0JBQzVDLGFBQWEsRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLGFBQWE7b0JBQ3BELHdCQUF3QixFQUN0QixNQUFNLENBQUMsZUFBZSxFQUFFLHdCQUF3QjtpQkFDbkQsQ0FBQyxDQUFBO1lBQ0osQ0FBQztZQUVELElBQUksTUFBTSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDakQsUUFBUSxDQUFDLHFCQUFxQixDQUFDO29CQUM3QixHQUFHLE1BQU0sQ0FBQyxrQkFBa0I7aUJBQzdCLENBQUMsQ0FBQTtZQUNKLENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ2xELFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDOUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxNQUFNO29CQUMxQyxTQUFTLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLFNBQVM7b0JBQ2hELGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUI7b0JBQ2hFLE1BQU0sRUFBRSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsTUFBTTtvQkFDMUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxhQUFhO29CQUN4RCx3QkFBd0IsRUFDdEIsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHdCQUF3QjtpQkFDdkQsQ0FBQyxDQUFBO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsTUFBMEI7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0NBQ0Y7QUFFRCxTQUFTLGdDQUFnQyxDQUN2QyxLQUEyQixFQUMzQixNQUEyQixFQUMzQix1QkFBZ0M7SUFFaEMsSUFBSSxDQUFDLHVCQUF1QjtRQUFFLE9BQU07SUFDcEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQTtJQUNwQyxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU07SUFDcEIsSUFBSSxPQUFPLENBQUMsV0FBVyxLQUFLLE9BQU8sQ0FBQyxZQUFZO1FBQUUsT0FBTTtJQUN4RCxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQ2xDLG1CQUFtQixPQUFPLENBQUMsV0FBVyxnRUFBZ0U7UUFDcEcsK0RBQStEO1FBQy9ELDhHQUE4RyxDQUNqSCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0IHR5cGUgKiBhcyBjbG91ZHdhdGNoIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiXG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIlxuaW1wb3J0ICogYXMgcmRzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtcmRzXCJcbmltcG9ydCB0eXBlICogYXMgc20gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlclwiXG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCB7IERhdGFiYXNlQWxhcm1zIH0gZnJvbSBcIi4uL2FsYXJtc1wiXG5pbXBvcnQgeyBvdmVybGFwcywgcGFyc2VCYWNrdXBXaW5kb3csIHBhcnNlTWFpbnRlbmFuY2VXaW5kb3cgfSBmcm9tIFwiLi93aW5kb3dzXCJcblxuLyoqXG4gKiBDb25maWd1cmUgZGF0YWJhc2UgYWxhcm1zLlxuICpcbiAqIEFsYXJtcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0ICh3aGVuIHlvdSBzdXBwbHkgYW4gYGFsYXJtQWN0aW9uYCBhbmRcbiAqIGB3YXJuaW5nQWN0aW9uYCkuIFRvIGV4cGxpY2l0bHkgZGlzYWJsZSBhdXRvbWF0aWMgYWxhcm1zIHVzZVxuICogYHsgZW5hYmxlZDogZmFsc2UgfWAuXG4gKi9cbmV4cG9ydCB0eXBlIERhdGFiYXNlQWxhcm1zQ29uZmlnID1cbiAgfCB7IGVuYWJsZWQ6IGZhbHNlIH1cbiAgfCB7XG4gICAgICAvKipcbiAgICAgICAqIFdoZW4gYWxhcm1zIGFyZSBlbmFibGVkLCBib3RoIGFjdGlvbnMgYXJlIHJlcXVpcmVkLlxuICAgICAgICovXG4gICAgICBhbGFybUFjdGlvbjogY2xvdWR3YXRjaC5JQWxhcm1BY3Rpb25cbiAgICAgIHdhcm5pbmdBY3Rpb246IGNsb3Vkd2F0Y2guSUFsYXJtQWN0aW9uXG5cbiAgICAgIC8qKlxuICAgICAgICogQ1BVIGNyZWRpdHMgYWxhcm0gY29uZmlnXG4gICAgICAgKi9cbiAgICAgIGNwdUNyZWRpdHNBbGFybT86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZWZhdWx0IHRydWUgaWYgaW5zdGFuY2UgdHlwZSBpcyBidXJzdGFibGVcbiAgICAgICAgICovXG4gICAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICAgIC8qKiBXaGV0aGVyIHRvIGF0dGFjaCBPSyBhY3Rpb25zIGZvciB0aGlzIGFsYXJtLiBAZGVmYXVsdCB0cnVlICovXG4gICAgICAgIGVuYWJsZU9rQWxhcm0/OiBib29sZWFuXG4gICAgICAgIGFjdGlvbj86IGNsb3Vkd2F0Y2guSUFsYXJtQWN0aW9uXG4gICAgICAgIC8qKiBAZGVmYXVsdCAxMCUgb2YgbWF4aW11bSBlYXJuZWQgY3JlZGl0cyBmb3IgaW5zdGFuY2UgdHlwZSAqL1xuICAgICAgICB0aHJlc2hvbGQ/OiBudW1iZXJcbiAgICAgICAgYXBwZW5kVG9BbGFybURlc2NyaXB0aW9uPzogc3RyaW5nXG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogU3RvcmFnZSBzcGFjZSBhbGFybSBvdmVycmlkZXNcbiAgICAgICAqL1xuICAgICAgc3RvcmFnZVNwYWNlQWxhcm1zPzoge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IHRvIGBmYWxzZWAgdG8gZGlzYWJsZSBhbGwgc3RvcmFnZSBzcGFjZSBhbGFybXMgKGJvdGggbG93IGFuZCBjcml0aWNhbGx5IGxvdykuXG4gICAgICAgICAqIEluZGl2aWR1YWwgYWxhcm1zIGNhbiBzdGlsbCBiZSBkaXNhYmxlZCBldmVuIHdoZW4gdGhpcyBpcyB0cnVlLlxuICAgICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgICAqL1xuICAgICAgICBlbmFibGVkPzogYm9vbGVhblxuICAgICAgICBsb3dTdG9yYWdlU3BhY2VBbGFybT86IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoZSBsb3cgc3RvcmFnZSBzcGFjZSBhbGFybS5cbiAgICAgICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5hYmxlZD86IGJvb2xlYW5cbiAgICAgICAgICBhY3Rpb24/OiBjbG91ZHdhdGNoLklBbGFybUFjdGlvblxuICAgICAgICAgIC8qKiBXaGV0aGVyIHRvIGF0dGFjaCBPSyBhY3Rpb25zIGZvciB0aGlzIGFsYXJtLiBAZGVmYXVsdCB0cnVlICovXG4gICAgICAgICAgZW5hYmxlT2tBbGFybT86IGJvb2xlYW5cbiAgICAgICAgICAvKiogQGRlZmF1bHQgMjUlIG9mIGFsbG9jYXRlZCBzdG9yYWdlICovXG4gICAgICAgICAgdGhyZXNob2xkPzogY2RrLlNpemVcbiAgICAgICAgfVxuICAgICAgICBjcml0aWNhbGx5TG93U3RvcmFnZVNwYWNlQWxhcm0/OiB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogU2V0IHRvIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgY3JpdGljYWxseSBsb3cgc3RvcmFnZSBzcGFjZSBhbGFybS5cbiAgICAgICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW5hYmxlZD86IGJvb2xlYW5cbiAgICAgICAgICBhY3Rpb24/OiBjbG91ZHdhdGNoLklBbGFybUFjdGlvblxuICAgICAgICAgIC8qKiBXaGV0aGVyIHRvIGF0dGFjaCBPSyBhY3Rpb25zIGZvciB0aGlzIGFsYXJtLiBAZGVmYXVsdCB0cnVlICovXG4gICAgICAgICAgZW5hYmxlT2tBbGFybT86IGJvb2xlYW5cbiAgICAgICAgICAvKiogQGRlZmF1bHQgNSUgb2YgYWxsb2NhdGVkIHN0b3JhZ2UgKi9cbiAgICAgICAgICB0aHJlc2hvbGQ/OiBjZGsuU2l6ZVxuICAgICAgICB9XG4gICAgICAgIGFwcGVuZFRvQWxhcm1EZXNjcmlwdGlvbj86IHN0cmluZ1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIENQVSB1dGlsaXphdGlvbiBhbGFybSBvdmVycmlkZXMuXG4gICAgICAgKi9cbiAgICAgIGNwdVV0aWxpemF0aW9uQWxhcm0/OiB7XG4gICAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICAgIC8qKiBXaGV0aGVyIHRvIGF0dGFjaCBPSyBhY3Rpb25zIGZvciB0aGlzIGFsYXJtLiBAZGVmYXVsdCB0cnVlICovXG4gICAgICAgIGVuYWJsZU9rQWxhcm0/OiBib29sZWFuXG4gICAgICAgIGFjdGlvbj86IGNsb3Vkd2F0Y2guSUFsYXJtQWN0aW9uXG4gICAgICAgIC8qKiBAZGVmYXVsdCA4MCAqL1xuICAgICAgICB0aHJlc2hvbGQ/OiBudW1iZXJcbiAgICAgICAgLyoqIEBkZWZhdWx0IDUgKi9cbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM/OiBudW1iZXJcbiAgICAgICAgLyoqIEBkZWZhdWx0IDIgbWludXRlcyAqL1xuICAgICAgICBwZXJpb2Q/OiBjZGsuRHVyYXRpb25cbiAgICAgICAgYXBwZW5kVG9BbGFybURlc2NyaXB0aW9uPzogc3RyaW5nXG4gICAgICB9XG4gICAgfVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlUHJvcHMgZXh0ZW5kcyBjZGsuU3RhY2tQcm9wcyB7XG4gIHZwYzogZWMyLklWcGNcbiAgZW5naW5lOiByZHMuSUluc3RhbmNlRW5naW5lXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBtYXN0ZXJcbiAgICovXG4gIG1hc3RlclVzZXJuYW1lPzogc3RyaW5nXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBhcHBcbiAgICovXG4gIGRhdGFiYXNlTmFtZT86IHN0cmluZ1xuICAvKipcbiAgICogQGRlZmF1bHQgMjVcbiAgICovXG4gIGFsbG9jYXRlZFN0b3JhZ2VHYj86IG51bWJlclxuICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGVcbiAgaW5zdGFuY2VJZGVudGlmaWVyOiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGlzTXVsdGlBej86IGJvb2xlYW5cbiAgLyoqXG4gICAqIE11c3Qgbm90IGJlIHJlbW92ZWQgb25jZSBpdCBoYXMgYmVlbiBzZXQsIGFzIGNoYW5naW5nIHRoaXNcbiAgICogcmVzdWx0cyBpbiBhIG5ldyBEQiBpbnN0YW5jZSBiZWluZyBjcmVhdGVkLlxuICAgKlxuICAgKiBBbHNvLCByZW1lbWJlciB0byBnaXZlIGRhdGFiYXNlIGEgbmV3IG5hbWUgd2hlbiBjaGFuZ2luZyB0aGlzIHByb3AsIG9yIGVsc2VcbiAgICogdGhlIG5ldyBpbnN0YW5jZSBuYW1lIHdpbGwgY3Jhc2ggd2l0aCB0aGUgZXhpc3RpbmcgaW5zdGFuY2UuXG4gICAqL1xuICBzbmFwc2hvdElkZW50aWZpZXI/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB1c2VQdWJsaWNTdWJuZXRzPzogYm9vbGVhblxuICAvKipcbiAgICogV2Vla2x5IG1haW50ZW5hbmNlIHdpbmRvdyBpbiBVVEMsIGZvcm1hdCBgZGRkOmhoOm1tLWRkZDpoaDptbWAuXG4gICAqIE1pbmltdW0gMzAgbWludXRlczsgbXVzdCBub3Qgb3ZlcmxhcCBgcHJlZmVycmVkQmFja3VwV2luZG93YC5cbiAgICpcbiAgICogQGRlZmF1bHQgQVdTLWFzc2lnbmVkXG4gICAqIEBleGFtcGxlIFwic3VuOjAzOjAwLXN1bjowNDowMFwiXG4gICAqL1xuICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdz86IHN0cmluZ1xuICAvKipcbiAgICogRGFpbHkgYmFja3VwIHdpbmRvdyBpbiBVVEMsIGZvcm1hdCBgaGg6bW0taGg6bW1gLlxuICAgKiBNaW5pbXVtIDMwIG1pbnV0ZXM7IG11c3Qgbm90IG92ZXJsYXAgYHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93YC5cbiAgICpcbiAgICogQGRlZmF1bHQgQVdTLWFzc2lnbmVkXG4gICAqIEBleGFtcGxlIFwiMDE6MDAtMDI6MDBcIlxuICAgKi9cbiAgcHJlZmVycmVkQmFja3VwV2luZG93Pzogc3RyaW5nXG4gIC8qKlxuICAgKiBXaGV0aGVyIEFXUyBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgbWlub3IgZW5naW5lIHZlcnNpb24gdXBncmFkZXNcbiAgICogZHVyaW5nIHRoZSBtYWludGVuYW5jZSB3aW5kb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFXUyBkZWZhdWx0ICh0cnVlKVxuICAgKi9cbiAgYXV0b01pbm9yVmVyc2lvblVwZ3JhZGU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBFc2NhcGUgaGF0Y2ggZm9yIFJEUyBvcHRpb24gY29tYmluYXRpb25zIHRoZSBjb25zdHJ1Y3QgZG9lc24ndCBleHBvc2VcbiAgICogZGlyZWN0bHkuIE92ZXJyaWRlcyBhbnkgdmFsdWUgc2V0IHZpYSB0aGUgdHlwZWQgcHJvcHMgYWJvdmUuXG4gICAqL1xuICBvdmVycmlkZURiT3B0aW9ucz86IFBhcnRpYWw8cmRzLkRhdGFiYXNlSW5zdGFuY2VTb3VyY2VQcm9wcz5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBkYXRhYmFzZSBhbGFybXMuXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgb25lIG9mIHR3byBzaGFwZXM6XG4gICAqICAtIGB7IGVuYWJsZWQ6IGZhbHNlIH1gIHRvIGV4cGxpY2l0bHkgZGlzYWJsZSBhdXRvbWF0aWMgYWxhcm1zXG4gICAqICAtIGB7IGFsYXJtQWN0aW9uLCB3YXJuaW5nQWN0aW9uIH1gIHRvIGVuYWJsZSBhbGFybXMgYW5kIHByb3ZpZGUgYm90aCBjaGFubmVsc1xuICAgKlxuICAgKiBEZWZhdWx0OiBlbmFibGVkLlxuICAgKi9cbiAgYWxhcm1zOiBEYXRhYmFzZUFsYXJtc0NvbmZpZ1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2UgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBzZWNyZXQ6IHNtLklTZWNyZXRcbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBlYzIuQ29ubmVjdGlvbnNcbiAgcHVibGljIHJlYWRvbmx5IGRhdGFiYXNlSW5zdGFuY2U6IHJkcy5JRGF0YWJhc2VJbnN0YW5jZVxuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlXG4gIHB1YmxpYyByZWFkb25seSBhbGxvY2F0ZWRTdG9yYWdlOiBjZGsuU2l6ZVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFiYXNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBtYXN0ZXJVc2VybmFtZSA9IHByb3BzLm1hc3RlclVzZXJuYW1lID8/IFwibWFzdGVyXCJcbiAgICBjb25zdCBkYXRhYmFzZU5hbWUgPSBwcm9wcy5kYXRhYmFzZU5hbWUgPz8gXCJhcHBcIlxuXG4gICAgY29uc3Qgc2VjcmV0ID0gbmV3IHJkcy5EYXRhYmFzZVNlY3JldCh0aGlzLCBcIlNlY3JldFwiLCB7XG4gICAgICB1c2VybmFtZTogbWFzdGVyVXNlcm5hbWUsXG4gICAgfSlcblxuICAgIGNvbnN0IHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93ID1cbiAgICAgIHByb3BzLm92ZXJyaWRlRGJPcHRpb25zPy5wcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdyA/P1xuICAgICAgcHJvcHMucHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3dcbiAgICBjb25zdCBwcmVmZXJyZWRCYWNrdXBXaW5kb3cgPVxuICAgICAgcHJvcHMub3ZlcnJpZGVEYk9wdGlvbnM/LnByZWZlcnJlZEJhY2t1cFdpbmRvdyA/P1xuICAgICAgcHJvcHMucHJlZmVycmVkQmFja3VwV2luZG93XG5cbiAgICBpZiAoXG4gICAgICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwcmVmZXJyZWRCYWNrdXBXaW5kb3cgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgbXcgPSBwYXJzZU1haW50ZW5hbmNlV2luZG93KHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93KVxuICAgICAgY29uc3QgYncgPSBwYXJzZUJhY2t1cFdpbmRvdyhwcmVmZXJyZWRCYWNrdXBXaW5kb3cpXG4gICAgICBpZiAob3ZlcmxhcHMobXcsIGJ3KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYHByZWZlcnJlZEJhY2t1cFdpbmRvdyBcIiR7cHJlZmVycmVkQmFja3VwV2luZG93fVwiIG92ZXJsYXBzIGAgK1xuICAgICAgICAgICAgYHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93IFwiJHtwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvd31cIi4gYCArXG4gICAgICAgICAgICBcIkFXUyByZXF1aXJlcyB0aGVzZSB3aW5kb3dzIHRvIGJlIGRpc2pvaW50LlwiLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJzZU1haW50ZW5hbmNlV2luZG93KHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93KVxuICAgIH0gZWxzZSBpZiAocHJlZmVycmVkQmFja3VwV2luZG93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcnNlQmFja3VwV2luZG93KHByZWZlcnJlZEJhY2t1cFdpbmRvdylcbiAgICB9XG5cbiAgICB3YXJuT25QaW5uZWRNaW5vcldpdGhBdXRvVXBncmFkZShcbiAgICAgIHRoaXMsXG4gICAgICBwcm9wcy5lbmdpbmUsXG4gICAgICAvLyBBV1MgZGVmYXVsdCBpcyB0cnVlLlxuICAgICAgcHJvcHMub3ZlcnJpZGVEYk9wdGlvbnM/LmF1dG9NaW5vclZlcnNpb25VcGdyYWRlID8/XG4gICAgICAgIHByb3BzLmF1dG9NaW5vclZlcnNpb25VcGdyYWRlID8/XG4gICAgICAgIHRydWUsXG4gICAgKVxuXG4gICAgY29uc3Qgb3B0aW9uczogcmRzLkRhdGFiYXNlSW5zdGFuY2VTb3VyY2VQcm9wcyA9IHtcbiAgICAgIGVuZ2luZTogcHJvcHMuZW5naW5lLFxuICAgICAgYWxsb3dNYWpvclZlcnNpb25VcGdyYWRlOiB0cnVlLFxuICAgICAgYXV0b01pbm9yVmVyc2lvblVwZ3JhZGU6IHByb3BzLmF1dG9NaW5vclZlcnNpb25VcGdyYWRlLFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93LFxuICAgICAgcHJlZmVycmVkQmFja3VwV2luZG93OiBwcm9wcy5wcmVmZXJyZWRCYWNrdXBXaW5kb3csXG4gICAgICBpbnN0YW5jZUlkZW50aWZpZXI6IHByb3BzLmluc3RhbmNlSWRlbnRpZmllcixcbiAgICAgIGluc3RhbmNlVHlwZTogcHJvcHMuaW5zdGFuY2VUeXBlLFxuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiBwcm9wcy51c2VQdWJsaWNTdWJuZXRzXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFVCTElDLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBtdWx0aUF6OiBwcm9wcy5pc011bHRpQXogPz8gdHJ1ZSxcbiAgICAgIC8vIFdlIGRlZmF1bHQgdG8gMjUgR2lCIHN0b3JhZ2UgaW5zdGVhZCBvZiAxMDAgR2lCXG4gICAgICAvLyBpZiB3ZSBkbyBub3Qgc3BlY2lmeS5cbiAgICAgIGFsbG9jYXRlZFN0b3JhZ2U6IHByb3BzLmFsbG9jYXRlZFN0b3JhZ2VHYiA/PyAyNSxcbiAgICAgIC8vIFdlIHNwZWNpZnkgbWF4aW11bSBiYWNrdXAgcmV0ZW50aW9uLlxuICAgICAgYmFja3VwUmV0ZW50aW9uOiBjZGsuRHVyYXRpb24uZGF5cygzNSksXG4gICAgICAuLi5wcm9wcy5vdmVycmlkZURiT3B0aW9ucyxcbiAgICB9XG4gICAgdGhpcy5hbGxvY2F0ZWRTdG9yYWdlID0gY2RrLlNpemUuZ2liaWJ5dGVzKG9wdGlvbnMuYWxsb2NhdGVkU3RvcmFnZSEpXG4gICAgdGhpcy5pbnN0YW5jZVR5cGUgPSBvcHRpb25zLmluc3RhbmNlVHlwZSFcblxuICAgIGNvbnN0IGRiID0gcHJvcHMuc25hcHNob3RJZGVudGlmaWVyXG4gICAgICA/IG5ldyByZHMuRGF0YWJhc2VJbnN0YW5jZUZyb21TbmFwc2hvdCh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIHNuYXBzaG90SWRlbnRpZmllcjogcHJvcHMuc25hcHNob3RJZGVudGlmaWVyLFxuICAgICAgICAgIGNyZWRlbnRpYWxzOiByZHMuU25hcHNob3RDcmVkZW50aWFscy5mcm9tU2VjcmV0KHNlY3JldCksXG4gICAgICAgIH0pXG4gICAgICA6IG5ldyByZHMuRGF0YWJhc2VJbnN0YW5jZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgIGRhdGFiYXNlTmFtZSxcbiAgICAgICAgICBjcmVkZW50aWFsczogcmRzLkNyZWRlbnRpYWxzLmZyb21TZWNyZXQoc2VjcmV0KSxcbiAgICAgICAgICBzdG9yYWdlRW5jcnlwdGVkOiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgdGhpcy5kYXRhYmFzZUluc3RhbmNlID0gZGJcblxuICAgIHRoaXMuc2VjcmV0ID0gZGIuc2VjcmV0IVxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBkYi5jb25uZWN0aW9uc1xuXG4gICAgLy8gT3ZlcnJpZGUgaW4gY2FzZSB3ZSBoYXZlIHBsYWNlZCBpdCBpbiBhIHB1YmxpYyBzdWJuZXQuXG4gICAgLy8gSXQgd291bGQgZGVmYXVsdCB0byBiZWluZyBwdWJsaWMgYWNjZXNzaWJsZSB3aGljaCB3ZSBkbyBub3Qgd2FudC5cbiAgICA7KGRiLm5vZGUuZGVmYXVsdENoaWxkIGFzIHJkcy5DZm5EQkluc3RhbmNlKS5wdWJsaWNseUFjY2Vzc2libGUgPSBmYWxzZVxuXG4gICAgaWYgKFwiYWxhcm1BY3Rpb25cIiBpbiBwcm9wcy5hbGFybXMpIHtcbiAgICAgIGNvbnN0IGFsYXJtcyA9IHByb3BzLmFsYXJtc1xuXG4gICAgICBjb25zdCBkYkFsYXJtcyA9IG5ldyBEYXRhYmFzZUFsYXJtcyh0aGlzLCBcIkFsYXJtc1wiLCB7XG4gICAgICAgIGluc3RhbmNlSWRlbnRpZmllcjogcHJvcHMuaW5zdGFuY2VJZGVudGlmaWVyLFxuICAgICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZSxcbiAgICAgICAgYWxsb2NhdGVkU3RvcmFnZTogY2RrLlNpemUuZ2liaWJ5dGVzKG9wdGlvbnMuYWxsb2NhdGVkU3RvcmFnZSEpLFxuICAgICAgICBhbGFybUFjdGlvbjogYWxhcm1zLmFsYXJtQWN0aW9uLFxuICAgICAgICB3YXJuaW5nQWN0aW9uOiBhbGFybXMud2FybmluZ0FjdGlvbixcbiAgICAgIH0pXG5cbiAgICAgIC8vIERlZmF1bHQgbWFwcGluZzpcbiAgICAgIC8vIC0gbG93IENQVSBjcmVkaXRzIC0+IGFsYXJtXG4gICAgICAvLyAtIGNyaXRpY2FsbHkgbG93IHN0b3JhZ2UgLT4gYWxhcm1cbiAgICAgIC8vIC0gbG93IHN0b3JhZ2UgLT4gd2FybmluZ1xuICAgICAgLy8gLSBoaWdoIENQVSB1dGlsaXphdGlvbiAtPiB3YXJuaW5nXG4gICAgICAvLyBPbmx5IGNyZWF0ZSB0aGUgQ1BVIGNyZWRpdHMgYWxhcm0gaWYgdGhlIGluc3RhbmNlIHR5cGUgaXMgYnVyc3RhYmxlLlxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmluc3RhbmNlVHlwZS5pc0J1cnN0YWJsZSgpICYmXG4gICAgICAgIGFsYXJtcy5jcHVDcmVkaXRzQWxhcm0/LmVuYWJsZWQgIT09IGZhbHNlXG4gICAgICApIHtcbiAgICAgICAgZGJBbGFybXMuYWRkQ3B1Q3JlZGl0c0FsYXJtKHtcbiAgICAgICAgICBhY3Rpb246IGFsYXJtcy5jcHVDcmVkaXRzQWxhcm0/LmFjdGlvbixcbiAgICAgICAgICB0aHJlc2hvbGQ6IGFsYXJtcy5jcHVDcmVkaXRzQWxhcm0/LnRocmVzaG9sZCxcbiAgICAgICAgICBlbmFibGVPa0FsYXJtOiBhbGFybXMuY3B1Q3JlZGl0c0FsYXJtPy5lbmFibGVPa0FsYXJtLFxuICAgICAgICAgIGFwcGVuZFRvQWxhcm1EZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIGFsYXJtcy5jcHVDcmVkaXRzQWxhcm0/LmFwcGVuZFRvQWxhcm1EZXNjcmlwdGlvbixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGFsYXJtcy5zdG9yYWdlU3BhY2VBbGFybXM/LmVuYWJsZWQgIT09IGZhbHNlKSB7XG4gICAgICAgIGRiQWxhcm1zLmFkZFN0b3JhZ2VTcGFjZUFsYXJtcyh7XG4gICAgICAgICAgLi4uYWxhcm1zLnN0b3JhZ2VTcGFjZUFsYXJtcyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGFsYXJtcy5jcHVVdGlsaXphdGlvbkFsYXJtPy5lbmFibGVkICE9PSBmYWxzZSkge1xuICAgICAgICBkYkFsYXJtcy5hZGRDcHVVdGlsaXphdGlvbkFsYXJtKHtcbiAgICAgICAgICBhY3Rpb246IGFsYXJtcy5jcHVVdGlsaXphdGlvbkFsYXJtPy5hY3Rpb24sXG4gICAgICAgICAgdGhyZXNob2xkOiBhbGFybXMuY3B1VXRpbGl6YXRpb25BbGFybT8udGhyZXNob2xkLFxuICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBhbGFybXMuY3B1VXRpbGl6YXRpb25BbGFybT8uZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgICAgcGVyaW9kOiBhbGFybXMuY3B1VXRpbGl6YXRpb25BbGFybT8ucGVyaW9kLFxuICAgICAgICAgIGVuYWJsZU9rQWxhcm06IGFsYXJtcy5jcHVVdGlsaXphdGlvbkFsYXJtPy5lbmFibGVPa0FsYXJtLFxuICAgICAgICAgIGFwcGVuZFRvQWxhcm1EZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIGFsYXJtcy5jcHVVdGlsaXphdGlvbkFsYXJtPy5hcHBlbmRUb0FsYXJtRGVzY3JpcHRpb24sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFsbG93Q29ubmVjdGlvbkZyb20oc291cmNlOiBlYzIuSVNlY3VyaXR5R3JvdXApOiB2b2lkIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tKHNvdXJjZSlcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuT25QaW5uZWRNaW5vcldpdGhBdXRvVXBncmFkZShcbiAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICBlbmdpbmU6IHJkcy5JSW5zdGFuY2VFbmdpbmUsXG4gIGF1dG9NaW5vclZlcnNpb25VcGdyYWRlOiBib29sZWFuLFxuKTogdm9pZCB7XG4gIGlmICghYXV0b01pbm9yVmVyc2lvblVwZ3JhZGUpIHJldHVyblxuICBjb25zdCB2ZXJzaW9uID0gZW5naW5lLmVuZ2luZVZlcnNpb25cbiAgaWYgKCF2ZXJzaW9uKSByZXR1cm5cbiAgaWYgKHZlcnNpb24uZnVsbFZlcnNpb24gPT09IHZlcnNpb24ubWFqb3JWZXJzaW9uKSByZXR1cm5cbiAgY2RrLkFubm90YXRpb25zLm9mKHNjb3BlKS5hZGRXYXJuaW5nKFxuICAgIGBFbmdpbmUgdmVyc2lvbiBcIiR7dmVyc2lvbi5mdWxsVmVyc2lvbn1cIiBwaW5zIGEgc3BlY2lmaWMgbWlub3IsIGJ1dCBhdXRvTWlub3JWZXJzaW9uVXBncmFkZSBpcyB0cnVlLiBgICtcbiAgICAgIFwiQVdTIG1heSB1cGdyYWRlIHBhc3QgdGhpcyBwaW4gZHVyaW5nIHRoZSBtYWludGVuYW5jZSB3aW5kb3cuIFwiICtcbiAgICAgIFwiRWl0aGVyIHVzZSBhIG1ham9yLW9ubHkgdmVyc2lvbiAoZS5nLiBQb3N0Z3Jlc0VuZ2luZVZlcnNpb24uVkVSXzE3KSBvciBzZXQgYXV0b01pbm9yVmVyc2lvblVwZ3JhZGUgdG8gZmFsc2UuXCIsXG4gIClcbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ export interface ParsedMaintenanceWindow {
2
+ readonly raw: string;
3
+ readonly startMinuteOfWeek: number;
4
+ readonly endMinuteOfWeek: number;
5
+ }
6
+ export interface ParsedBackupWindow {
7
+ readonly raw: string;
8
+ readonly startMinuteOfDay: number;
9
+ readonly endMinuteOfDay: number;
10
+ }
11
+ export declare function parseMaintenanceWindow(raw: string): ParsedMaintenanceWindow;
12
+ export declare function parseBackupWindow(raw: string): ParsedBackupWindow;
13
+ /**
14
+ * Checks whether the backup and maintenance windows intersect.
15
+ *
16
+ * Only considers forward-ordered windows (where end > start). For ambiguous
17
+ * inputs where end <= start, we defer to AWS's own validation at deploy time
18
+ * rather than guess whether a wraparound was intended.
19
+ */
20
+ export declare function overlaps(mw: ParsedMaintenanceWindow, bw: ParsedBackupWindow): boolean;
@@ -0,0 +1,109 @@
1
+ const DAY_NAMES = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];
2
+ const MIN_WINDOW_MINUTES = 30;
3
+ const MAINTENANCE_WINDOW_EXAMPLE = "sun:03:00-sun:04:00";
4
+ const BACKUP_WINDOW_EXAMPLE = "01:00-02:00";
5
+ // Case-insensitive: AWS accepts "Thu:03:00-Thu:04:00" and "thu:03:00-thu:04:00".
6
+ const MAINTENANCE_WINDOW_REGEX = /^(mon|tue|wed|thu|fri|sat|sun):(\d{2}):(\d{2})-(mon|tue|wed|thu|fri|sat|sun):(\d{2}):(\d{2})$/i;
7
+ const BACKUP_WINDOW_REGEX = /^(\d{2}):(\d{2})-(\d{2}):(\d{2})$/;
8
+ export function parseMaintenanceWindow(raw) {
9
+ const match = MAINTENANCE_WINDOW_REGEX.exec(raw);
10
+ if (!match) {
11
+ throw new Error(`Invalid preferredMaintenanceWindow "${raw}". ` +
12
+ `Expected format ddd:hh:mm-ddd:hh:mm (UTC), e.g. "${MAINTENANCE_WINDOW_EXAMPLE}". ` +
13
+ `Valid day abbreviations: ${DAY_NAMES.join(", ")}.`);
14
+ }
15
+ const [, startDay, startHourRaw, startMinuteRaw, endDay, endHourRaw, endMinuteRaw,] = match;
16
+ const startHour = Number(startHourRaw);
17
+ const startMinute = Number(startMinuteRaw);
18
+ const endHour = Number(endHourRaw);
19
+ const endMinute = Number(endMinuteRaw);
20
+ assertHour(startHour, "preferredMaintenanceWindow", raw);
21
+ assertMinute(startMinute, "preferredMaintenanceWindow", raw);
22
+ assertHour(endHour, "preferredMaintenanceWindow", raw);
23
+ assertMinute(endMinute, "preferredMaintenanceWindow", raw);
24
+ const startMinuteOfWeek = dayIndex(startDay.toLowerCase()) * 24 * 60 +
25
+ startHour * 60 +
26
+ startMinute;
27
+ const endMinuteOfWeek = dayIndex(endDay.toLowerCase()) * 24 * 60 +
28
+ endHour * 60 +
29
+ endMinute;
30
+ if (startMinuteOfWeek === endMinuteOfWeek) {
31
+ throw new Error(`Invalid preferredMaintenanceWindow "${raw}": ` +
32
+ `start and end are equal. Window must be at least ${MIN_WINDOW_MINUTES} minutes. ` +
33
+ `Example: "${MAINTENANCE_WINDOW_EXAMPLE}".`);
34
+ }
35
+ if (endMinuteOfWeek > startMinuteOfWeek &&
36
+ endMinuteOfWeek - startMinuteOfWeek < MIN_WINDOW_MINUTES) {
37
+ throw new Error(`Invalid preferredMaintenanceWindow "${raw}": ` +
38
+ `window is ${endMinuteOfWeek - startMinuteOfWeek} minutes, minimum is ${MIN_WINDOW_MINUTES}. ` +
39
+ `Example: "${MAINTENANCE_WINDOW_EXAMPLE}".`);
40
+ }
41
+ return { raw, startMinuteOfWeek, endMinuteOfWeek };
42
+ }
43
+ export function parseBackupWindow(raw) {
44
+ const match = BACKUP_WINDOW_REGEX.exec(raw);
45
+ if (!match) {
46
+ throw new Error(`Invalid preferredBackupWindow "${raw}". ` +
47
+ `Expected format hh:mm-hh:mm (UTC), e.g. "${BACKUP_WINDOW_EXAMPLE}".`);
48
+ }
49
+ const [, startHourRaw, startMinuteRaw, endHourRaw, endMinuteRaw] = match;
50
+ const startHour = Number(startHourRaw);
51
+ const startMinute = Number(startMinuteRaw);
52
+ const endHour = Number(endHourRaw);
53
+ const endMinute = Number(endMinuteRaw);
54
+ assertHour(startHour, "preferredBackupWindow", raw);
55
+ assertMinute(startMinute, "preferredBackupWindow", raw);
56
+ assertHour(endHour, "preferredBackupWindow", raw);
57
+ assertMinute(endMinute, "preferredBackupWindow", raw);
58
+ const startMinuteOfDay = startHour * 60 + startMinute;
59
+ const endMinuteOfDay = endHour * 60 + endMinute;
60
+ if (startMinuteOfDay === endMinuteOfDay) {
61
+ throw new Error(`Invalid preferredBackupWindow "${raw}": ` +
62
+ `start and end are equal. Window must be at least ${MIN_WINDOW_MINUTES} minutes. ` +
63
+ `Example: "${BACKUP_WINDOW_EXAMPLE}".`);
64
+ }
65
+ if (endMinuteOfDay > startMinuteOfDay &&
66
+ endMinuteOfDay - startMinuteOfDay < MIN_WINDOW_MINUTES) {
67
+ throw new Error(`Invalid preferredBackupWindow "${raw}": ` +
68
+ `window is ${endMinuteOfDay - startMinuteOfDay} minutes, minimum is ${MIN_WINDOW_MINUTES}. ` +
69
+ `Example: "${BACKUP_WINDOW_EXAMPLE}".`);
70
+ }
71
+ return { raw, startMinuteOfDay, endMinuteOfDay };
72
+ }
73
+ /**
74
+ * Checks whether the backup and maintenance windows intersect.
75
+ *
76
+ * Only considers forward-ordered windows (where end > start). For ambiguous
77
+ * inputs where end <= start, we defer to AWS's own validation at deploy time
78
+ * rather than guess whether a wraparound was intended.
79
+ */
80
+ export function overlaps(mw, bw) {
81
+ if (mw.endMinuteOfWeek <= mw.startMinuteOfWeek)
82
+ return false;
83
+ if (bw.endMinuteOfDay <= bw.startMinuteOfDay)
84
+ return false;
85
+ const minutesPerDay = 24 * 60;
86
+ for (let day = 0; day < 7; day++) {
87
+ const dayBackupStart = day * minutesPerDay + bw.startMinuteOfDay;
88
+ const dayBackupEnd = day * minutesPerDay + bw.endMinuteOfDay;
89
+ if (dayBackupStart < mw.endMinuteOfWeek &&
90
+ dayBackupEnd > mw.startMinuteOfWeek) {
91
+ return true;
92
+ }
93
+ }
94
+ return false;
95
+ }
96
+ function dayIndex(day) {
97
+ return DAY_NAMES.indexOf(day);
98
+ }
99
+ function assertHour(hour, propName, raw) {
100
+ if (hour > 23) {
101
+ throw new Error(`Invalid ${propName} "${raw}": hour must be 0-23 (got ${hour}).`);
102
+ }
103
+ }
104
+ function assertMinute(minute, propName, raw) {
105
+ if (minute > 59) {
106
+ throw new Error(`Invalid ${propName} "${raw}": minute must be 0-59 (got ${minute}).`);
107
+ }
108
+ }
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZHMvd2luZG93cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBVSxDQUFBO0FBRzVFLE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFBO0FBRTdCLE1BQU0sMEJBQTBCLEdBQUcscUJBQXFCLENBQUE7QUFDeEQsTUFBTSxxQkFBcUIsR0FBRyxhQUFhLENBQUE7QUFFM0MsaUZBQWlGO0FBQ2pGLE1BQU0sd0JBQXdCLEdBQzVCLGdHQUFnRyxDQUFBO0FBRWxHLE1BQU0sbUJBQW1CLEdBQUcsbUNBQW1DLENBQUE7QUFjL0QsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEdBQVc7SUFDaEQsTUFBTSxLQUFLLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUNBQXVDLEdBQUcsS0FBSztZQUM3QyxvREFBb0QsMEJBQTBCLEtBQUs7WUFDbkYsNEJBQTRCLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDdEQsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLENBQ0osQUFESyxFQUVMLFFBQVEsRUFDUixZQUFZLEVBQ1osY0FBYyxFQUNkLE1BQU0sRUFDTixVQUFVLEVBQ1YsWUFBWSxFQUNiLEdBQUcsS0FBSyxDQUFBO0lBQ1QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUMxQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDbEMsTUFB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QUMsR0FBWTtJQUM1QixPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDL0IsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQVksRUFBRSxRQUFnQixFQUFFLEdBQVc7SUFDN0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUNiLFdBQVcsUUFBUSxLQUFLLEdBQUcsNkJBQTZCLElBQUksSUFBSSxDQUNqRSxDQUFBO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxNQUFjLEVBQUUsUUFBZ0IsRUFBRSxHQUFXO0lBQ2pFLElBQUksTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2IsV0FBVyxRQUFRLEtBQUssR0FBRywrQkFBK0IsTUFBTSxJQUFJLENBQ3JFLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IERBWV9OQU1FUyA9IFtcIm1vblwiLCBcInR1ZVwiLCBcIndlZFwiLCBcInRodVwiLCBcImZyaVwiLCBcInNhdFwiLCBcInN1blwiXSBhcyBjb25zdFxudHlwZSBEYXlOYW1lID0gKHR5cGVvZiBEQVlfTkFNRVMpW251bWJlcl1cblxuY29uc3QgTUlOX1dJTkRPV19NSU5VVEVTID0gMzBcblxuY29uc3QgTUFJTlRFTkFOQ0VfV0lORE9XX0VYQU1QTEUgPSBcInN1bjowMzowMC1zdW46MDQ6MDBcIlxuY29uc3QgQkFDS1VQX1dJTkRPV19FWEFNUExFID0gXCIwMTowMC0wMjowMFwiXG5cbi8vIENhc2UtaW5zZW5zaXRpdmU6IEFXUyBhY2NlcHRzIFwiVGh1OjAzOjAwLVRodTowNDowMFwiIGFuZCBcInRodTowMzowMC10aHU6MDQ6MDBcIi5cbmNvbnN0IE1BSU5URU5BTkNFX1dJTkRPV19SRUdFWCA9XG4gIC9eKG1vbnx0dWV8d2VkfHRodXxmcml8c2F0fHN1bik6KFxcZHsyfSk6KFxcZHsyfSktKG1vbnx0dWV8d2VkfHRodXxmcml8c2F0fHN1bik6KFxcZHsyfSk6KFxcZHsyfSkkL2lcblxuY29uc3QgQkFDS1VQX1dJTkRPV19SRUdFWCA9IC9eKFxcZHsyfSk6KFxcZHsyfSktKFxcZHsyfSk6KFxcZHsyfSkkL1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZE1haW50ZW5hbmNlV2luZG93IHtcbiAgcmVhZG9ubHkgcmF3OiBzdHJpbmdcbiAgcmVhZG9ubHkgc3RhcnRNaW51dGVPZldlZWs6IG51bWJlclxuICByZWFkb25seSBlbmRNaW51dGVPZldlZWs6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZEJhY2t1cFdpbmRvdyB7XG4gIHJlYWRvbmx5IHJhdzogc3RyaW5nXG4gIHJlYWRvbmx5IHN0YXJ0TWludXRlT2ZEYXk6IG51bWJlclxuICByZWFkb25seSBlbmRNaW51dGVPZkRheTogbnVtYmVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1haW50ZW5hbmNlV2luZG93KHJhdzogc3RyaW5nKTogUGFyc2VkTWFpbnRlbmFuY2VXaW5kb3cge1xuICBjb25zdCBtYXRjaCA9IE1BSU5URU5BTkNFX1dJTkRPV19SRUdFWC5leGVjKHJhdylcbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93IFwiJHtyYXd9XCIuIGAgK1xuICAgICAgICBgRXhwZWN0ZWQgZm9ybWF0IGRkZDpoaDptbS1kZGQ6aGg6bW0gKFVUQyksIGUuZy4gXCIke01BSU5URU5BTkNFX1dJTkRPV19FWEFNUExFfVwiLiBgICtcbiAgICAgICAgYFZhbGlkIGRheSBhYmJyZXZpYXRpb25zOiAke0RBWV9OQU1FUy5qb2luKFwiLCBcIil9LmAsXG4gICAgKVxuICB9XG5cbiAgY29uc3QgW1xuICAgICxcbiAgICBzdGFydERheSxcbiAgICBzdGFydEhvdXJSYXcsXG4gICAgc3RhcnRNaW51dGVSYXcsXG4gICAgZW5kRGF5LFxuICAgIGVuZEhvdXJSYXcsXG4gICAgZW5kTWludXRlUmF3LFxuICBdID0gbWF0Y2hcbiAgY29uc3Qgc3RhcnRIb3VyID0gTnVtYmVyKHN0YXJ0SG91clJhdylcbiAgY29uc3Qgc3RhcnRNaW51dGUgPSBOdW1iZXIoc3RhcnRNaW51dGVSYXcpXG4gIGNvbnN0IGVuZEhvdXIgPSBOdW1iZXIoZW5kSG91clJhdylcbiAgY29uc3QgZW5kTWludXRlID0gTnVtYmVyKGVuZE1pbnV0ZVJhdylcblxuICBhc3NlcnRIb3VyKHN0YXJ0SG91ciwgXCJwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvd1wiLCByYXcpXG4gIGFzc2VydE1pbnV0ZShzdGFydE1pbnV0ZSwgXCJwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvd1wiLCByYXcpXG4gIGFzc2VydEhvdXIoZW5kSG91ciwgXCJwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvd1wiLCByYXcpXG4gIGFzc2VydE1pbnV0ZShlbmRNaW51dGUsIFwicHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3dcIiwgcmF3KVxuXG4gIGNvbnN0IHN0YXJ0TWludXRlT2ZXZWVrID1cbiAgICBkYXlJbmRleChzdGFydERheS50b0xvd2VyQ2FzZSgpIGFzIERheU5hbWUpICogMjQgKiA2MCArXG4gICAgc3RhcnRIb3VyICogNjAgK1xuICAgIHN0YXJ0TWludXRlXG4gIGNvbnN0IGVuZE1pbnV0ZU9mV2VlayA9XG4gICAgZGF5SW5kZXgoZW5kRGF5LnRvTG93ZXJDYXNlKCkgYXMgRGF5TmFtZSkgKiAyNCAqIDYwICtcbiAgICBlbmRIb3VyICogNjAgK1xuICAgIGVuZE1pbnV0ZVxuXG4gIGlmIChzdGFydE1pbnV0ZU9mV2VlayA9PT0gZW5kTWludXRlT2ZXZWVrKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3cgXCIke3Jhd31cIjogYCArXG4gICAgICAgIGBzdGFydCBhbmQgZW5kIGFyZSBlcXVhbC4gV2luZG93IG11c3QgYmUgYXQgbGVhc3QgJHtNSU5fV0lORE9XX01JTlVURVN9IG1pbnV0ZXMuIGAgK1xuICAgICAgICBgRXhhbXBsZTogXCIke01BSU5URU5BTkNFX1dJTkRPV19FWEFNUExFfVwiLmAsXG4gICAgKVxuICB9XG5cbiAgaWYgKFxuICAgIGVuZE1pbnV0ZU9mV2VlayA+IHN0YXJ0TWludXRlT2ZXZWVrICYmXG4gICAgZW5kTWludXRlT2ZXZWVrIC0gc3RhcnRNaW51dGVPZldlZWsgPCBNSU5fV0lORE9XX01JTlVURVNcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3cgXCIke3Jhd31cIjogYCArXG4gICAgICAgIGB3aW5kb3cgaXMgJHtlbmRNaW51dGVPZldlZWsgLSBzdGFydE1pbnV0ZU9mV2Vla30gbWludXRlcywgbWluaW11bSBpcyAke01JTl9XSU5ET1dfTUlOVVRFU30uIGAgK1xuICAgICAgICBgRXhhbXBsZTogXCIke01BSU5URU5BTkNFX1dJTkRPV19FWEFNUExFfVwiLmAsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHsgcmF3LCBzdGFydE1pbnV0ZU9mV2VlaywgZW5kTWludXRlT2ZXZWVrIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQmFja3VwV2luZG93KHJhdzogc3RyaW5nKTogUGFyc2VkQmFja3VwV2luZG93IHtcbiAgY29uc3QgbWF0Y2ggPSBCQUNLVVBfV0lORE9XX1JFR0VYLmV4ZWMocmF3KVxuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgcHJlZmVycmVkQmFja3VwV2luZG93IFwiJHtyYXd9XCIuIGAgK1xuICAgICAgICBgRXhwZWN0ZWQgZm9ybWF0IGhoOm1tLWhoOm1tIChVVEMpLCBlLmcuIFwiJHtCQUNLVVBfV0lORE9XX0VYQU1QTEV9XCIuYCxcbiAgICApXG4gIH1cblxuICBjb25zdCBbLCBzdGFydEhvdXJSYXcsIHN0YXJ0TWludXRlUmF3LCBlbmRIb3VyUmF3LCBlbmRNaW51dGVSYXddID0gbWF0Y2hcbiAgY29uc3Qgc3RhcnRIb3VyID0gTnVtYmVyKHN0YXJ0SG91clJhdylcbiAgY29uc3Qgc3RhcnRNaW51dGUgPSBOdW1iZXIoc3RhcnRNaW51dGVSYXcpXG4gIGNvbnN0IGVuZEhvdXIgPSBOdW1iZXIoZW5kSG91clJhdylcbiAgY29uc3QgZW5kTWludXRlID0gTnVtYmVyKGVuZE1pbnV0ZVJhdylcblxuICBhc3NlcnRIb3VyKHN0YXJ0SG91ciwgXCJwcmVmZXJyZWRCYWNrdXBXaW5kb3dcIiwgcmF3KVxuICBhc3NlcnRNaW51dGUoc3RhcnRNaW51dGUsIFwicHJlZmVycmVkQmFja3VwV2luZG93XCIsIHJhdylcbiAgYXNzZXJ0SG91cihlbmRIb3VyLCBcInByZWZlcnJlZEJhY2t1cFdpbmRvd1wiLCByYXcpXG4gIGFzc2VydE1pbnV0ZShlbmRNaW51dGUsIFwicHJlZmVycmVkQmFja3VwV2luZG93XCIsIHJhdylcblxuICBjb25zdCBzdGFydE1pbnV0ZU9mRGF5ID0gc3RhcnRIb3VyICogNjAgKyBzdGFydE1pbnV0ZVxuICBjb25zdCBlbmRNaW51dGVPZkRheSA9IGVuZEhvdXIgKiA2MCArIGVuZE1pbnV0ZVxuXG4gIGlmIChzdGFydE1pbnV0ZU9mRGF5ID09PSBlbmRNaW51dGVPZkRheSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkIHByZWZlcnJlZEJhY2t1cFdpbmRvdyBcIiR7cmF3fVwiOiBgICtcbiAgICAgICAgYHN0YXJ0IGFuZCBlbmQgYXJlIGVxdWFsLiBXaW5kb3cgbXVzdCBiZSBhdCBsZWFzdCAke01JTl9XSU5ET1dfTUlOVVRFU30gbWludXRlcy4gYCArXG4gICAgICAgIGBFeGFtcGxlOiBcIiR7QkFDS1VQX1dJTkRPV19FWEFNUExFfVwiLmAsXG4gICAgKVxuICB9XG5cbiAgaWYgKFxuICAgIGVuZE1pbnV0ZU9mRGF5ID4gc3RhcnRNaW51dGVPZkRheSAmJlxuICAgIGVuZE1pbnV0ZU9mRGF5IC0gc3RhcnRNaW51dGVPZkRheSA8IE1JTl9XSU5ET1dfTUlOVVRFU1xuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBwcmVmZXJyZWRCYWNrdXBXaW5kb3cgXCIke3Jhd31cIjogYCArXG4gICAgICAgIGB3aW5kb3cgaXMgJHtlbmRNaW51dGVPZkRheSAtIHN0YXJ0TWludXRlT2ZEYXl9IG1pbnV0ZXMsIG1pbmltdW0gaXMgJHtNSU5fV0lORE9XX01JTlVURVN9LiBgICtcbiAgICAgICAgYEV4YW1wbGU6IFwiJHtCQUNLVVBfV0lORE9XX0VYQU1QTEV9XCIuYCxcbiAgICApXG4gIH1cblxuICByZXR1cm4geyByYXcsIHN0YXJ0TWludXRlT2ZEYXksIGVuZE1pbnV0ZU9mRGF5IH1cbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgYmFja3VwIGFuZCBtYWludGVuYW5jZSB3aW5kb3dzIGludGVyc2VjdC5cbiAqXG4gKiBPbmx5IGNvbnNpZGVycyBmb3J3YXJkLW9yZGVyZWQgd2luZG93cyAod2hlcmUgZW5kID4gc3RhcnQpLiBGb3IgYW1iaWd1b3VzXG4gKiBpbnB1dHMgd2hlcmUgZW5kIDw9IHN0YXJ0LCB3ZSBkZWZlciB0byBBV1MncyBvd24gdmFsaWRhdGlvbiBhdCBkZXBsb3kgdGltZVxuICogcmF0aGVyIHRoYW4gZ3Vlc3Mgd2hldGhlciBhIHdyYXBhcm91bmQgd2FzIGludGVuZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb3ZlcmxhcHMoXG4gIG13OiBQYXJzZWRNYWludGVuYW5jZVdpbmRvdyxcbiAgYnc6IFBhcnNlZEJhY2t1cFdpbmRvdyxcbik6IGJvb2xlYW4ge1xuICBpZiAobXcuZW5kTWludXRlT2ZXZWVrIDw9IG13LnN0YXJ0TWludXRlT2ZXZWVrKSByZXR1cm4gZmFsc2VcbiAgaWYgKGJ3LmVuZE1pbnV0ZU9mRGF5IDw9IGJ3LnN0YXJ0TWludXRlT2ZEYXkpIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IG1pbnV0ZXNQZXJEYXkgPSAyNCAqIDYwXG4gIGZvciAobGV0IGRheSA9IDA7IGRheSA8IDc7IGRheSsrKSB7XG4gICAgY29uc3QgZGF5QmFja3VwU3RhcnQgPSBkYXkgKiBtaW51dGVzUGVyRGF5ICsgYncuc3RhcnRNaW51dGVPZkRheVxuICAgIGNvbnN0IGRheUJhY2t1cEVuZCA9IGRheSAqIG1pbnV0ZXNQZXJEYXkgKyBidy5lbmRNaW51dGVPZkRheVxuICAgIGlmIChcbiAgICAgIGRheUJhY2t1cFN0YXJ0IDwgbXcuZW5kTWludXRlT2ZXZWVrICYmXG4gICAgICBkYXlCYWNrdXBFbmQgPiBtdy5zdGFydE1pbnV0ZU9mV2Vla1xuICAgICkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGRheUluZGV4KGRheTogRGF5TmFtZSk6IG51bWJlciB7XG4gIHJldHVybiBEQVlfTkFNRVMuaW5kZXhPZihkYXkpXG59XG5cbmZ1bmN0aW9uIGFzc2VydEhvdXIoaG91cjogbnVtYmVyLCBwcm9wTmFtZTogc3RyaW5nLCByYXc6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoaG91ciA+IDIzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgJHtwcm9wTmFtZX0gXCIke3Jhd31cIjogaG91ciBtdXN0IGJlIDAtMjMgKGdvdCAke2hvdXJ9KS5gLFxuICAgIClcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRNaW51dGUobWludXRlOiBudW1iZXIsIHByb3BOYW1lOiBzdHJpbmcsIHJhdzogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChtaW51dGUgPiA1OSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBJbnZhbGlkICR7cHJvcE5hbWV9IFwiJHtyYXd9XCI6IG1pbnV0ZSBtdXN0IGJlIDAtNTkgKGdvdCAke21pbnV0ZX0pLmAsXG4gICAgKVxuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liflig/cdk",
3
- "version": "3.25.2",
3
+ "version": "3.26.0",
4
4
  "description": "CDK library for Liflig",
5
5
  "type": "module",
6
6
  "repository": {