@nlabs/reaktor 1.6.2 → 1.6.3

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/README.md CHANGED
@@ -177,6 +177,21 @@ export ARANGODB_PASSWORD="mypassword"
177
177
 
178
178
  The configuration is environment-aware and supports `local`, `development`, `test`, and `production` environments. The active environment is determined by the `NODE_ENV` or `stage` environment variable.
179
179
 
180
+ #### Anonymous RUM Configuration
181
+
182
+ The public `rum.track` mutation sanitizes GothamJS journey events and sends them to Amazon CloudWatch RUM with `PutRumEvents`. Reaktor does not persist RUM events in ArangoDB.
183
+
184
+ - `AWS_REGION` - AWS region containing the CloudWatch RUM app monitors.
185
+ - `AWS_RUM_APP_MONITORS` - JSON object mapping each public application ID to its CloudWatch RUM app-monitor UUID. Values may also be objects with `id`, `name`, `version`, `domain`, and optional resource-policy `alias` fields.
186
+
187
+ The Lambda or server role must allow `rum:PutRumEvents` for the configured app monitors. The same mapping can be supplied programmatically at `aws.rum.appMonitors` using `Config.set()`.
188
+
189
+ Each event includes its sanitized public `appId` in the event details and as the `applicationId` metadata attribute so CloudWatch RUM filters, Logs Insights, and custom dashboards can filter shared-monitor data. Use a separate app monitor per application when AWS-native metrics and access boundaries must remain isolated.
190
+
191
+ When supplied as event properties, Reaktor promotes `browserName`, `browserVersion`, `browserLanguage`, `pageId`/`pageID`, `parentPageId`/`parentPage`, `interaction`, `deviceType`, `osName`, and `osVersion` into canonical AWS RUM metadata fields.
192
+
193
+ Reaktor does not send authentication state, cookies, IP addresses, user agents, referrers, form values, common identity fields, or client-supplied geolocation. AWS can enrich accepted RUM events with coarse location metadata such as country, subdivision, and locality. Journey IDs remain memory-only in the browser and reset when the application runtime restarts.
194
+
180
195
  #### Programmatic Configuration
181
196
 
182
197
  You can also override configuration programmatically using the `Config.set()` method:
@@ -1,66 +1,246 @@
1
1
  /**
2
2
  * Copyright (c) 2026-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
- */ import { aql } from 'arangojs';
5
- import { literal } from 'arangojs/aql';
6
- import { COLLECTIONS } from '../constants/collections.js';
4
+ */ import { PutRumEventsCommand, RUMClient } from '@aws-sdk/client-rum';
5
+ import { createHash, randomUUID } from 'crypto';
6
+ import { Config } from '../config.js';
7
7
  import { UserError } from '../utils/analyticsUtils.js';
8
- import { useDb } from '../utils/arangodbUtils.js';
9
8
  const MAX_BATCH_SIZE = 50;
10
9
  const MAX_PROPERTIES = 20;
10
+ const MAX_SEQUENCE = 1_000_000;
11
+ const MAX_TIMESTAMP_AGE_MS = 24 * 60 * 60 * 1000;
12
+ const MAX_TIMESTAMP_FUTURE_MS = 5 * 60 * 1000;
13
+ const UUID_PATTERN = /^[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}$/i;
14
+ const BLOCKED_PROPERTY_KEYS = new Set([
15
+ 'accountid',
16
+ 'address',
17
+ 'email',
18
+ 'firstname',
19
+ 'fullname',
20
+ 'geolocation',
21
+ 'ip',
22
+ 'ipaddress',
23
+ 'lastname',
24
+ 'latitude',
25
+ 'longitude',
26
+ 'name',
27
+ 'phone',
28
+ 'referrer',
29
+ 'token',
30
+ 'useragent',
31
+ 'userid'
32
+ ]);
33
+ const EMAIL_PATTERN = /\b[^\s@]+@[^\s@]+\.[^\s@]+\b/i;
34
+ const RUM_METADATA_PROPERTY_KEYS = {
35
+ browserLanguage: [
36
+ 'browserlanguage'
37
+ ],
38
+ browserName: [
39
+ 'browsername'
40
+ ],
41
+ browserVersion: [
42
+ 'browserversion'
43
+ ],
44
+ deviceType: [
45
+ 'devicetype'
46
+ ],
47
+ interaction: [
48
+ 'interaction'
49
+ ],
50
+ osName: [
51
+ 'osname'
52
+ ],
53
+ osVersion: [
54
+ 'osversion'
55
+ ],
56
+ pageId: [
57
+ 'pageid'
58
+ ],
59
+ parentPageId: [
60
+ 'parentpageid',
61
+ 'parentpage'
62
+ ]
63
+ };
11
64
  const normalizeText = (value, maxLength)=>String(value || '').trim().slice(0, maxLength);
65
+ const normalizePropertyKey = (value)=>value.toLowerCase().replace(/[^a-z0-9]/g, '');
66
+ const normalizeDomain = (value)=>normalizeText(value, 253).replace(/^https?:\/\//i, '').split('/')[0].split(':')[0];
67
+ const getAwsUuid = (value)=>{
68
+ if (UUID_PATTERN.test(value)) {
69
+ return value;
70
+ }
71
+ const hash = createHash('sha256').update(value).digest('hex');
72
+ return `${hash.slice(0, 8)}-${hash.slice(8, 12)}-${hash.slice(12, 16)}-${hash.slice(16, 20)}-${hash.slice(20, 32)}`;
73
+ };
74
+ const parseEnvironmentAppMonitors = ()=>{
75
+ const value = process.env.AWS_RUM_APP_MONITORS;
76
+ if (!value) {
77
+ return {};
78
+ }
79
+ try {
80
+ const parsed = JSON.parse(value);
81
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : {};
82
+ } catch {
83
+ throw new UserError('invalid_rum_config');
84
+ }
85
+ };
86
+ const getAppMonitor = (context, appId)=>{
87
+ const configuredMonitors = context.config?.aws?.rum?.appMonitors || Config.get('aws.rum.appMonitors', {});
88
+ const environmentMonitors = parseEnvironmentAppMonitors();
89
+ const configuredMonitor = environmentMonitors[appId] || configuredMonitors[appId];
90
+ const monitor = typeof configuredMonitor === 'string' ? {
91
+ id: configuredMonitor
92
+ } : configuredMonitor;
93
+ const monitorId = normalizeText(monitor?.id, 36);
94
+ if (!monitorId || !UUID_PATTERN.test(monitorId)) {
95
+ throw new UserError('invalid_rum_app');
96
+ }
97
+ return {
98
+ ...monitor,
99
+ domain: normalizeDomain(monitor.domain || context.config?.details?.url || Config.get('details.url') || appId),
100
+ id: monitorId,
101
+ name: normalizeText(monitor.name || appId, 255),
102
+ version: normalizeText(monitor.version || context.config?.details?.version || Config.get('details.version') || '1.0.0', 255)
103
+ };
104
+ };
105
+ const getRumClient = (context)=>{
106
+ const awsConfig = context.config?.aws || Config.get('aws', {});
107
+ const { accessKeyId, secretAccessKey, sessionToken } = awsConfig.credentials || {};
108
+ const credentials = accessKeyId && secretAccessKey ? {
109
+ accessKeyId,
110
+ secretAccessKey,
111
+ ...sessionToken ? {
112
+ sessionToken
113
+ } : {}
114
+ } : undefined;
115
+ return new RUMClient({
116
+ ...credentials ? {
117
+ credentials
118
+ } : {},
119
+ ...awsConfig.region ? {
120
+ region: awsConfig.region
121
+ } : {}
122
+ });
123
+ };
124
+ const sanitizeTimestamp = (value, now)=>{
125
+ const timestamp = Number(value);
126
+ if (!Number.isFinite(timestamp) || timestamp < now - MAX_TIMESTAMP_AGE_MS || timestamp > now + MAX_TIMESTAMP_FUTURE_MS) {
127
+ return now;
128
+ }
129
+ return Math.floor(timestamp);
130
+ };
12
131
  const sanitizeProperties = (properties = {})=>Object.entries(properties).slice(0, MAX_PROPERTIES).reduce((result, [key, value])=>{
13
132
  const propertyKey = normalizeText(key, 64);
14
- if (propertyKey && [
133
+ const normalizedPropertyKey = normalizePropertyKey(propertyKey);
134
+ if (propertyKey && !BLOCKED_PROPERTY_KEYS.has(normalizedPropertyKey) && [
15
135
  'boolean',
16
136
  'number',
17
137
  'string'
18
138
  ].includes(typeof value)) {
19
- result[propertyKey] = typeof value === 'string' ? normalizeText(value, 256) : value;
139
+ if (typeof value === 'string') {
140
+ const textValue = normalizeText(value, 256);
141
+ if (textValue && !EMAIL_PATTERN.test(textValue)) {
142
+ result[propertyKey] = textValue;
143
+ }
144
+ } else if (typeof value === 'boolean' || Number.isFinite(value)) {
145
+ result[propertyKey] = value;
146
+ }
20
147
  }
21
148
  return result;
22
149
  }, {});
23
- const sanitizeEvent = (event)=>{
24
- const eventId = normalizeText(event.eventId, 128);
150
+ const getRumMetadata = (appId, domain, properties)=>{
151
+ const normalizedProperties = Object.entries(properties).reduce((result, [key, value])=>({
152
+ ...result,
153
+ [normalizePropertyKey(key)]: value
154
+ }), {});
155
+ return Object.entries(RUM_METADATA_PROPERTY_KEYS).reduce((metadata, [key, aliases])=>{
156
+ const alias = aliases.find((candidate)=>normalizedProperties[candidate] !== undefined);
157
+ if (alias) {
158
+ metadata[key] = normalizedProperties[alias];
159
+ }
160
+ return metadata;
161
+ }, {
162
+ applicationId: appId,
163
+ ...domain ? {
164
+ domain
165
+ } : {},
166
+ platformType: 'web',
167
+ version: '1.0.0'
168
+ });
169
+ };
170
+ const sanitizeEvent = (event, now)=>{
171
+ const inputEventId = normalizeText(event.eventId, 128);
25
172
  const journeyId = normalizeText(event.journeyId, 128);
26
173
  const name = normalizeText(event.name, 128);
27
174
  const path = normalizeText(event.path, 256).split('?')[0].split('#')[0];
28
- const type = normalizeText(event.type, 64);
29
- if (!eventId || !journeyId || !name || !type) {
175
+ const type = normalizeText(event.type, 256).replace(/[^a-zA-Z0-9_.-]/g, '_');
176
+ if (!inputEventId || !journeyId || !name || !type) {
30
177
  throw new UserError('invalid_rum_event');
31
178
  }
32
179
  return {
33
- eventId,
34
- journeyId,
180
+ eventId: getAwsUuid(inputEventId),
181
+ journeyId: getAwsUuid(journeyId),
35
182
  name,
36
183
  ...path ? {
37
184
  path
38
185
  } : {},
39
186
  properties: sanitizeProperties(event.properties),
40
- sequence: Math.max(1, Math.floor(Number(event.sequence) || 1)),
41
- timestamp: Math.max(0, Number(event.timestamp) || Date.now()),
187
+ sequence: Math.min(MAX_SEQUENCE, Math.max(1, Math.floor(Number(event.sequence) || 1))),
188
+ timestamp: sanitizeTimestamp(event.timestamp, now),
42
189
  type
43
190
  };
44
191
  };
192
+ const groupEventsByJourney = (events)=>events.reduce((groups, event)=>{
193
+ const journeyEvents = groups.get(event.journeyId) || [];
194
+ journeyEvents.push(event);
195
+ groups.set(event.journeyId, journeyEvents);
196
+ return groups;
197
+ }, new Map());
45
198
  export const trackRum = async (context, batch)=>{
46
199
  const appId = normalizeText(batch?.appId, 128);
47
200
  const inputEvents = Array.isArray(batch?.events) ? batch.events : [];
48
201
  if (!appId || inputEvents.length === 0 || inputEvents.length > MAX_BATCH_SIZE) {
49
202
  throw new UserError('invalid_rum_batch');
50
203
  }
51
- const events = inputEvents.map(sanitizeEvent);
52
204
  const now = Date.now();
53
- await useDb(context.databaseName).query(aql`
54
- FOR event IN ${events}
55
- UPSERT {appId: ${appId}, eventId: event.eventId}
56
- INSERT MERGE(event, {added: ${now}, appId: ${appId}, modified: ${now}})
57
- UPDATE {modified: ${now}}
58
- IN ${literal(COLLECTIONS.RUM_LOGS)}
59
- `);
205
+ const monitor = getAppMonitor(context, appId);
206
+ const events = inputEvents.map((event)=>sanitizeEvent(event, now));
207
+ const eventsByJourney = groupEventsByJourney(events);
208
+ const client = getRumClient(context);
209
+ await Promise.all(Array.from(eventsByJourney.entries()).map(([journeyId, journeyEvents])=>client.send(new PutRumEventsCommand({
210
+ ...monitor.alias ? {
211
+ Alias: monitor.alias
212
+ } : {},
213
+ AppMonitorDetails: {
214
+ id: monitor.id,
215
+ name: monitor.name,
216
+ version: monitor.version
217
+ },
218
+ BatchId: randomUUID(),
219
+ Id: monitor.id,
220
+ RumEvents: journeyEvents.map((event)=>({
221
+ details: JSON.stringify({
222
+ appId,
223
+ name: event.name,
224
+ ...event.path ? {
225
+ path: event.path
226
+ } : {},
227
+ properties: event.properties,
228
+ sequence: event.sequence
229
+ }),
230
+ id: event.eventId,
231
+ metadata: JSON.stringify(getRumMetadata(appId, monitor.domain, event.properties)),
232
+ timestamp: new Date(event.timestamp),
233
+ type: event.type
234
+ })),
235
+ UserDetails: {
236
+ sessionId: journeyId,
237
+ userId: journeyId
238
+ }
239
+ }))));
60
240
  return {
61
241
  accepted: events.length,
62
242
  appId
63
243
  };
64
244
  };
65
245
 
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvcnVtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI2LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtsaXRlcmFsfSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuXG5pbXBvcnQge0NPTExFQ1RJT05TfSBmcm9tICcuLi9jb25zdGFudHMvY29sbGVjdGlvbnMuanMnO1xuaW1wb3J0IHtVc2VyRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7UnVtQmF0Y2hJbnB1dFR5cGUsIFJ1bUV2ZW50SW5wdXRUeXBlLCBSdW1Qcm9wZXJ0eSwgUnVtVHJhY2tSZXN1bHRUeXBlfSBmcm9tICcuLi90eXBlcy9ydW0udHlwZXMuanMnO1xuXG5jb25zdCBNQVhfQkFUQ0hfU0laRSA9IDUwO1xuY29uc3QgTUFYX1BST1BFUlRJRVMgPSAyMDtcblxuY29uc3Qgbm9ybWFsaXplVGV4dCA9ICh2YWx1ZTogdW5rbm93biwgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcgPT5cbiAgU3RyaW5nKHZhbHVlIHx8ICcnKS50cmltKCkuc2xpY2UoMCwgbWF4TGVuZ3RoKTtcblxuY29uc3Qgc2FuaXRpemVQcm9wZXJ0aWVzID0gKFxuICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBSdW1Qcm9wZXJ0eT4gPSB7fVxuKTogUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+ID0+IE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpXG4gIC5zbGljZSgwLCBNQVhfUFJPUEVSVElFUylcbiAgLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBSdW1Qcm9wZXJ0eT4+KChyZXN1bHQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5S2V5ID0gbm9ybWFsaXplVGV4dChrZXksIDY0KTtcblxuICAgIGlmKHByb3BlcnR5S2V5ICYmIFsnYm9vbGVhbicsICdudW1iZXInLCAnc3RyaW5nJ10uaW5jbHVkZXModHlwZW9mIHZhbHVlKSkge1xuICAgICAgcmVzdWx0W3Byb3BlcnR5S2V5XSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBub3JtYWxpemVUZXh0KHZhbHVlLCAyNTYpIDogdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwge30pO1xuXG5jb25zdCBzYW5pdGl6ZUV2ZW50ID0gKGV2ZW50OiBSdW1FdmVudElucHV0VHlwZSk6IFJ1bUV2ZW50SW5wdXRUeXBlID0+IHtcbiAgY29uc3QgZXZlbnRJZCA9IG5vcm1hbGl6ZVRleHQoZXZlbnQuZXZlbnRJZCwgMTI4KTtcbiAgY29uc3Qgam91cm5leUlkID0gbm9ybWFsaXplVGV4dChldmVudC5qb3VybmV5SWQsIDEyOCk7XG4gIGNvbnN0IG5hbWUgPSBub3JtYWxpemVUZXh0KGV2ZW50Lm5hbWUsIDEyOCk7XG4gIGNvbnN0IHBhdGggPSBub3JtYWxpemVUZXh0KGV2ZW50LnBhdGgsIDI1Nikuc3BsaXQoJz8nKVswXS5zcGxpdCgnIycpWzBdO1xuICBjb25zdCB0eXBlID0gbm9ybWFsaXplVGV4dChldmVudC50eXBlLCA2NCk7XG5cbiAgaWYoIWV2ZW50SWQgfHwgIWpvdXJuZXlJZCB8fCAhbmFtZSB8fCAhdHlwZSkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2V2ZW50Jyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV2ZW50SWQsXG4gICAgam91cm5leUlkLFxuICAgIG5hbWUsXG4gICAgLi4uKHBhdGggPyB7cGF0aH0gOiB7fSksXG4gICAgcHJvcGVydGllczogc2FuaXRpemVQcm9wZXJ0aWVzKGV2ZW50LnByb3BlcnRpZXMpLFxuICAgIHNlcXVlbmNlOiBNYXRoLm1heCgxLCBNYXRoLmZsb29yKE51bWJlcihldmVudC5zZXF1ZW5jZSkgfHwgMSkpLFxuICAgIHRpbWVzdGFtcDogTWF0aC5tYXgoMCwgTnVtYmVyKGV2ZW50LnRpbWVzdGFtcCkgfHwgRGF0ZS5ub3coKSksXG4gICAgdHlwZVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYWNrUnVtID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBiYXRjaDogUnVtQmF0Y2hJbnB1dFR5cGVcbik6IFByb21pc2U8UnVtVHJhY2tSZXN1bHRUeXBlPiA9PiB7XG4gIGNvbnN0IGFwcElkID0gbm9ybWFsaXplVGV4dChiYXRjaD8uYXBwSWQsIDEyOCk7XG4gIGNvbnN0IGlucHV0RXZlbnRzID0gQXJyYXkuaXNBcnJheShiYXRjaD8uZXZlbnRzKSA/IGJhdGNoLmV2ZW50cyA6IFtdO1xuXG4gIGlmKCFhcHBJZCB8fCBpbnB1dEV2ZW50cy5sZW5ndGggPT09IDAgfHwgaW5wdXRFdmVudHMubGVuZ3RoID4gTUFYX0JBVENIX1NJWkUpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdpbnZhbGlkX3J1bV9iYXRjaCcpO1xuICB9XG5cbiAgY29uc3QgZXZlbnRzID0gaW5wdXRFdmVudHMubWFwKHNhbml0aXplRXZlbnQpO1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gIGF3YWl0IHVzZURiKGNvbnRleHQuZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxgXG4gICAgRk9SIGV2ZW50IElOICR7ZXZlbnRzfVxuICAgICAgVVBTRVJUIHthcHBJZDogJHthcHBJZH0sIGV2ZW50SWQ6IGV2ZW50LmV2ZW50SWR9XG4gICAgICBJTlNFUlQgTUVSR0UoZXZlbnQsIHthZGRlZDogJHtub3d9LCBhcHBJZDogJHthcHBJZH0sIG1vZGlmaWVkOiAke25vd319KVxuICAgICAgVVBEQVRFIHttb2RpZmllZDogJHtub3d9fVxuICAgICAgSU4gJHtsaXRlcmFsKENPTExFQ1RJT05TLlJVTV9MT0dTKX1cbiAgYCk7XG5cbiAgcmV0dXJuIHthY2NlcHRlZDogZXZlbnRzLmxlbmd0aCwgYXBwSWR9O1xufTtcbiJdLCJuYW1lcyI6WyJhcWwiLCJsaXRlcmFsIiwiQ09MTEVDVElPTlMiLCJVc2VyRXJyb3IiLCJ1c2VEYiIsIk1BWF9CQVRDSF9TSVpFIiwiTUFYX1BST1BFUlRJRVMiLCJub3JtYWxpemVUZXh0IiwidmFsdWUiLCJtYXhMZW5ndGgiLCJTdHJpbmciLCJ0cmltIiwic2xpY2UiLCJzYW5pdGl6ZVByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsInJlc3VsdCIsImtleSIsInByb3BlcnR5S2V5IiwiaW5jbHVkZXMiLCJzYW5pdGl6ZUV2ZW50IiwiZXZlbnQiLCJldmVudElkIiwiam91cm5leUlkIiwibmFtZSIsInBhdGgiLCJzcGxpdCIsInR5cGUiLCJzZXF1ZW5jZSIsIk1hdGgiLCJtYXgiLCJmbG9vciIsIk51bWJlciIsInRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJ0cmFja1J1bSIsImNvbnRleHQiLCJiYXRjaCIsImFwcElkIiwiaW5wdXRFdmVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJldmVudHMiLCJsZW5ndGgiLCJtYXAiLCJkYXRhYmFzZU5hbWUiLCJxdWVyeSIsIlJVTV9MT0dTIiwiYWNjZXB0ZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEdBQUcsUUFBTyxXQUFXO0FBQzdCLFNBQVFDLE9BQU8sUUFBTyxlQUFlO0FBRXJDLFNBQVFDLFdBQVcsUUFBTyw4QkFBOEI7QUFDeEQsU0FBUUMsU0FBUyxRQUFPLDZCQUE2QjtBQUNyRCxTQUFR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
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvcnVtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI2LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1B1dFJ1bUV2ZW50c0NvbW1hbmQsIFJVTUNsaWVudH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXJ1bSc7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHJhbmRvbVVVSUR9IGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuaW1wb3J0IHtVc2VyRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcblxuaW1wb3J0IHR5cGUge0F3c0NvbmZpZywgQXdzUnVtQXBwTW9uaXRvckNvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtSdW1CYXRjaElucHV0VHlwZSwgUnVtRXZlbnRJbnB1dFR5cGUsIFJ1bVByb3BlcnR5LCBSdW1UcmFja1Jlc3VsdFR5cGV9IGZyb20gJy4uL3R5cGVzL3J1bS50eXBlcy5qcyc7XG5cbmNvbnN0IE1BWF9CQVRDSF9TSVpFID0gNTA7XG5jb25zdCBNQVhfUFJPUEVSVElFUyA9IDIwO1xuY29uc3QgTUFYX1NFUVVFTkNFID0gMV8wMDBfMDAwO1xuY29uc3QgTUFYX1RJTUVTVEFNUF9BR0VfTVMgPSAyNCAqIDYwICogNjAgKiAxMDAwO1xuY29uc3QgTUFYX1RJTUVTVEFNUF9GVVRVUkVfTVMgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgVVVJRF9QQVRURVJOID0gL15bYS1mXFxkXXs4fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXs0fS1bYS1mXFxkXXsxMn0kL2k7XG5jb25zdCBCTE9DS0VEX1BST1BFUlRZX0tFWVMgPSBuZXcgU2V0KFtcbiAgJ2FjY291bnRpZCcsXG4gICdhZGRyZXNzJyxcbiAgJ2VtYWlsJyxcbiAgJ2ZpcnN0bmFtZScsXG4gICdmdWxsbmFtZScsXG4gICdnZW9sb2NhdGlvbicsXG4gICdpcCcsXG4gICdpcGFkZHJlc3MnLFxuICAnbGFzdG5hbWUnLFxuICAnbGF0aXR1ZGUnLFxuICAnbG9uZ2l0dWRlJyxcbiAgJ25hbWUnLFxuICAncGhvbmUnLFxuICAncmVmZXJyZXInLFxuICAndG9rZW4nLFxuICAndXNlcmFnZW50JyxcbiAgJ3VzZXJpZCdcbl0pO1xuY29uc3QgRU1BSUxfUEFUVEVSTiA9IC9cXGJbXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rXFxiL2k7XG5cbnR5cGUgUnVtQXBwTW9uaXRvck1hcCA9IFJlY29yZDxzdHJpbmcsIEF3c1J1bUFwcE1vbml0b3JDb25maWcgfCBzdHJpbmc+O1xudHlwZSBSdW1NZXRhZGF0YSA9IFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5PjtcblxuY29uc3QgUlVNX01FVEFEQVRBX1BST1BFUlRZX0tFWVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHtcbiAgYnJvd3Nlckxhbmd1YWdlOiBbJ2Jyb3dzZXJsYW5ndWFnZSddLFxuICBicm93c2VyTmFtZTogWydicm93c2VybmFtZSddLFxuICBicm93c2VyVmVyc2lvbjogWydicm93c2VydmVyc2lvbiddLFxuICBkZXZpY2VUeXBlOiBbJ2RldmljZXR5cGUnXSxcbiAgaW50ZXJhY3Rpb246IFsnaW50ZXJhY3Rpb24nXSxcbiAgb3NOYW1lOiBbJ29zbmFtZSddLFxuICBvc1ZlcnNpb246IFsnb3N2ZXJzaW9uJ10sXG4gIHBhZ2VJZDogWydwYWdlaWQnXSxcbiAgcGFyZW50UGFnZUlkOiBbJ3BhcmVudHBhZ2VpZCcsICdwYXJlbnRwYWdlJ11cbn07XG5cbmNvbnN0IG5vcm1hbGl6ZVRleHQgPSAodmFsdWU6IHVua25vd24sIG1heExlbmd0aDogbnVtYmVyKTogc3RyaW5nID0+XG4gIFN0cmluZyh2YWx1ZSB8fCAnJykudHJpbSgpLnNsaWNlKDAsIG1heExlbmd0aCk7XG5cbmNvbnN0IG5vcm1hbGl6ZVByb3BlcnR5S2V5ID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdmFsdWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOV0vZywgJycpO1xuXG5jb25zdCBub3JtYWxpemVEb21haW4gPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT4gbm9ybWFsaXplVGV4dCh2YWx1ZSwgMjUzKVxuICAucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC8vaSwgJycpXG4gIC5zcGxpdCgnLycpWzBdXG4gIC5zcGxpdCgnOicpWzBdO1xuXG5jb25zdCBnZXRBd3NVdWlkID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZihVVUlEX1BBVFRFUk4udGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZhbHVlKS5kaWdlc3QoJ2hleCcpO1xuICByZXR1cm4gYCR7aGFzaC5zbGljZSgwLCA4KX0tJHtoYXNoLnNsaWNlKDgsIDEyKX0tJHtoYXNoLnNsaWNlKDEyLCAxNil9LSR7aGFzaC5zbGljZSgxNiwgMjApfS0ke2hhc2guc2xpY2UoMjAsIDMyKX1gO1xufTtcblxuY29uc3QgcGFyc2VFbnZpcm9ubWVudEFwcE1vbml0b3JzID0gKCk6IFJ1bUFwcE1vbml0b3JNYXAgPT4ge1xuICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52LkFXU19SVU1fQVBQX01PTklUT1JTO1xuXG4gIGlmKCF2YWx1ZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgcmV0dXJuIHBhcnNlZCAmJiB0eXBlb2YgcGFyc2VkID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkIDoge307XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2NvbmZpZycpO1xuICB9XG59O1xuXG5jb25zdCBnZXRBcHBNb25pdG9yID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcElkOiBzdHJpbmcpOiBBd3NSdW1BcHBNb25pdG9yQ29uZmlnID0+IHtcbiAgY29uc3QgY29uZmlndXJlZE1vbml0b3JzID0gY29udGV4dC5jb25maWc/LmF3cz8ucnVtPy5hcHBNb25pdG9ycyB8fFxuICAgIENvbmZpZy5nZXQ8UnVtQXBwTW9uaXRvck1hcD4oJ2F3cy5ydW0uYXBwTW9uaXRvcnMnLCB7fSk7XG4gIGNvbnN0IGVudmlyb25tZW50TW9uaXRvcnMgPSBwYXJzZUVudmlyb25tZW50QXBwTW9uaXRvcnMoKTtcbiAgY29uc3QgY29uZmlndXJlZE1vbml0b3IgPSBlbnZpcm9ubWVudE1vbml0b3JzW2FwcElkXSB8fCBjb25maWd1cmVkTW9uaXRvcnNbYXBwSWRdO1xuICBjb25zdCBtb25pdG9yID0gdHlwZW9mIGNvbmZpZ3VyZWRNb25pdG9yID09PSAnc3RyaW5nJyA/IHtpZDogY29uZmlndXJlZE1vbml0b3J9IDogY29uZmlndXJlZE1vbml0b3I7XG4gIGNvbnN0IG1vbml0b3JJZCA9IG5vcm1hbGl6ZVRleHQobW9uaXRvcj8uaWQsIDM2KTtcblxuICBpZighbW9uaXRvcklkIHx8ICFVVUlEX1BBVFRFUk4udGVzdChtb25pdG9ySWQpKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fYXBwJyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLm1vbml0b3IsXG4gICAgZG9tYWluOiBub3JtYWxpemVEb21haW4oXG4gICAgICBtb25pdG9yLmRvbWFpbiB8fCBjb250ZXh0LmNvbmZpZz8uZGV0YWlscz8udXJsIHx8IENvbmZpZy5nZXQoJ2RldGFpbHMudXJsJykgfHwgYXBwSWRcbiAgICApLFxuICAgIGlkOiBtb25pdG9ySWQsXG4gICAgbmFtZTogbm9ybWFsaXplVGV4dChtb25pdG9yLm5hbWUgfHwgYXBwSWQsIDI1NSksXG4gICAgdmVyc2lvbjogbm9ybWFsaXplVGV4dChcbiAgICAgIG1vbml0b3IudmVyc2lvbiB8fCBjb250ZXh0LmNvbmZpZz8uZGV0YWlscz8udmVyc2lvbiB8fCBDb25maWcuZ2V0KCdkZXRhaWxzLnZlcnNpb24nKSB8fCAnMS4wLjAnLFxuICAgICAgMjU1XG4gICAgKVxuICB9O1xufTtcblxuY29uc3QgZ2V0UnVtQ2xpZW50ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBSVU1DbGllbnQgPT4ge1xuICBjb25zdCBhd3NDb25maWc6IEF3c0NvbmZpZyA9IGNvbnRleHQuY29uZmlnPy5hd3MgfHwgQ29uZmlnLmdldDxBd3NDb25maWc+KCdhd3MnLCB7fSk7XG4gIGNvbnN0IHthY2Nlc3NLZXlJZCwgc2VjcmV0QWNjZXNzS2V5LCBzZXNzaW9uVG9rZW59ID0gYXdzQ29uZmlnLmNyZWRlbnRpYWxzIHx8IHt9O1xuICBjb25zdCBjcmVkZW50aWFscyA9IGFjY2Vzc0tleUlkICYmIHNlY3JldEFjY2Vzc0tleSA/IHtcbiAgICBhY2Nlc3NLZXlJZCxcbiAgICBzZWNyZXRBY2Nlc3NLZXksXG4gICAgLi4uKHNlc3Npb25Ub2tlbiA/IHtzZXNzaW9uVG9rZW59IDoge30pXG4gIH0gOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIG5ldyBSVU1DbGllbnQoe1xuICAgIC4uLihjcmVkZW50aWFscyA/IHtjcmVkZW50aWFsc30gOiB7fSksXG4gICAgLi4uKGF3c0NvbmZpZy5yZWdpb24gPyB7cmVnaW9uOiBhd3NDb25maWcucmVnaW9ufSA6IHt9KVxuICB9KTtcbn07XG5cbmNvbnN0IHNhbml0aXplVGltZXN0YW1wID0gKHZhbHVlOiB1bmtub3duLCBub3c6IG51bWJlcik6IG51bWJlciA9PiB7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IE51bWJlcih2YWx1ZSk7XG5cbiAgaWYoXG4gICAgIU51bWJlci5pc0Zpbml0ZSh0aW1lc3RhbXApIHx8XG4gICAgdGltZXN0YW1wIDwgbm93IC0gTUFYX1RJTUVTVEFNUF9BR0VfTVMgfHxcbiAgICB0aW1lc3RhbXAgPiBub3cgKyBNQVhfVElNRVNUQU1QX0ZVVFVSRV9NU1xuICApIHtcbiAgICByZXR1cm4gbm93O1xuICB9XG5cbiAgcmV0dXJuIE1hdGguZmxvb3IodGltZXN0YW1wKTtcbn07XG5cbmNvbnN0IHNhbml0aXplUHJvcGVydGllcyA9IChcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+ID0ge31cbik6IFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5PiA9PiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKVxuICAuc2xpY2UoMCwgTUFYX1BST1BFUlRJRVMpXG4gIC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+PigocmVzdWx0LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eUtleSA9IG5vcm1hbGl6ZVRleHQoa2V5LCA2NCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFByb3BlcnR5S2V5ID0gbm9ybWFsaXplUHJvcGVydHlLZXkocHJvcGVydHlLZXkpO1xuXG4gICAgaWYoXG4gICAgICBwcm9wZXJ0eUtleSAmJlxuICAgICAgIUJMT0NLRURfUFJPUEVSVFlfS0VZUy5oYXMobm9ybWFsaXplZFByb3BlcnR5S2V5KSAmJlxuICAgICAgWydib29sZWFuJywgJ251bWJlcicsICdzdHJpbmcnXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpXG4gICAgKSB7XG4gICAgICBpZih0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHRleHRWYWx1ZSA9IG5vcm1hbGl6ZVRleHQodmFsdWUsIDI1Nik7XG5cbiAgICAgICAgaWYodGV4dFZhbHVlICYmICFFTUFJTF9QQVRURVJOLnRlc3QodGV4dFZhbHVlKSkge1xuICAgICAgICAgIHJlc3VsdFtwcm9wZXJ0eUtleV0gPSB0ZXh0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZih0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCBOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7fSk7XG5cbmNvbnN0IGdldFJ1bU1ldGFkYXRhID0gKFxuICBhcHBJZDogc3RyaW5nLFxuICBkb21haW46IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+XG4pOiBSdW1NZXRhZGF0YSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRQcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMocHJvcGVydGllcykucmVkdWNlPFJlY29yZDxzdHJpbmcsIFJ1bVByb3BlcnR5Pj4oXG4gICAgKHJlc3VsdCwgW2tleSwgdmFsdWVdKSA9PiAoey4uLnJlc3VsdCwgW25vcm1hbGl6ZVByb3BlcnR5S2V5KGtleSldOiB2YWx1ZX0pLFxuICAgIHt9XG4gICk7XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKFJVTV9NRVRBREFUQV9QUk9QRVJUWV9LRVlTKS5yZWR1Y2U8UnVtTWV0YWRhdGE+KChtZXRhZGF0YSwgW2tleSwgYWxpYXNlc10pID0+IHtcbiAgICBjb25zdCBhbGlhcyA9IGFsaWFzZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBub3JtYWxpemVkUHJvcGVydGllc1tjYW5kaWRhdGVdICE9PSB1bmRlZmluZWQpO1xuXG4gICAgaWYoYWxpYXMpIHtcbiAgICAgIG1ldGFkYXRhW2tleV0gPSBub3JtYWxpemVkUHJvcGVydGllc1thbGlhc107XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9LCB7XG4gICAgYXBwbGljYXRpb25JZDogYXBwSWQsXG4gICAgLi4uKGRvbWFpbiA/IHtkb21haW59IDoge30pLFxuICAgIHBsYXRmb3JtVHlwZTogJ3dlYicsXG4gICAgdmVyc2lvbjogJzEuMC4wJ1xuICB9KTtcbn07XG5cbmNvbnN0IHNhbml0aXplRXZlbnQgPSAoZXZlbnQ6IFJ1bUV2ZW50SW5wdXRUeXBlLCBub3c6IG51bWJlcik6IFJ1bUV2ZW50SW5wdXRUeXBlID0+IHtcbiAgY29uc3QgaW5wdXRFdmVudElkID0gbm9ybWFsaXplVGV4dChldmVudC5ldmVudElkLCAxMjgpO1xuICBjb25zdCBqb3VybmV5SWQgPSBub3JtYWxpemVUZXh0KGV2ZW50LmpvdXJuZXlJZCwgMTI4KTtcbiAgY29uc3QgbmFtZSA9IG5vcm1hbGl6ZVRleHQoZXZlbnQubmFtZSwgMTI4KTtcbiAgY29uc3QgcGF0aCA9IG5vcm1hbGl6ZVRleHQoZXZlbnQucGF0aCwgMjU2KS5zcGxpdCgnPycpWzBdLnNwbGl0KCcjJylbMF07XG4gIGNvbnN0IHR5cGUgPSBub3JtYWxpemVUZXh0KGV2ZW50LnR5cGUsIDI1NikucmVwbGFjZSgvW15hLXpBLVowLTlfLi1dL2csICdfJyk7XG5cbiAgaWYoIWlucHV0RXZlbnRJZCB8fCAham91cm5leUlkIHx8ICFuYW1lIHx8ICF0eXBlKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcignaW52YWxpZF9ydW1fZXZlbnQnKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXZlbnRJZDogZ2V0QXdzVXVpZChpbnB1dEV2ZW50SWQpLFxuICAgIGpvdXJuZXlJZDogZ2V0QXdzVXVpZChqb3VybmV5SWQpLFxuICAgIG5hbWUsXG4gICAgLi4uKHBhdGggPyB7cGF0aH0gOiB7fSksXG4gICAgcHJvcGVydGllczogc2FuaXRpemVQcm9wZXJ0aWVzKGV2ZW50LnByb3BlcnRpZXMpLFxuICAgIHNlcXVlbmNlOiBNYXRoLm1pbihNQVhfU0VRVUVOQ0UsIE1hdGgubWF4KDEsIE1hdGguZmxvb3IoTnVtYmVyKGV2ZW50LnNlcXVlbmNlKSB8fCAxKSkpLFxuICAgIHRpbWVzdGFtcDogc2FuaXRpemVUaW1lc3RhbXAoZXZlbnQudGltZXN0YW1wLCBub3cpLFxuICAgIHR5cGVcbiAgfTtcbn07XG5cbmNvbnN0IGdyb3VwRXZlbnRzQnlKb3VybmV5ID0gKGV2ZW50czogUnVtRXZlbnRJbnB1dFR5cGVbXSk6IE1hcDxzdHJpbmcsIFJ1bUV2ZW50SW5wdXRUeXBlW10+ID0+XG4gIGV2ZW50cy5yZWR1Y2U8TWFwPHN0cmluZywgUnVtRXZlbnRJbnB1dFR5cGVbXT4+KChncm91cHMsIGV2ZW50KSA9PiB7XG4gICAgY29uc3Qgam91cm5leUV2ZW50cyA9IGdyb3Vwcy5nZXQoZXZlbnQuam91cm5leUlkKSB8fCBbXTtcbiAgICBqb3VybmV5RXZlbnRzLnB1c2goZXZlbnQpO1xuICAgIGdyb3Vwcy5zZXQoZXZlbnQuam91cm5leUlkLCBqb3VybmV5RXZlbnRzKTtcbiAgICByZXR1cm4gZ3JvdXBzO1xuICB9LCBuZXcgTWFwKCkpO1xuXG5leHBvcnQgY29uc3QgdHJhY2tSdW0gPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGJhdGNoOiBSdW1CYXRjaElucHV0VHlwZVxuKTogUHJvbWlzZTxSdW1UcmFja1Jlc3VsdFR5cGU+ID0+IHtcbiAgY29uc3QgYXBwSWQgPSBub3JtYWxpemVUZXh0KGJhdGNoPy5hcHBJZCwgMTI4KTtcbiAgY29uc3QgaW5wdXRFdmVudHMgPSBBcnJheS5pc0FycmF5KGJhdGNoPy5ldmVudHMpID8gYmF0Y2guZXZlbnRzIDogW107XG5cbiAgaWYoIWFwcElkIHx8IGlucHV0RXZlbnRzLmxlbmd0aCA9PT0gMCB8fCBpbnB1dEV2ZW50cy5sZW5ndGggPiBNQVhfQkFUQ0hfU0laRSkge1xuICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ2ludmFsaWRfcnVtX2JhdGNoJyk7XG4gIH1cblxuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCBtb25pdG9yID0gZ2V0QXBwTW9uaXRvcihjb250ZXh0LCBhcHBJZCk7XG4gIGNvbnN0IGV2ZW50cyA9IGlucHV0RXZlbnRzLm1hcCgoZXZlbnQpID0+IHNhbml0aXplRXZlbnQoZXZlbnQsIG5vdykpO1xuICBjb25zdCBldmVudHNCeUpvdXJuZXkgPSBncm91cEV2ZW50c0J5Sm91cm5leShldmVudHMpO1xuICBjb25zdCBjbGllbnQgPSBnZXRSdW1DbGllbnQoY29udGV4dCk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShldmVudHNCeUpvdXJuZXkuZW50cmllcygpKS5tYXAoKFtqb3VybmV5SWQsIGpvdXJuZXlFdmVudHNdKSA9PlxuICAgIGNsaWVudC5zZW5kKG5ldyBQdXRSdW1FdmVudHNDb21tYW5kKHtcbiAgICAgIC4uLihtb25pdG9yLmFsaWFzID8ge0FsaWFzOiBtb25pdG9yLmFsaWFzfSA6IHt9KSxcbiAgICAgIEFwcE1vbml0b3JEZXRhaWxzOiB7XG4gICAgICAgIGlkOiBtb25pdG9yLmlkLFxuICAgICAgICBuYW1lOiBtb25pdG9yLm5hbWUsXG4gICAgICAgIHZlcnNpb246IG1vbml0b3IudmVyc2lvblxuICAgICAgfSxcbiAgICAgIEJhdGNoSWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgIElkOiBtb25pdG9yLmlkLFxuICAgICAgUnVtRXZlbnRzOiBqb3VybmV5RXZlbnRzLm1hcCgoZXZlbnQpID0+ICh7XG4gICAgICAgIGRldGFpbHM6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBhcHBJZCxcbiAgICAgICAgICBuYW1lOiBldmVudC5uYW1lLFxuICAgICAgICAgIC4uLihldmVudC5wYXRoID8ge3BhdGg6IGV2ZW50LnBhdGh9IDoge30pLFxuICAgICAgICAgIHByb3BlcnRpZXM6IGV2ZW50LnByb3BlcnRpZXMsXG4gICAgICAgICAgc2VxdWVuY2U6IGV2ZW50LnNlcXVlbmNlXG4gICAgICAgIH0pLFxuICAgICAgICBpZDogZXZlbnQuZXZlbnRJZCxcbiAgICAgICAgbWV0YWRhdGE6IEpTT04uc3RyaW5naWZ5KGdldFJ1bU1ldGFkYXRhKFxuICAgICAgICAgIGFwcElkLFxuICAgICAgICAgIG1vbml0b3IuZG9tYWluLFxuICAgICAgICAgIGV2ZW50LnByb3BlcnRpZXMgYXMgUmVjb3JkPHN0cmluZywgUnVtUHJvcGVydHk+XG4gICAgICAgICkpLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKGV2ZW50LnRpbWVzdGFtcCksXG4gICAgICAgIHR5cGU6IGV2ZW50LnR5cGVcbiAgICAgIH0pKSxcbiAgICAgIFVzZXJEZXRhaWxzOiB7XG4gICAgICAgIHNlc3Npb25JZDogam91cm5leUlkLFxuICAgICAgICB1c2VySWQ6IGpvdXJuZXlJZFxuICAgICAgfVxuICAgIH0pKVxuICApKTtcblxuICByZXR1cm4ge2FjY2VwdGVkOiBldmVudHMubGVuZ3RoLCBhcHBJZH07XG59O1xuIl0sIm5hbWVzIjpbIlB1dFJ1bUV2ZW50c0NvbW1hbmQiLCJSVU1DbGllbnQiLCJjcmVhdGVIYXNoIiwicmFuZG9tVVVJRCIsIkNvbmZpZyIsIlVzZXJFcnJvciIsIk1BWF9CQVRDSF9TSVpFIiwiTUFYX1BST1BFUlRJRVMiLCJNQVhfU0VRVUVOQ0UiLCJNQVhfVElNRVNUQU1QX0FHRV9NUyIsIk1BWF9USU1FU1RBTVBfRlVUVVJFX01TIiwiVVVJRF9QQVRURVJOIiwiQkxPQ0tFRF9QUk9QRVJUWV9LRVlTIiwiU2V0IiwiRU1BSUxfUEFUVEVSTiIsIlJVTV9NRVRBREFUQV9QUk9QRVJUWV9LRVlTIiwiYnJvd3Nlckxhbmd1YWdlIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyVmVyc2lvbiIsImRldmljZVR5cGUiLCJpbnRlcmFjdGlvbiIsIm9zTmFtZSIsIm9zVmVyc2lvbiIsInBhZ2VJZCIsInBhcmVudFBhZ2VJZCIsIm5vcm1hbGl6ZVRleHQiLCJ2YWx1ZSIsIm1heExlbmd0aCIsIlN0cmluZyIsInRyaW0iLCJzbGljZSIsIm5vcm1hbGl6ZVByb3BlcnR5S2V5IiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwibm9ybWFsaXplRG9tYWluIiwic3BsaXQiLCJnZXRBd3NVdWlkIiwidGVzdCIsImhhc2giLCJ1cGRhdGUiLCJkaWdlc3QiLCJwYXJzZUVudmlyb25tZW50QXBwTW9uaXRvcnMiLCJwcm9jZXNzIiwiZW52IiwiQVdTX1JVTV9BUFBfTU9OSVRPUlMiLCJwYXJzZWQiLCJKU09OIiwicGFyc2UiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRBcHBNb25pdG9yIiwiY29udGV4dCIsImFwcElkIiwiY29uZmlndXJlZE1vbml0b3JzIiwiY29uZmlnIiwiYXdzIiwicnVtIiwiYXBwTW9uaXRvcnMiLCJnZXQiLCJlbnZpcm9ubWVudE1vbml0b3JzIiwiY29uZmlndXJlZE1vbml0b3IiLCJtb25pdG9yIiwiaWQiLCJtb25pdG9ySWQiLCJkb21haW4iLCJkZXRhaWxzIiwidXJsIiwibmFtZSIsInZlcnNpb24iLCJnZXRSdW1DbGllbnQiLCJhd3NDb25maWciLCJhY2Nlc3NLZXlJZCIsInNlY3JldEFjY2Vzc0tleSIsInNlc3Npb25Ub2tlbiIsImNyZWRlbnRpYWxzIiwidW5kZWZpbmVkIiwicmVnaW9uIiwic2FuaXRpemVUaW1lc3RhbXAiLCJub3ciLCJ0aW1lc3RhbXAiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsIk1hdGgiLCJmbG9vciIsInNhbml0aXplUHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwicmVkdWNlIiwicmVzdWx0Iiwia2V5IiwicHJvcGVydHlLZXkiLCJub3JtYWxpemVkUHJvcGVydHlLZXkiLCJoYXMiLCJpbmNsdWRlcyIsInRleHRWYWx1ZSIsImdldFJ1bU1ldGFkYXRhIiwibm9ybWFsaXplZFByb3BlcnRpZXMiLCJtZXRhZGF0YSIsImFsaWFzZXMiLCJhbGlhcyIsImZpbmQiLCJjYW5kaWRhdGUiLCJhcHBsaWNhdGlvbklkIiwicGxhdGZvcm1UeXBlIiwic2FuaXRpemVFdmVudCIsImV2ZW50IiwiaW5wdXRFdmVudElkIiwiZXZlbnRJZCIsImpvdXJuZXlJZCIsInBhdGgiLCJ0eXBlIiwic2VxdWVuY2UiLCJtaW4iLCJtYXgiLCJncm91cEV2ZW50c0J5Sm91cm5leSIsImV2ZW50cyIsImdyb3VwcyIsImpvdXJuZXlFdmVudHMiLCJwdXNoIiwic2V0IiwiTWFwIiwidHJhY2tSdW0iLCJiYXRjaCIsImlucHV0RXZlbnRzIiwibGVuZ3RoIiwiRGF0ZSIsIm1hcCIsImV2ZW50c0J5Sm91cm5leSIsImNsaWVudCIsIlByb21pc2UiLCJhbGwiLCJmcm9tIiwic2VuZCIsIkFsaWFzIiwiQXBwTW9uaXRvckRldGFpbHMiLCJCYXRjaElkIiwiSWQiLCJSdW1FdmVudHMiLCJzdHJpbmdpZnkiLCJVc2VyRGV0YWlscyIsInNlc3Npb25JZCIsInVzZXJJZCIsImFjY2VwdGVkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxtQkFBbUIsRUFBRUMsU0FBUyxRQUFPLHNCQUFzQjtBQUNuRSxTQUFRQyxVQUFVLEVBQUVDLFVBQVUsUUFBTyxTQUFTO0FBRTlDLFNBQVFDLE1BQU0sUUFBTyxlQUFlO0FBQ3BDLFNBQVFDLFNBQVMsUUFBTyw2QkFBNkI7QUFNckQsTUFBTUMsaUJBQWlCO0FBQ3ZCLE1BQU1DLGlCQUFpQjtBQUN2QixNQUFNQyxlQUFlO0FBQ3JCLE1BQU1DLHVCQUF1QixLQUFLLEtBQUssS0FBSztBQUM1QyxNQUFNQywwQkFBMEIsSUFBSSxLQUFLO0FBQ3pDLE1BQU1DLGVBQWU7QUFDckIsTUFBTUMsd0JBQXdCLElBQUlDLElBQUk7SUFDcEM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBQ0QsTUFBTUMsZ0JBQWdCO0FBS3RCLE1BQU1DLDZCQUF1RDtJQUMzREMsaUJBQWlCO1FBQUM7S0FBa0I7SUFDcENDLGFBQWE7UUFBQztLQUFjO0lBQzVCQyxnQkFBZ0I7UUFBQztLQUFpQjtJQUNsQ0MsWUFBWTtRQUFDO0tBQWE7SUFDMUJDLGFBQWE7UUFBQztLQUFjO0lBQzVCQyxRQUFR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
package/lib/config.d.ts CHANGED
@@ -35,11 +35,21 @@ export interface AwsConfig {
35
35
  };
36
36
  readonly maxRetries?: number;
37
37
  readonly region?: string;
38
+ readonly rum?: {
39
+ readonly appMonitors?: Record<string, AwsRumAppMonitorConfig | string>;
40
+ };
38
41
  readonly s3?: {
39
42
  readonly Bucket?: string;
40
43
  };
41
44
  readonly signatureVersion?: string;
42
45
  }
46
+ export interface AwsRumAppMonitorConfig {
47
+ readonly alias?: string;
48
+ readonly domain?: string;
49
+ readonly id: string;
50
+ readonly name?: string;
51
+ readonly version?: string;
52
+ }
43
53
  export interface EnvConfig {
44
54
  readonly local: AppConfig;
45
55
  readonly development: AppConfig;
package/lib/config.js CHANGED
@@ -155,4 +155,4 @@ export class Config {
155
155
  }
156
156
  }
157
157
 
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2NvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtnZXR9IGZyb20gJ0BubGFicy91dGlscy9vYmplY3RzL2dldCc7XG5pbXBvcnQge21lcmdlfSBmcm9tICdAbmxhYnMvdXRpbHMvb2JqZWN0cy9tZXJnZSc7XG5pbXBvcnQge3JlYWRGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtqb2lufSBmcm9tICdwYXRoJztcblxuY29uc3QgcGFja2FnZUpzb25QYXRoID0gam9pbihwcm9jZXNzLmN3ZCgpLCAncGFja2FnZS5qc29uJyk7XG5jb25zdCBhcHBQYWNrYWdlID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocGFja2FnZUpzb25QYXRoLCAndXRmOCcpKTtcblxuZXhwb3J0IGludGVyZmFjZSBBcmFuZ29EQkNvbmZpZyB7XG4gIHJlYWRvbmx5IGRhdGFiYXNlPzogc3RyaW5nO1xuICByZWFkb25seSBkdW1wPzogc3RyaW5nO1xuICByZWFkb25seSBwYXNzd29yZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVzdG9yZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VybmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiBhbnk7XG4gIHJlYWRvbmx5IGRldGFpbHM/OiBBcHBEZXRhaWxzO1xuICByZWFkb25seSBhcmFuZ29kYj86IEFyYW5nb0RCQ29uZmlnO1xuICByZWFkb25seSBhd3M/OiBBd3NDb25maWc7XG4gIHJlYWRvbmx5IGdpcGh5Pzogb2JqZWN0O1xuICByZWFkb25seSBnb29nbGU/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IGltYWdlPzogb2JqZWN0O1xuICByZWFkb25seSBzdHJpcGU/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IHR3aWxpbz86IG9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBEZXRhaWxzIHtcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvY2FsZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgc3VwcG9ydEVtYWlsPzogc3RyaW5nO1xuICByZWFkb25seSBzdXBwb3J0TmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF3c0NvbmZpZyB7XG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxzPzoge1xuICAgIHJlYWRvbmx5IGFjY2Vzc0tleUlkPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHNlY3JldEFjY2Vzc0tleT86IHN0cmluZztcbiAgICByZWFkb25seSBzZXNzaW9uVG9rZW4/OiBzdHJpbmc7XG4gIH07XG4gIHJlYWRvbmx5IG1heFJldHJpZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgczM/OiB7XG4gICAgcmVhZG9ubHkgQnVja2V0Pzogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSBzaWduYXR1cmVWZXJzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudkNvbmZpZyB7XG4gIHJlYWRvbmx5IGxvY2FsOiBBcHBDb25maWc7XG4gIHJlYWRvbmx5IGRldmVsb3BtZW50OiBBcHBDb25maWc7XG4gIHJlYWRvbmx5IHByb2R1Y3Rpb246IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgdGVzdDogQXBwQ29uZmlnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdvb2dsZUNvbmZpZyB7XG4gIHJlYWRvbmx5IGFwaUtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZmlnIHtcbiAgcHJpdmF0ZSBzdGF0aWMgdXBkYXRlZENvbmZpZyA9IG51bGw7XG5cbiAgc3RhdGljIHZhbHVlcygpOiBFbnZDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBkZXZlbG9wbWVudDoge1xuICAgICAgICBhcmFuZ29kYjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAncmVha3RvcicsXG4gICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BBU1NXT1JEIHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgcG9ydDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVCB8fCAnODUyOScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgYXdzOiB7XG4gICAgICAgICAgczM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogJ2Rldi5yZWFrdG9yLmlvJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxvY2FsOiB7XG4gICAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgICAgZGF0YWJhc2U6IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFIHx8ICdyZWFrdG9yJyxcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUEFTU1dPUkQgfHwgJ3Bhc3N3b3JkJyxcbiAgICAgICAgICBwb3J0OiBwcm9jZXNzLmVudi5BUkFOR09EQl9QT1JUIHx8ICc4NTI5JyxcbiAgICAgICAgICB1cmw6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VSTCB8fCAnaHR0cDovL2xvY2FsaG9zdCcsXG4gICAgICAgICAgdXNlcm5hbWU6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VTRVJOQU1FIHx8ICdyb290J1xuICAgICAgICB9LFxuICAgICAgICBhd3M6IHtcbiAgICAgICAgICBjcmVkZW50aWFsczoge1xuICAgICAgICAgICAgYWNjZXNzS2V5SWQ6IHByb2Nlc3MuZW52LkFXU19BQ0NFU1NfS0VZX0lELFxuICAgICAgICAgICAgc2VjcmV0QWNjZXNzS2V5OiBwcm9jZXNzLmVudi5BV1NfU0VDUkVUX0FDQ0VTU19LRVlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1heFJldHJpZXM6IDMsXG4gICAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgICBzMzoge1xuICAgICAgICAgICAgQnVja2V0OiAnZGV2LnJlYWt0b3IuaW8nXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaWduYXR1cmVWZXJzaW9uOiAndjQnXG4gICAgICAgIH0sXG4gICAgICAgIGRldGFpbHM6IHtcbiAgICAgICAgICBpZDogJ3JlYWt0b3InLFxuICAgICAgICAgIGxvY2FsZTogJ2VuLVVTJyxcbiAgICAgICAgICBuYW1lOiAnUmVha3RvcicsXG4gICAgICAgICAgc3VwcG9ydEVtYWlsOiAnc3VwcG9ydEByZWFrdG9yLmlvJyxcbiAgICAgICAgICBzdXBwb3J0TmFtZTogJ1JlYWt0b3IgU3VwcG9ydCcsXG4gICAgICAgICAgdXJsOiAncmVha3Rvci5pbycsXG4gICAgICAgICAgdmVyc2lvbjogYXBwUGFja2FnZS52ZXJzaW9uXG4gICAgICAgIH0sXG4gICAgICAgIGdpcGh5OiB7XG4gICAgICAgICAga2V5OiBwcm9jZXNzLmVudi5HSVBIWV9LRVlcbiAgICAgICAgfSxcbiAgICAgICAgZ29vZ2xlOiB7XG4gICAgICAgICAgYW5hbHl0aWNzOiB7XG4gICAgICAgICAgICBhY2NvdW50SWQ6ICc3ODE1ODcxNycsXG4gICAgICAgICAgICB0cmFja2luZ0lkOiAnVUEtNzgxNTg3MTctMSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlb2NvZGU6IHtcbiAgICAgICAgICAgIGtleTogcHJvY2Vzcy5lbnYuR09PR0xFX0dFT0NPREVfS0VZLFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2dlb2NvZGUvanNvbidcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtleTogcHJvY2Vzcy5lbnYuR09PR0xFX0FQSV9LRVlcbiAgICAgICAgfSxcbiAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICBpbWdRdWFsaXR5OiA5MCxcbiAgICAgICAgICBpbWdTaXplOiAxNTAwLFxuICAgICAgICAgIHRobVF1YWxpdHk6IDgwLFxuICAgICAgICAgIHRobVNpemU6IDE1MFxuICAgICAgICB9LFxuICAgICAgICBzdHJpcGU6IHtcbiAgICAgICAgICB0b2tlbjogcHJvY2Vzcy5lbnYuU1RSSVBFX1RPS0VOXG4gICAgICAgIH0sXG4gICAgICAgIHR3aWxpbzoge1xuICAgICAgICAgIG51bWJlcjogcHJvY2Vzcy5lbnYuVFdJTElPX05VTUJFUixcbiAgICAgICAgICBzaWQ6IHByb2Nlc3MuZW52LlRXSUxJT19TSUQsXG4gICAgICAgICAgdG9rZW46IHByb2Nlc3MuZW52LlRXSUxJT19UT0tFTlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcHJvZHVjdGlvbjoge1xuICAgICAgICBhcmFuZ29kYjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAncmVha3RvcicsXG4gICAgICAgICAgZHVtcDogJy91c3IvYmluL2FyYW5nb2R1bXAnLFxuICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5BUkFOR09EQl9QQVNTV09SRCB8fCAncGFzc3dvcmQnLFxuICAgICAgICAgIHBvcnQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BPUlQgfHwgJzg1MjknLFxuICAgICAgICAgIHJlc3RvcmU6ICcvdXNyL2Jpbi9hcmFuZ29yZXN0b3JlJyxcbiAgICAgICAgICB1cmw6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VSTCB8fCAnaHR0cDovL2xvY2FsaG9zdCcsXG4gICAgICAgICAgdXNlcm5hbWU6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VTRVJOQU1FIHx8ICdyb290J1xuICAgICAgICB9LFxuICAgICAgICBhd3M6IHtcbiAgICAgICAgICBzMzoge1xuICAgICAgICAgICAgQnVja2V0OiAnYm94LnJlYWt0b3IuaW8nXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzdHJpcGU6IHtcbiAgICAgICAgICB0b2tlbjogcHJvY2Vzcy5lbnYuU1RSSVBFX1RPS0VOXG4gICAgICAgIH0sXG4gICAgICAgIHR3aWxpbzoge1xuICAgICAgICAgIG51bWJlcjogcHJvY2Vzcy5lbnYuVFdJTElPX05VTUJFUixcbiAgICAgICAgICBzaWQ6IHByb2Nlc3MuZW52LlRXSUxJT19TSUQsXG4gICAgICAgICAgdG9rZW46IHByb2Nlc3MuZW52LlRXSUxJT19UT0tFTlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGVzdDoge1xuICAgICAgICBhcmFuZ29kYjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAncmVha3Rvci10ZXN0JyxcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUEFTU1dPUkQgfHwgJ3Bhc3N3b3JkJyxcbiAgICAgICAgICBwb3J0OiBwcm9jZXNzLmVudi5BUkFOR09EQl9QT1JUIHx8ICc4NTI5JyxcbiAgICAgICAgICB1cmw6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VSTCB8fCAnaHR0cDovL2xvY2FsaG9zdCcsXG4gICAgICAgICAgdXNlcm5hbWU6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1VTRVJOQU1FIHx8ICdyb290J1xuICAgICAgICB9LFxuICAgICAgICBkZXRhaWxzOiB7XG4gICAgICAgICAgaWQ6ICdyZWFrdG9yLXRlc3QnLFxuICAgICAgICAgIGxvY2FsZTogJ2VuLVVTJyxcbiAgICAgICAgICBuYW1lOiAnUmVha3RvciBUZXN0JyxcbiAgICAgICAgICBzdXBwb3J0RW1haWw6ICdzdXBwb3J0QHJlYWt0b3IuaW8nLFxuICAgICAgICAgIHVybDogJ3JlYWt0b3IuaW8nLFxuICAgICAgICAgIHZlcnNpb246IGFwcFBhY2thZ2UudmVyc2lvblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBzZXQob3ZlcnJpZGU6IG9iamVjdCwgZW52aXJvbm1lbnQ/OiBzdHJpbmcpOiBvYmplY3Qge1xuICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSB0aGlzLmdldCgpO1xuICAgIGNvbnN0IHRhcmdldEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgfHwgcHJvY2Vzcy5lbnYuc3RhZ2UgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ2xvY2FsJztcblxuICAgIGlmKG92ZXJyaWRlW3RhcmdldEVudmlyb25tZW50XSkge1xuICAgICAgdGhpcy51cGRhdGVkQ29uZmlnID0gbWVyZ2Uoe30sIGN1cnJlbnRDb25maWcsIG92ZXJyaWRlW3RhcmdldEVudmlyb25tZW50XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlZENvbmZpZyA9IG1lcmdlKHt9LCBjdXJyZW50Q29uZmlnLCBvdmVycmlkZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsuLi4odGhpcy51cGRhdGVkQ29uZmlnIGFzIHVua25vd24gYXMgb2JqZWN0KX07XG4gIH1cblxuICBzdGF0aWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVkQ29uZmlnID0gbnVsbDtcbiAgfVxuXG5cbiAgc3RhdGljIGdldDxUID0gYW55PihwYXRoPzogc3RyaW5nIHwgc3RyaW5nW10sIGRlZmF1bHRWYWx1ZT86IFQpOiBUIHtcbiAgICBjb25zdCBiYXNlQ29uZmlnID0gdGhpcy51cGRhdGVkQ29uZmlnIHx8IHRoaXMudmFsdWVzKCk7XG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBwcm9jZXNzLmVudi5zdGFnZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViB8fCAnbG9jYWwnO1xuXG4gICAgaWYodGhpcy51cGRhdGVkQ29uZmlnKSB7XG4gICAgICBjb25zdCBvdmVycmlkZUVudmlyb25tZW50Q29uZmlnID0gdGhpcy51cGRhdGVkQ29uZmlnW2Vudmlyb25tZW50XSB8fCB7fTtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG1lcmdlKHt9LCBiYXNlQ29uZmlnLCBvdmVycmlkZUVudmlyb25tZW50Q29uZmlnKTtcblxuICAgICAgcmV0dXJuIHBhdGggPyBnZXQoY29uZmlnLCBwYXRoLCBkZWZhdWx0VmFsdWUpIDogY29uZmlnO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2FsQ29uZmlnID0gYmFzZUNvbmZpZy5sb2NhbDtcbiAgICBjb25zdCBjb25maWcgPSBtZXJnZSh7fSwgbG9jYWxDb25maWcsIGJhc2VDb25maWdbZW52aXJvbm1lbnRdIHx8IHt9KTtcblxuICAgIHJldHVybiBwYXRoID8gZ2V0KGNvbmZpZywgcGF0aCwgZGVmYXVsdFZhbHVlKSA6IGNvbmZpZztcbiAgfVxufVxuIl0sIm5hbWVzIjpbImdldCIsIm1lcmdlIiwicmVhZEZpbGVTeW5jIiwiam9pbiIsInBhY2thZ2VKc29uUGF0aCIsInByb2Nlc3MiLCJjd2QiLCJhcHBQYWNrYWdlIiwiSlNPTiIsInBhcnNlIiwiQ29uZmlnIiwidXBkYXRlZENvbmZpZyIsInZhbHVlcyIsImRldmVsb3BtZW50IiwiYXJhbmdvZGIiLCJkYXRhYmFzZSIsImVudiIsIkFSQU5HT0RCX0RBVEFCQVNFIiwicGFzc3dvcmQiLCJBUkFOR09EQl9QQVNTV09SRCIsInBvcnQiLCJBUkFOR09EQl9QT1JUIiwidXJsIiwiQVJBTkdPREJfVVJMIiwidXNlcm5hbWUiLCJBUkFOR09EQl9VU0VSTkFNRSIsImF3cyIsInMzIiwiQnVja2V0IiwibG9jYWwiLCJjcmVkZW50aWFscyIsImFjY2Vzc0tleUlkIiwiQVdTX0FDQ0VTU19LRVlfSUQiLCJzZWNyZXRBY2Nlc3NLZXkiLCJBV1NfU0VDUkVUX0FDQ0VTU19LRVkiLCJtYXhSZXRyaWVzIiwicmVnaW9uIiwic2lnbmF0dXJlVmVyc2lvbiIsImRldGFpbHMiLCJpZCIsImxvY2FsZSIsIm5hbWUiLCJzdXBwb3J0RW1haWwiLCJzdXBwb3J0TmFtZSIsInZlcnNpb24iLCJnaXBoeSIsImtleSIsIkdJUEhZX0tFWSIsImdvb2dsZSIsImFuYWx5dGljcyIsImFjY291bnRJZCIsInRyYWNraW5nSWQiLCJnZW9jb2RlIiwiR09PR0xFX0dFT0NPREVfS0VZIiwiR09PR0xFX0FQSV9LRVkiLCJpbWFnZSIsImltZ1F1YWxpdHkiLCJpbWdTaXplIiwidGhtUXVhbGl0eSIsInRobVNpemUiLCJzdHJpcGUiLCJ0b2tlbiIsIlNUUklQRV9UT0tFTiIsInR3aWxpbyIsIm51bWJlciIsIlRXSUxJT19OVU1CRVIiLCJzaWQiLCJUV0lMSU9fU0lEIiwiVFdJTElPX1RPS0VOIiwicHJvZHVjdGlvbiIsImR1bXAiLCJyZXN0b3JlIiwidGVzdCIsInNldCIsIm92ZXJyaWRlIiwiZW52aXJvbm1lbnQiLCJjdXJyZW50Q29uZmlnIiwidGFyZ2V0RW52aXJvbm1lbnQiLCJzdGFnZSIsIk5PREVfRU5WIiwicmVzZXQiLCJwYXRoIiwiZGVmYXVsdFZhbHVlIiwiYmFzZUNvbmZpZyIsIm92ZXJyaWRlRW52aXJvbm1lbnRDb25maWciLCJjb25maWciLCJsb2NhbENvbmZpZyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsR0FBRyxRQUFPLDJCQUEyQjtBQUM3QyxTQUFRQyxLQUFLLFFBQU8sNkJBQTZCO0FBQ2pELFNBQVFDLFlBQVksUUFBTyxLQUFLO0FBQ2hDLFNBQVFDLElBQUksUUFBTyxPQUFPO0FBRTFCLE1BQU1DLGtCQUFrQkQsS0FBS0UsUUFBUUMsR0FBRyxJQUFJO0FB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
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2NvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtnZXR9IGZyb20gJ0BubGFicy91dGlscy9vYmplY3RzL2dldCc7XG5pbXBvcnQge21lcmdlfSBmcm9tICdAbmxhYnMvdXRpbHMvb2JqZWN0cy9tZXJnZSc7XG5pbXBvcnQge3JlYWRGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtqb2lufSBmcm9tICdwYXRoJztcblxuY29uc3QgcGFja2FnZUpzb25QYXRoID0gam9pbihwcm9jZXNzLmN3ZCgpLCAncGFja2FnZS5qc29uJyk7XG5jb25zdCBhcHBQYWNrYWdlID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocGFja2FnZUpzb25QYXRoLCAndXRmOCcpKTtcblxuZXhwb3J0IGludGVyZmFjZSBBcmFuZ29EQkNvbmZpZyB7XG4gIHJlYWRvbmx5IGRhdGFiYXNlPzogc3RyaW5nO1xuICByZWFkb25seSBkdW1wPzogc3RyaW5nO1xuICByZWFkb25seSBwYXNzd29yZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcG9ydD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVzdG9yZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VybmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICByZWFkb25seSBba2V5OiBzdHJpbmddOiBhbnk7XG4gIHJlYWRvbmx5IGRldGFpbHM/OiBBcHBEZXRhaWxzO1xuICByZWFkb25seSBhcmFuZ29kYj86IEFyYW5nb0RCQ29uZmlnO1xuICByZWFkb25seSBhd3M/OiBBd3NDb25maWc7XG4gIHJlYWRvbmx5IGdpcGh5Pzogb2JqZWN0O1xuICByZWFkb25seSBnb29nbGU/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IGltYWdlPzogb2JqZWN0O1xuICByZWFkb25seSBzdHJpcGU/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IHR3aWxpbz86IG9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBEZXRhaWxzIHtcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvY2FsZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgc3VwcG9ydEVtYWlsPzogc3RyaW5nO1xuICByZWFkb25seSBzdXBwb3J0TmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF3c0NvbmZpZyB7XG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxzPzoge1xuICAgIHJlYWRvbmx5IGFjY2Vzc0tleUlkPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHNlY3JldEFjY2Vzc0tleT86IHN0cmluZztcbiAgICByZWFkb25seSBzZXNzaW9uVG9rZW4/OiBzdHJpbmc7XG4gIH07XG4gIHJlYWRvbmx5IG1heFJldHJpZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgcnVtPzoge1xuICAgIHJlYWRvbmx5IGFwcE1vbml0b3JzPzogUmVjb3JkPHN0cmluZywgQXdzUnVtQXBwTW9uaXRvckNvbmZpZyB8IHN0cmluZz47XG4gIH07XG4gIHJlYWRvbmx5IHMzPzoge1xuICAgIHJlYWRvbmx5IEJ1Y2tldD86IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgc2lnbmF0dXJlVmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBd3NSdW1BcHBNb25pdG9yQ29uZmlnIHtcbiAgcmVhZG9ubHkgYWxpYXM/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRvbWFpbj86IHN0cmluZztcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZDb25maWcge1xuICByZWFkb25seSBsb2NhbDogQXBwQ29uZmlnO1xuICByZWFkb25seSBkZXZlbG9wbWVudDogQXBwQ29uZmlnO1xuICByZWFkb25seSBwcm9kdWN0aW9uOiBBcHBDb25maWc7XG4gIHJlYWRvbmx5IHRlc3Q6IEFwcENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHb29nbGVDb25maWcge1xuICByZWFkb25seSBhcGlLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIENvbmZpZyB7XG4gIHByaXZhdGUgc3RhdGljIHVwZGF0ZWRDb25maWcgPSBudWxsO1xuXG4gIHN0YXRpYyB2YWx1ZXMoKTogRW52Q29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgYXJhbmdvZGI6IHtcbiAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJ3JlYWt0b3InLFxuICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5BUkFOR09EQl9QQVNTV09SRCB8fCAncGFzc3dvcmQnLFxuICAgICAgICAgIHBvcnQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BPUlQgfHwgJzg1MjknLFxuICAgICAgICAgIHVybDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfVVJMIHx8ICdodHRwOi8vbG9jYWxob3N0JyxcbiAgICAgICAgICB1c2VybmFtZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfVVNFUk5BTUUgfHwgJ3Jvb3QnXG4gICAgICAgIH0sXG4gICAgICAgIGF3czoge1xuICAgICAgICAgIHMzOiB7XG4gICAgICAgICAgICBCdWNrZXQ6ICdkZXYucmVha3Rvci5pbydcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsb2NhbDoge1xuICAgICAgICBhcmFuZ29kYjoge1xuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAncmVha3RvcicsXG4gICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BBU1NXT1JEIHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgcG9ydDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVCB8fCAnODUyOScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgYXdzOiB7XG4gICAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgIGFjY2Vzc0tleUlkOiBwcm9jZXNzLmVudi5BV1NfQUNDRVNTX0tFWV9JRCxcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleTogcHJvY2Vzcy5lbnYuQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtYXhSZXRyaWVzOiAzLFxuICAgICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgICAgczM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogJ2Rldi5yZWFrdG9yLmlvJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2lnbmF0dXJlVmVyc2lvbjogJ3Y0J1xuICAgICAgICB9LFxuICAgICAgICBkZXRhaWxzOiB7XG4gICAgICAgICAgaWQ6ICdyZWFrdG9yJyxcbiAgICAgICAgICBsb2NhbGU6ICdlbi1VUycsXG4gICAgICAgICAgbmFtZTogJ1JlYWt0b3InLFxuICAgICAgICAgIHN1cHBvcnRFbWFpbDogJ3N1cHBvcnRAcmVha3Rvci5pbycsXG4gICAgICAgICAgc3VwcG9ydE5hbWU6ICdSZWFrdG9yIFN1cHBvcnQnLFxuICAgICAgICAgIHVybDogJ3JlYWt0b3IuaW8nLFxuICAgICAgICAgIHZlcnNpb246IGFwcFBhY2thZ2UudmVyc2lvblxuICAgICAgICB9LFxuICAgICAgICBnaXBoeToge1xuICAgICAgICAgIGtleTogcHJvY2Vzcy5lbnYuR0lQSFlfS0VZXG4gICAgICAgIH0sXG4gICAgICAgIGdvb2dsZToge1xuICAgICAgICAgIGFuYWx5dGljczoge1xuICAgICAgICAgICAgYWNjb3VudElkOiAnNzgxNTg3MTcnLFxuICAgICAgICAgICAgdHJhY2tpbmdJZDogJ1VBLTc4MTU4NzE3LTEnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZW9jb2RlOiB7XG4gICAgICAgICAgICBrZXk6IHByb2Nlc3MuZW52LkdPT0dMRV9HRU9DT0RFX0tFWSxcbiAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9nZW9jb2RlL2pzb24nXG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXk6IHByb2Nlc3MuZW52LkdPT0dMRV9BUElfS0VZXG4gICAgICAgIH0sXG4gICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgaW1nUXVhbGl0eTogOTAsXG4gICAgICAgICAgaW1nU2l6ZTogMTUwMCxcbiAgICAgICAgICB0aG1RdWFsaXR5OiA4MCxcbiAgICAgICAgICB0aG1TaXplOiAxNTBcbiAgICAgICAgfSxcbiAgICAgICAgc3RyaXBlOiB7XG4gICAgICAgICAgdG9rZW46IHByb2Nlc3MuZW52LlNUUklQRV9UT0tFTlxuICAgICAgICB9LFxuICAgICAgICB0d2lsaW86IHtcbiAgICAgICAgICBudW1iZXI6IHByb2Nlc3MuZW52LlRXSUxJT19OVU1CRVIsXG4gICAgICAgICAgc2lkOiBwcm9jZXNzLmVudi5UV0lMSU9fU0lELFxuICAgICAgICAgIHRva2VuOiBwcm9jZXNzLmVudi5UV0lMSU9fVE9LRU5cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHByb2R1Y3Rpb246IHtcbiAgICAgICAgYXJhbmdvZGI6IHtcbiAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJ3JlYWt0b3InLFxuICAgICAgICAgIGR1bXA6ICcvdXNyL2Jpbi9hcmFuZ29kdW1wJyxcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUEFTU1dPUkQgfHwgJ3Bhc3N3b3JkJyxcbiAgICAgICAgICBwb3J0OiBwcm9jZXNzLmVudi5BUkFOR09EQl9QT1JUIHx8ICc4NTI5JyxcbiAgICAgICAgICByZXN0b3JlOiAnL3Vzci9iaW4vYXJhbmdvcmVzdG9yZScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgYXdzOiB7XG4gICAgICAgICAgczM6IHtcbiAgICAgICAgICAgIEJ1Y2tldDogJ2JveC5yZWFrdG9yLmlvJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgc3RyaXBlOiB7XG4gICAgICAgICAgdG9rZW46IHByb2Nlc3MuZW52LlNUUklQRV9UT0tFTlxuICAgICAgICB9LFxuICAgICAgICB0d2lsaW86IHtcbiAgICAgICAgICBudW1iZXI6IHByb2Nlc3MuZW52LlRXSUxJT19OVU1CRVIsXG4gICAgICAgICAgc2lkOiBwcm9jZXNzLmVudi5UV0lMSU9fU0lELFxuICAgICAgICAgIHRva2VuOiBwcm9jZXNzLmVudi5UV0lMSU9fVE9LRU5cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRlc3Q6IHtcbiAgICAgICAgYXJhbmdvZGI6IHtcbiAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJ3JlYWt0b3ItdGVzdCcsXG4gICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LkFSQU5HT0RCX1BBU1NXT1JEIHx8ICdwYXNzd29yZCcsXG4gICAgICAgICAgcG9ydDogcHJvY2Vzcy5lbnYuQVJBTkdPREJfUE9SVCB8fCAnODUyOScsXG4gICAgICAgICAgdXJsOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VUkwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3QnLFxuICAgICAgICAgIHVzZXJuYW1lOiBwcm9jZXNzLmVudi5BUkFOR09EQl9VU0VSTkFNRSB8fCAncm9vdCdcbiAgICAgICAgfSxcbiAgICAgICAgZGV0YWlsczoge1xuICAgICAgICAgIGlkOiAncmVha3Rvci10ZXN0JyxcbiAgICAgICAgICBsb2NhbGU6ICdlbi1VUycsXG4gICAgICAgICAgbmFtZTogJ1JlYWt0b3IgVGVzdCcsXG4gICAgICAgICAgc3VwcG9ydEVtYWlsOiAnc3VwcG9ydEByZWFrdG9yLmlvJyxcbiAgICAgICAgICB1cmw6ICdyZWFrdG9yLmlvJyxcbiAgICAgICAgICB2ZXJzaW9uOiBhcHBQYWNrYWdlLnZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgc2V0KG92ZXJyaWRlOiBvYmplY3QsIGVudmlyb25tZW50Pzogc3RyaW5nKTogb2JqZWN0IHtcbiAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gdGhpcy5nZXQoKTtcbiAgICBjb25zdCB0YXJnZXRFbnZpcm9ubWVudCA9IGVudmlyb25tZW50IHx8IHByb2Nlc3MuZW52LnN0YWdlIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdsb2NhbCc7XG5cbiAgICBpZihvdmVycmlkZVt0YXJnZXRFbnZpcm9ubWVudF0pIHtcbiAgICAgIHRoaXMudXBkYXRlZENvbmZpZyA9IG1lcmdlKHt9LCBjdXJyZW50Q29uZmlnLCBvdmVycmlkZVt0YXJnZXRFbnZpcm9ubWVudF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZWRDb25maWcgPSBtZXJnZSh7fSwgY3VycmVudENvbmZpZywgb3ZlcnJpZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7Li4uKHRoaXMudXBkYXRlZENvbmZpZyBhcyB1bmtub3duIGFzIG9iamVjdCl9O1xuICB9XG5cbiAgc3RhdGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlZENvbmZpZyA9IG51bGw7XG4gIH1cblxuXG4gIHN0YXRpYyBnZXQ8VCA9IGFueT4ocGF0aD86IHN0cmluZyB8IHN0cmluZ1tdLCBkZWZhdWx0VmFsdWU/OiBUKTogVCB7XG4gICAgY29uc3QgYmFzZUNvbmZpZyA9IHRoaXMudXBkYXRlZENvbmZpZyB8fCB0aGlzLnZhbHVlcygpO1xuICAgIGNvbnN0IGVudmlyb25tZW50ID0gcHJvY2Vzcy5lbnYuc3RhZ2UgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ2xvY2FsJztcblxuICAgIGlmKHRoaXMudXBkYXRlZENvbmZpZykge1xuICAgICAgY29uc3Qgb3ZlcnJpZGVFbnZpcm9ubWVudENvbmZpZyA9IHRoaXMudXBkYXRlZENvbmZpZ1tlbnZpcm9ubWVudF0gfHwge307XG4gICAgICBjb25zdCBjb25maWcgPSBtZXJnZSh7fSwgYmFzZUNvbmZpZywgb3ZlcnJpZGVFbnZpcm9ubWVudENvbmZpZyk7XG5cbiAgICAgIHJldHVybiBwYXRoID8gZ2V0KGNvbmZpZywgcGF0aCwgZGVmYXVsdFZhbHVlKSA6IGNvbmZpZztcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhbENvbmZpZyA9IGJhc2VDb25maWcubG9jYWw7XG4gICAgY29uc3QgY29uZmlnID0gbWVyZ2Uoe30sIGxvY2FsQ29uZmlnLCBiYXNlQ29uZmlnW2Vudmlyb25tZW50XSB8fCB7fSk7XG5cbiAgICByZXR1cm4gcGF0aCA/IGdldChjb25maWcsIHBhdGgsIGRlZmF1bHRWYWx1ZSkgOiBjb25maWc7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJnZXQiLCJtZXJnZSIsInJlYWRGaWxlU3luYyIsImpvaW4iLCJwYWNrYWdlSnNvblBhdGgiLCJwcm9jZXNzIiwiY3dkIiwiYXBwUGFja2FnZSIsIkpTT04iLCJwYXJzZSIsIkNvbmZpZyIsInVwZGF0ZWRDb25maWciLCJ2YWx1ZXMiLCJkZXZlbG9wbWVudCIsImFyYW5nb2RiIiwiZGF0YWJhc2UiLCJlbnYiLCJBUkFOR09EQl9EQVRBQkFTRSIsInBhc3N3b3JkIiwiQVJBTkdPREJfUEFTU1dPUkQiLCJwb3J0IiwiQVJBTkdPREJfUE9SVCIsInVybCIsIkFSQU5HT0RCX1VSTCIsInVzZXJuYW1lIiwiQVJBTkdPREJfVVNFUk5BTUUiLCJhd3MiLCJzMyIsIkJ1Y2tldCIsImxvY2FsIiwiY3JlZGVudGlhbHMiLCJhY2Nlc3NLZXlJZCIsIkFXU19BQ0NFU1NfS0VZX0lEIiwic2VjcmV0QWNjZXNzS2V5IiwiQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIiwibWF4UmV0cmllcyIsInJlZ2lvbiIsInNpZ25hdHVyZVZlcnNpb24iLCJkZXRhaWxzIiwiaWQiLCJsb2NhbGUiLCJuYW1lIiwic3VwcG9ydEVtYWlsIiwic3VwcG9ydE5hbWUiLCJ2ZXJzaW9uIiwiZ2lwaHkiLCJrZXkiLCJHSVBIWV9LRVkiLCJnb29nbGUiLCJhbmFseXRpY3MiLCJhY2NvdW50SWQiLCJ0cmFja2luZ0lkIiwiZ2VvY29kZSIsIkdPT0dMRV9HRU9DT0RFX0tFWSIsIkdPT0dMRV9BUElfS0VZIiwiaW1hZ2UiLCJpbWdRdWFsaXR5IiwiaW1nU2l6ZSIsInRobVF1YWxpdHkiLCJ0aG1TaXplIiwic3RyaXBlIiwidG9rZW4iLCJTVFJJUEVfVE9LRU4iLCJ0d2lsaW8iLCJudW1iZXIiLCJUV0lMSU9fTlVNQkVSIiwic2lkIiwiVFdJTElPX1NJRCIsIlRXSUxJT19UT0tFTiIsInByb2R1Y3Rpb24iLCJkdW1wIiwicmVzdG9yZSIsInRlc3QiLCJzZXQiLCJvdmVycmlkZSIsImVudmlyb25tZW50IiwiY3VycmVudENvbmZpZyIsInRhcmdldEVudmlyb25tZW50Iiwic3RhZ2UiLCJOT0RFX0VOViIsInJlc2V0IiwicGF0aCIsImRlZmF1bHRWYWx1ZSIsImJhc2VDb25maWciLCJvdmVycmlkZUVudmlyb25tZW50Q29uZmlnIiwiY29uZmlnIiwibG9jYWxDb25maWciXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEdBQUcsUUFBTywyQkFBMkI7QUFDN0MsU0FBUUMsS0FBSyxRQUFPLDZCQUE2QjtBQUNqRCxTQUFRQyxZQUFZLFFBQU8sS0FBSztBQUNoQyxTQUFRQyxJQUFJLFFBQU8sT0FBTztBQUUxQixNQUFNQyxrQkFBa0JELEtBQUtFLFFBQVFDLEdBQUcsSUFBSTtBQUM1QyxNQUFNQyxhQUFhQyxLQUFLQyxLQUFLLENBQUNQLGFBQWFFLGlCQUFpQjtBQXNFNUQsT0FBTyxNQUFNTTtJQUNYLE9BQWVDLGdCQUFnQixLQUFLO0lBRXBDLE9BQU9DLFNBQW9CO1FBQ3pCLE9BQU87WUFDTEMsYUFBYTtnQkFDWEMsVUFBVTtvQkFDUkMsVUFBVVYsUUFBUVcsR0FBRyxDQUFDQyxpQkFBaUIsSUFBSTtvQkFDM0NDLFVBQVViLFFBQVFXLEdBQUcsQ0FBQ0csaUJBQWlCLElBQUk7b0JBQzNDQyxNQUFNZixRQUFRVyxHQUFHLENBQUNLLGFBQWEsSUFBSTtvQkFDbkNDLEtBQUtqQixRQUFRVyxHQUFHLENBQUNPLFlBQVksSUFBSTtvQkFDakNDLFVBQVVuQixRQUFRVyxHQUFHLENBQUNTLGlCQUFpQixJQUFJO2dCQUM3QztnQkFDQUMsS0FBSztvQkFDSEMsSUFBSTt3QkFDRkMsUUFBUTtvQkFDVjtnQkFDRjtZQUNGO1lBQ0FDLE9BQU87Z0JBQ0xmLFVBQVU7b0JBQ1JDLFVBQVVWLFFBQVFXLEdBQUcsQ0FBQ0MsaUJBQWlCLElBQUk7b0JBQzNDQyxVQUFVYixRQUFRVyxHQUFHLENBQUNHLGlCQUFpQixJQUFJO29CQUMzQ0MsTUFBTWYsUUFBUVcsR0FBRyxDQUFDSyxhQUFhLElBQUk7b0JBQ25DQyxLQUFLakIsUUFBUVcsR0FBRyxDQUFDTyxZQUFZLElBQUk7b0JBQ2pDQyxV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
@@ -16,9 +16,8 @@ export declare const COLLECTIONS: {
16
16
  readonly IMAGES: 'images';
17
17
  readonly MAILING_LISTS: 'mailingLists';
18
18
  readonly MESSAGES: 'messages';
19
- readonly POSTS: 'posts';
20
- readonly RUM_LOGS: 'rumLogs';
21
19
  readonly PERSONAS: 'personas';
20
+ readonly POSTS: 'posts';
22
21
  readonly SHOPIFY_PRODUCTS: 'shopifyProducts';
23
22
  readonly SHOPIFY_WEBHOOK_EVENTS: 'shopifyWebhookEvents';
24
23
  readonly SUPPORT_TICKET_EVENTS: 'supportTicketEvents';
@@ -14,9 +14,8 @@
14
14
  IMAGES: 'images',
15
15
  MAILING_LISTS: 'mailingLists',
16
16
  MESSAGES: 'messages',
17
- POSTS: 'posts',
18
- RUM_LOGS: 'rumLogs',
19
17
  PERSONAS: 'personas',
18
+ POSTS: 'posts',
20
19
  SHOPIFY_PRODUCTS: 'shopifyProducts',
21
20
  SHOPIFY_WEBHOOK_EVENTS: 'shopifyWebhookEvents',
22
21
  SUPPORT_TICKET_EVENTS: 'supportTicketEvents',
@@ -76,4 +75,4 @@
76
75
  BLOCKED: 'blocked'
77
76
  };
78
77
 
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2NvbnN0YW50cy9jb2xsZWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG4vKipcbiAqIEFyYW5nb0RCIENvbGxlY3Rpb24gTmFtZXNcbiAqIENlbnRyYWxpemVkIGNvbnN0YW50cyBmb3IgYWxsIGRhdGFiYXNlIGNvbGxlY3Rpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBDT0xMRUNUSU9OUyA9IHtcbiAgQVBQUzogJ2FwcHMnLFxuICBDT05WRVJTQVRJT05TOiAnY29udmVyc2F0aW9ucycsXG4gIENVU1RPTUVSX05PVElGSUNBVElPTlM6ICdjdXN0b21lck5vdGlmaWNhdGlvbnMnLFxuICBDVVNUT01FUl9PUkRFUlM6ICdjdXN0b21lck9yZGVycycsXG4gIEZJTEVTOiAnZmlsZXMnLFxuICBHUk9VUFM6ICdncm91cHMnLFxuICBJTUFHRVM6ICdpbWFnZXMnLFxuICBNQUlMSU5HX0xJU1RTOiAnbWFpbGluZ0xpc3RzJyxcbiAgTUVTU0FHRVM6ICdtZXNzYWdlcycsXG4gIFBPU1RTOiAncG9zdHMnLFxuICBSVU1fTE9HUzogJ3J1bUxvZ3MnLFxuICBQRVJTT05BUzogJ3BlcnNvbmFzJyxcbiAgU0hPUElGWV9QUk9EVUNUUzogJ3Nob3BpZnlQcm9kdWN0cycsXG4gIFNIT1BJRllfV0VCSE9PS19FVkVOVFM6ICdzaG9waWZ5V2ViaG9va0V2ZW50cycsXG4gIFNVUFBPUlRfVElDS0VUX0VWRU5UUzogJ3N1cHBvcnRUaWNrZXRFdmVudHMnLFxuICBTVVBQT1JUX1RJQ0tFVF9NRVNTQUdFUzogJ3N1cHBvcnRUaWNrZXRNZXNzYWdlcycsXG4gIFNVUFBPUlRfVElDS0VUUzogJ3N1cHBvcnRUaWNrZXRzJyxcbiAgVEFHUzogJ3RhZ3MnLFxuICBVU0VSUzogJ3VzZXJzJyxcbiAgVklERU9TOiAndmlkZW9zJ1xufSBhcyBjb25zdDtcblxuLyoqXG4gKiBBcmFuZ29EQiBFZGdlIENvbGxlY3Rpb24gTmFtZXNcbiAqIENlbnRyYWxpemVkIGNvbnN0YW50cyBmb3IgYWxsIGVkZ2UgY29sbGVjdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IEVER0VTID0ge1xuICBIQVNfQ09OTkVDVElPTjogJ2hhc0Nvbm5lY3Rpb24nLFxuICBIQVNfQ09OVkVSU0FUSU9OOiAnaGFzQ29udmVyc2F0aW9uJyxcbiAgSEFTX0NVU1RPTUVSX05PVElGSUNBVElPTjogJ2hhc0N1c3RvbWVyTm90aWZpY2F0aW9uJyxcbiAgSEFTX0NVU1RPTUVSX09SREVSOiAnaGFzQ3VzdG9tZXJPcmRlcicsXG4gIEhBU19GSUxFOiAnaGFzRmlsZScsXG4gIEhBU19NRURJQTogJ2hhc01lZGlhJyxcbiAgSEFTX01BSUxJTkdfTElTVDogJ2hhc01haWxpbmdMaXN0JyxcbiAgSEFTX1BFUlNPTkE6ICdoYXNQZXJzb25hJyxcbiAgSEFTX1BVUkNIQVNFRF9QUk9EVUNUOiAnaGFzUHVyY2hhc2VkUHJvZHVjdCcsXG4gIEhBU19SRUFDVElPTjogJ2hhc1JlYWN0aW9uJyxcbiAgSEFTX1NVUFBPUlRfVElDS0VUOiAnaGFzU3VwcG9ydFRpY2tldCcsXG4gIEhBU19TVVBQT1JUX1RJQ0tFVF9FVkVOVDogJ2hhc1N1cHBvcnRUaWNrZXRFdmVudCcsXG4gIEhBU19TVVBQT1JUX1RJQ0tFVF9NRVNTQUdFOiAnaGFzU3VwcG9ydFRpY2tldE1lc3NhZ2UnLFxuICBJU19QT1NURUQ6ICdpc1Bvc3RlZCcsXG4gIElTX1RBR0dFRDogJ2lzVGFnZ2VkJ1xufSBhcyBjb25zdDtcblxuLyoqXG4gKiBQcml2YWN5IExldmVsIENvbnN0YW50c1xuICogVXNlZCBhY3Jvc3MgcG9zdHMsIGdyb3VwcywgYW5kIG90aGVyIGNvbnRlbnQgdHlwZXNcbiAqL1xuZXhwb3J0IGNvbnN0IFByaXZhY3lMZXZlbCA9IHtcbiAgUFVCTElDOiAncHVibGljJyxcbiAgUFJJVkFURTogJ3ByaXZhdGUnLFxuICBHUk9VUDogJ2dyb3VwJyxcbiAgREVGQVVMVDogJ2RlZmF1bHQnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBQcml2YWN5TGV2ZWxUeXBlID0gdHlwZW9mIFByaXZhY3lMZXZlbFtrZXlvZiB0eXBlb2YgUHJpdmFjeUxldmVsXTtcblxuLyoqXG4gKiBSZWFjdGlvbiBUeXBlIENvbnN0YW50c1xuICogU3RhbmRhcmQgcmVhY3Rpb24gdHlwZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgY29uc3QgUmVhY3Rpb25UeXBlID0ge1xuICBMSUtFOiAnbGlrZScsXG4gIFJTVlA6ICdyc3ZwJyxcbiAgUElOOiAncGluJyxcbiAgVklFVzogJ3ZpZXcnLFxuICBESVNMSUtFOiAnZGlzbGlrZSdcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWN0aW9uVHlwZVR5cGUgPSB0eXBlb2YgUmVhY3Rpb25UeXBlW2tleW9mIHR5cGVvZiBSZWFjdGlvblR5cGVdO1xuXG4vKipcbiAqIENvbm5lY3Rpb24gVHlwZSBDb25zdGFudHNcbiAqIFR5cGVzIG9mIGNvbm5lY3Rpb25zIGJldHdlZW4gdXNlcnMgYW5kIGdyb3Vwc1xuICovXG5leHBvcnQgY29uc3QgQ29ubmVjdGlvblR5cGUgPSB7XG4gIEFETUlOOiAnYWRtaW4nLFxuICBNRU1CRVI6ICdtZW1iZXInLFxuICBGT0xMT1dFUjogJ2ZvbGxvd2VyJyxcbiAgRk9MTE9XSU5HOiAnZm9sbG93aW5nJyxcbiAgQkxPQ0tFRDogJ2Jsb2NrZWQnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDb25uZWN0aW9uVHlwZVR5cGUgPSB0eXBlb2YgQ29ubmVjdGlvblR5cGVba2V5b2YgdHlwZW9mIENvbm5lY3Rpb25UeXBlXTtcbiJdLCJuYW1lcyI6WyJDT0xMRUNUSU9OUyIsIkFQUFMiLCJDT05WRVJTQVRJT05TIiwiQ1VTVE9NRVJfTk9USUZJQ0FUSU9OUyIsIkNVU1RPTUVSX09SREVSUyIsIkZJTEVTIiwiR1JPVVBTIiwiSU1BR0VTIiwiTUFJTElOR19MSVNUUyIsIk1FU1NBR0VTIiwiUE9TVFMiLCJSVU1fTE9HUyIsIlBFUlNPTkFTIiwiU0hPUElGWV9QUk9EVUNUUyIsIlNIT1BJRllfV0VCSE9PS19FVkVOVFMiLCJTVVBQT1JUX1RJQ0tFVF9FVkVOVFMiLCJTVVBQT1JUX1RJQ0tFVF9NRVNTQUdFUyIsIlNVUFBPUlRfVElDS0VUUyIsIlRBR1MiLCJVU0VSUyIsIlZJREVPUyIsIkVER0VTIiwiSEFTX0NPTk5FQ1RJT04iLCJIQVNfQ09OVkVSU0FUSU9OIiwiSEFTX0NVU1RPTUVSX05PVElGSUNBVElPTiIsIkhBU19DVVNUT01FUl9PUkRFUiIsIkhBU19GSUxFIiwiSEFTX01FRElBIiwiSEFTX01BSUxJTkdfTElTVCIsIkhBU19QRVJTT05BIiwiSEFTX1BVUkNIQVNFRF9QUk9EVUNUIiwiSEFTX1JFQUNUSU9OIiwiSEFTX1NVUFBPUlRfVElDS0VUIiwiSEFTX1NVUFBPUlRfVElDS0VUX0VWRU5UIiwiSEFTX1NVUFBPUlRfVElDS0VUX01FU1NBR0UiLCJJU19QT1NURUQiLCJJU19UQUdHRUQiLCJQcml2YWN5TGV2ZWwiLCJQVUJMSUMiLCJQUklWQVRFIiwiR1JPVVAiLCJERUZBVUxUIiwiUmVhY3Rpb25UeXBlIiwiTElLRSIsIlJTVlAiLCJQSU4iLCJWSUVXIiwiRElTTElLRSIsIkNvbm5lY3Rpb25UeXBlIiwiQURNSU4iLCJNRU1CRVIiLCJGT0xMT1dFUiIsIkZPTExPV0lORyIsIkJMT0NLRUQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUVEOzs7Q0FHQyxHQUNELE9BQU8sTUFBTUEsY0FBYztJQUN6QkMsTUFBTTtJQUNOQyxlQUFlO0lBQ2ZDLHdCQUF3QjtJQUN4QkMsaUJBQWlCO0lBQ2pCQyxPQUFPO0lBQ1BDLFFBQVE7SUFDUkMsUUFBUTtJQUNSQyxlQUFlO0lBQ2ZDLFVBQVU7SUFDVkMsT0FBTztJQUNQQyxVQUFVO0lBQ1ZDLFVBQVU7SUFDVkMsa0JBQWtCO0lBQ2xCQyx3QkFBd0I7SUFDeEJDLHVCQUF1QjtJQUN2QkMseUJBQXlCO0lBQ3pCQyxpQkFBaUI7SUFDakJDLE1BQU07SUFDTkMsT0FBTztJQUNQQyxRQUFRO0FBQ1YsRUFBVztBQUVYOzs7Q0FHQyxHQUNELE9BQU8sTUFBTUMsUUFBUTtJQUNuQkMsZ0JBQWdCO0lBQ2hCQyxrQkFBa0I7SUFDbEJDLDJCQUEyQjtJQUMzQkMsb0JBQW9CO0lBQ3BCQyxVQUFVO0lBQ1ZDLFdBQVc7SUFDWEMsa0JBQWtCO0lBQ2xCQyxhQUFhO0lBQ2JDLHVCQUF1QjtJQUN2QkMsY0FBYztJQUNkQyxvQkFBb0I7SUFDcEJDLDBCQUEwQjtJQUMxQkMsNEJBQTRCO0lBQzVCQyxXQUFXO0lBQ1hDLFdBQVc7QUFDYixFQUFXO0FBRVg7OztDQUdDLEdBQ0QsT0FBTyxNQUFNQyxlQUFlO0lBQzFCQyxRQUFRO0lBQ1JDLFNBQVM7SUFDVEMsT0FBTztJQUNQQyxTQUFTO0FBQ1gsRUFBVztBQUlYOzs7Q0FHQyxHQUNELE9BQU8sTUFBTUMsZUFBZTtJQUMxQkMsTUFBTTtJQUNOQyxNQUFNO0lBQ05DLEtBQUs7SUFDTEMsTUFBTTtJQUNOQyxTQUFTO0FBQ1gsRUFBVztBQUlYOzs7Q0FHQyxHQUNELE9BQU8sTUFBTUMsaUJBQWlCO0lBQzVCQyxPQUFPO0lBQ1BDLFFBQVE7SUFDUkMsVUFBVTtJQUNWQyxXQUFXO0lBQ1hDLFNBQVM7QUFDWCxFQUFXIn0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2NvbnN0YW50cy9jb2xsZWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG4vKipcbiAqIEFyYW5nb0RCIENvbGxlY3Rpb24gTmFtZXNcbiAqIENlbnRyYWxpemVkIGNvbnN0YW50cyBmb3IgYWxsIGRhdGFiYXNlIGNvbGxlY3Rpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBDT0xMRUNUSU9OUyA9IHtcbiAgQVBQUzogJ2FwcHMnLFxuICBDT05WRVJTQVRJT05TOiAnY29udmVyc2F0aW9ucycsXG4gIENVU1RPTUVSX05PVElGSUNBVElPTlM6ICdjdXN0b21lck5vdGlmaWNhdGlvbnMnLFxuICBDVVNUT01FUl9PUkRFUlM6ICdjdXN0b21lck9yZGVycycsXG4gIEZJTEVTOiAnZmlsZXMnLFxuICBHUk9VUFM6ICdncm91cHMnLFxuICBJTUFHRVM6ICdpbWFnZXMnLFxuICBNQUlMSU5HX0xJU1RTOiAnbWFpbGluZ0xpc3RzJyxcbiAgTUVTU0FHRVM6ICdtZXNzYWdlcycsXG4gIFBFUlNPTkFTOiAncGVyc29uYXMnLFxuICBQT1NUUzogJ3Bvc3RzJyxcbiAgU0hPUElGWV9QUk9EVUNUUzogJ3Nob3BpZnlQcm9kdWN0cycsXG4gIFNIT1BJRllfV0VCSE9PS19FVkVOVFM6ICdzaG9waWZ5V2ViaG9va0V2ZW50cycsXG4gIFNVUFBPUlRfVElDS0VUX0VWRU5UUzogJ3N1cHBvcnRUaWNrZXRFdmVudHMnLFxuICBTVVBQT1JUX1RJQ0tFVF9NRVNTQUdFUzogJ3N1cHBvcnRUaWNrZXRNZXNzYWdlcycsXG4gIFNVUFBPUlRfVElDS0VUUzogJ3N1cHBvcnRUaWNrZXRzJyxcbiAgVEFHUzogJ3RhZ3MnLFxuICBVU0VSUzogJ3VzZXJzJyxcbiAgVklERU9TOiAndmlkZW9zJ1xufSBhcyBjb25zdDtcblxuLyoqXG4gKiBBcmFuZ29EQiBFZGdlIENvbGxlY3Rpb24gTmFtZXNcbiAqIENlbnRyYWxpemVkIGNvbnN0YW50cyBmb3IgYWxsIGVkZ2UgY29sbGVjdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IEVER0VTID0ge1xuICBIQVNfQ09OTkVDVElPTjogJ2hhc0Nvbm5lY3Rpb24nLFxuICBIQVNfQ09OVkVSU0FUSU9OOiAnaGFzQ29udmVyc2F0aW9uJyxcbiAgSEFTX0NVU1RPTUVSX05PVElGSUNBVElPTjogJ2hhc0N1c3RvbWVyTm90aWZpY2F0aW9uJyxcbiAgSEFTX0NVU1RPTUVSX09SREVSOiAnaGFzQ3VzdG9tZXJPcmRlcicsXG4gIEhBU19GSUxFOiAnaGFzRmlsZScsXG4gIEhBU19NRURJQTogJ2hhc01lZGlhJyxcbiAgSEFTX01BSUxJTkdfTElTVDogJ2hhc01haWxpbmdMaXN0JyxcbiAgSEFTX1BFUlNPTkE6ICdoYXNQZXJzb25hJyxcbiAgSEFTX1BVUkNIQVNFRF9QUk9EVUNUOiAnaGFzUHVyY2hhc2VkUHJvZHVjdCcsXG4gIEhBU19SRUFDVElPTjogJ2hhc1JlYWN0aW9uJyxcbiAgSEFTX1NVUFBPUlRfVElDS0VUOiAnaGFzU3VwcG9ydFRpY2tldCcsXG4gIEhBU19TVVBQT1JUX1RJQ0tFVF9FVkVOVDogJ2hhc1N1cHBvcnRUaWNrZXRFdmVudCcsXG4gIEhBU19TVVBQT1JUX1RJQ0tFVF9NRVNTQUdFOiAnaGFzU3VwcG9ydFRpY2tldE1lc3NhZ2UnLFxuICBJU19QT1NURUQ6ICdpc1Bvc3RlZCcsXG4gIElTX1RBR0dFRDogJ2lzVGFnZ2VkJ1xufSBhcyBjb25zdDtcblxuLyoqXG4gKiBQcml2YWN5IExldmVsIENvbnN0YW50c1xuICogVXNlZCBhY3Jvc3MgcG9zdHMsIGdyb3VwcywgYW5kIG90aGVyIGNvbnRlbnQgdHlwZXNcbiAqL1xuZXhwb3J0IGNvbnN0IFByaXZhY3lMZXZlbCA9IHtcbiAgUFVCTElDOiAncHVibGljJyxcbiAgUFJJVkFURTogJ3ByaXZhdGUnLFxuICBHUk9VUDogJ2dyb3VwJyxcbiAgREVGQVVMVDogJ2RlZmF1bHQnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBQcml2YWN5TGV2ZWxUeXBlID0gdHlwZW9mIFByaXZhY3lMZXZlbFtrZXlvZiB0eXBlb2YgUHJpdmFjeUxldmVsXTtcblxuLyoqXG4gKiBSZWFjdGlvbiBUeXBlIENvbnN0YW50c1xuICogU3RhbmRhcmQgcmVhY3Rpb24gdHlwZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgY29uc3QgUmVhY3Rpb25UeXBlID0ge1xuICBMSUtFOiAnbGlrZScsXG4gIFJTVlA6ICdyc3ZwJyxcbiAgUElOOiAncGluJyxcbiAgVklFVzogJ3ZpZXcnLFxuICBESVNMSUtFOiAnZGlzbGlrZSdcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWN0aW9uVHlwZVR5cGUgPSB0eXBlb2YgUmVhY3Rpb25UeXBlW2tleW9mIHR5cGVvZiBSZWFjdGlvblR5cGVdO1xuXG4vKipcbiAqIENvbm5lY3Rpb24gVHlwZSBDb25zdGFudHNcbiAqIFR5cGVzIG9mIGNvbm5lY3Rpb25zIGJldHdlZW4gdXNlcnMgYW5kIGdyb3Vwc1xuICovXG5leHBvcnQgY29uc3QgQ29ubmVjdGlvblR5cGUgPSB7XG4gIEFETUlOOiAnYWRtaW4nLFxuICBNRU1CRVI6ICdtZW1iZXInLFxuICBGT0xMT1dFUjogJ2ZvbGxvd2VyJyxcbiAgRk9MTE9XSU5HOiAnZm9sbG93aW5nJyxcbiAgQkxPQ0tFRDogJ2Jsb2NrZWQnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBDb25uZWN0aW9uVHlwZVR5cGUgPSB0eXBlb2YgQ29ubmVjdGlvblR5cGVba2V5b2YgdHlwZW9mIENvbm5lY3Rpb25UeXBlXTtcbiJdLCJuYW1lcyI6WyJDT0xMRUNUSU9OUyIsIkFQUFMiLCJDT05WRVJTQVRJT05TIiwiQ1VTVE9NRVJfTk9USUZJQ0FUSU9OUyIsIkNVU1RPTUVSX09SREVSUyIsIkZJTEVTIiwiR1JPVVBTIiwiSU1BR0VTIiwiTUFJTElOR19MSVNUUyIsIk1FU1NBR0VTIiwiUEVSU09OQVMiLCJQT1NUUyIsIlNIT1BJRllfUFJPRFVDVFMiLCJTSE9QSUZZX1dFQkhPT0tfRVZFTlRTIiwiU1VQUE9SVF9USUNLRVRfRVZFTlRTIiwiU1VQUE9SVF9USUNLRVRfTUVTU0FHRVMiLCJTVVBQT1JUX1RJQ0tFVFMiLCJUQUdTIiwiVVNFUlMiLCJWSURFT1MiLCJFREdFUyIsIkhBU19DT05ORUNUSU9OIiwiSEFTX0NPTlZFUlNBVElPTiIsIkhBU19DVVNUT01FUl9OT1RJRklDQVRJT04iLCJIQVNfQ1VTVE9NRVJfT1JERVIiLCJIQVNfRklMRSIsIkhBU19NRURJQSIsIkhBU19NQUlMSU5HX0xJU1QiLCJIQVNfUEVSU09OQSIsIkhBU19QVVJDSEFTRURfUFJPRFVDVCIsIkhBU19SRUFDVElPTiIsIkhBU19TVVBQT1JUX1RJQ0tFVCIsIkhBU19TVVBQT1JUX1RJQ0tFVF9FVkVOVCIsIkhBU19TVVBQT1JUX1RJQ0tFVF9NRVNTQUdFIiwiSVNfUE9TVEVEIiwiSVNfVEFHR0VEIiwiUHJpdmFjeUxldmVsIiwiUFVCTElDIiwiUFJJVkFURSIsIkdST1VQIiwiREVGQVVMVCIsIlJlYWN0aW9uVHlwZSIsIkxJS0UiLCJSU1ZQIiwiUElOIiwiVklFVyIsIkRJU0xJS0UiLCJDb25uZWN0aW9uVHlwZSIsIkFETUlOIiwiTUVNQkVSIiwiRk9MTE9XRVIiLCJGT0xMT1dJTkciLCJCTE9DS0VEIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRDs7O0NBR0MsR0FDRCxPQUFPLE1BQU1BLGNBQWM7SUFDekJDLE1BQU07SUFDTkMsZUFBZTtJQUNmQyx3QkFBd0I7SUFDeEJDLGlCQUFpQjtJQUNqQkMsT0FBTztJQUNQQyxRQUFRO0lBQ1JDLFFBQVE7SUFDUkMsZUFBZTtJQUNmQyxVQUFVO0lBQ1ZDLFVBQVU7SUFDVkMsT0FBTztJQUNQQyxrQkFBa0I7SUFDbEJDLHdCQUF3QjtJQUN4QkMsdUJBQXVCO0lBQ3ZCQyx5QkFBeUI7SUFDekJDLGlCQUFpQjtJQUNqQkMsTUFBTTtJQUNOQyxPQUFPO0lBQ1BDLFFBQVE7QUFDVixFQUFXO0FBRVg7OztDQUdDLEdBQ0QsT0FBTyxNQUFNQyxRQUFRO0lBQ25CQyxnQkFBZ0I7SUFDaEJDLGtCQUFrQjtJQUNsQkMsMkJBQTJCO0lBQzNCQyxvQkFBb0I7SUFDcEJDLFVBQVU7SUFDVkMsV0FBVztJQUNYQyxrQkFBa0I7SUFDbEJDLGFBQWE7SUFDYkMsdUJBQXVCO0lBQ3ZCQyxjQUFjO0lBQ2RDLG9CQUFvQjtJQUNwQkMsMEJBQTBCO0lBQzFCQyw0QkFBNEI7SUFDNUJDLFdBQVc7SUFDWEMsV0FBVztBQUNiLEVBQVc7QUFFWDs7O0NBR0MsR0FDRCxPQUFPLE1BQU1DLGVBQWU7SUFDMUJDLFFBQVE7SUFDUkMsU0FBUztJQUNUQyxPQUFPO0lBQ1BDLFNBQVM7QUFDWCxFQUFXO0FBSVg7OztDQUdDLEdBQ0QsT0FBTyxNQUFNQyxlQUFlO0lBQzFCQyxNQUFNO0lBQ05DLE1BQU07SUFDTkMsS0FBSztJQUNMQyxNQUFNO0lBQ05DLFNBQVM7QUFDWCxFQUFXO0FBSVg7OztDQUdDLEdBQ0QsT0FBTyxNQUFNQyxpQkFBaUI7SUFDNUJDLE9BQU87SUFDUEMsUUFBUTtJQUNSQyxVQUFVO0lBQ1ZDLFdBQVc7SUFDWEMsU0FBUztBQUNYLEVBQVcifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/reaktor",
3
- "version": "1.6.2",
3
+ "version": "1.6.3",
4
4
  "description": "Reaktor",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -68,6 +68,7 @@
68
68
  "@aws-sdk/client-apigatewaymanagementapi": "^3.1111.0",
69
69
  "@aws-sdk/client-dynamodb": "^3.1111.0",
70
70
  "@aws-sdk/client-mediaconvert": "^3.1111.0",
71
+ "@aws-sdk/client-rum": "^3.1112.0",
71
72
  "@aws-sdk/client-s3": "^3.1111.0",
72
73
  "@aws-sdk/client-ses": "^3.1111.0",
73
74
  "@aws-sdk/client-sns": "^3.1111.0",