@serve.zone/catalog 2.1.0 → 2.3.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.
@@ -0,0 +1,372 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { DeesElement, customElement, html, css, cssManager, property, state, } from '@design.estate/dees-element';
36
+ let SzRouteListView = (() => {
37
+ let _classDecorators = [customElement('sz-route-list-view')];
38
+ let _classDescriptor;
39
+ let _classExtraInitializers = [];
40
+ let _classThis;
41
+ let _classSuper = DeesElement;
42
+ let _routes_decorators;
43
+ let _routes_initializers = [];
44
+ let _routes_extraInitializers = [];
45
+ let _searchQuery_decorators;
46
+ let _searchQuery_initializers = [];
47
+ let _searchQuery_extraInitializers = [];
48
+ let _actionFilter_decorators;
49
+ let _actionFilter_initializers = [];
50
+ let _actionFilter_extraInitializers = [];
51
+ let _enabledFilter_decorators;
52
+ let _enabledFilter_initializers = [];
53
+ let _enabledFilter_extraInitializers = [];
54
+ var SzRouteListView = class extends _classSuper {
55
+ static { _classThis = this; }
56
+ static {
57
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
58
+ _routes_decorators = [property({ type: Array })];
59
+ _searchQuery_decorators = [state()];
60
+ _actionFilter_decorators = [state()];
61
+ _enabledFilter_decorators = [state()];
62
+ __esDecorate(this, null, _routes_decorators, { kind: "accessor", name: "routes", static: false, private: false, access: { has: obj => "routes" in obj, get: obj => obj.routes, set: (obj, value) => { obj.routes = value; } }, metadata: _metadata }, _routes_initializers, _routes_extraInitializers);
63
+ __esDecorate(this, null, _searchQuery_decorators, { kind: "accessor", name: "searchQuery", static: false, private: false, access: { has: obj => "searchQuery" in obj, get: obj => obj.searchQuery, set: (obj, value) => { obj.searchQuery = value; } }, metadata: _metadata }, _searchQuery_initializers, _searchQuery_extraInitializers);
64
+ __esDecorate(this, null, _actionFilter_decorators, { kind: "accessor", name: "actionFilter", static: false, private: false, access: { has: obj => "actionFilter" in obj, get: obj => obj.actionFilter, set: (obj, value) => { obj.actionFilter = value; } }, metadata: _metadata }, _actionFilter_initializers, _actionFilter_extraInitializers);
65
+ __esDecorate(this, null, _enabledFilter_decorators, { kind: "accessor", name: "enabledFilter", static: false, private: false, access: { has: obj => "enabledFilter" in obj, get: obj => obj.enabledFilter, set: (obj, value) => { obj.enabledFilter = value; } }, metadata: _metadata }, _enabledFilter_initializers, _enabledFilter_extraInitializers);
66
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
67
+ SzRouteListView = _classThis = _classDescriptor.value;
68
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
69
+ }
70
+ static demo = () => html `
71
+ <div style="padding: 24px; max-width: 1200px;">
72
+ <sz-route-list-view
73
+ .routes=${[
74
+ {
75
+ name: 'HTTPS Gateway',
76
+ description: 'Main web gateway with TLS termination',
77
+ enabled: true,
78
+ tags: ['web', 'https', 'production'],
79
+ match: { ports: 443, domains: ['*.example.com', 'serve.zone'], protocol: 'http' },
80
+ action: {
81
+ type: 'forward',
82
+ targets: [{ host: '10.0.0.1', port: 8080 }],
83
+ tls: { mode: 'terminate', certificate: 'auto' },
84
+ },
85
+ },
86
+ {
87
+ name: 'SMTP Inbound',
88
+ description: 'Email relay for incoming mail',
89
+ enabled: true,
90
+ tags: ['email', 'smtp'],
91
+ match: { ports: 25, domains: 'mail.serve.zone' },
92
+ action: {
93
+ type: 'forward',
94
+ targets: [{ host: '10.0.1.5', port: 25 }],
95
+ },
96
+ },
97
+ {
98
+ name: 'WebSocket API',
99
+ description: 'Real-time WebSocket connections',
100
+ enabled: true,
101
+ tags: ['web', 'api'],
102
+ match: { ports: 443, domains: 'ws.example.com', path: '/ws/*' },
103
+ action: {
104
+ type: 'forward',
105
+ targets: [{ host: '10.0.0.3', port: 9090 }],
106
+ websocket: { enabled: true },
107
+ tls: { mode: 'terminate', certificate: 'auto' },
108
+ },
109
+ },
110
+ {
111
+ name: 'Maintenance Page',
112
+ enabled: false,
113
+ tags: ['web'],
114
+ match: { ports: [80, 443], domains: 'old.example.com' },
115
+ action: { type: 'socket-handler' },
116
+ },
117
+ ]}
118
+ ></sz-route-list-view>
119
+ </div>
120
+ `;
121
+ static demoGroups = ['Routes'];
122
+ #routes_accessor_storage = __runInitializers(this, _routes_initializers, []);
123
+ get routes() { return this.#routes_accessor_storage; }
124
+ set routes(value) { this.#routes_accessor_storage = value; }
125
+ #searchQuery_accessor_storage = (__runInitializers(this, _routes_extraInitializers), __runInitializers(this, _searchQuery_initializers, ''));
126
+ get searchQuery() { return this.#searchQuery_accessor_storage; }
127
+ set searchQuery(value) { this.#searchQuery_accessor_storage = value; }
128
+ #actionFilter_accessor_storage = (__runInitializers(this, _searchQuery_extraInitializers), __runInitializers(this, _actionFilter_initializers, 'all'));
129
+ get actionFilter() { return this.#actionFilter_accessor_storage; }
130
+ set actionFilter(value) { this.#actionFilter_accessor_storage = value; }
131
+ #enabledFilter_accessor_storage = (__runInitializers(this, _actionFilter_extraInitializers), __runInitializers(this, _enabledFilter_initializers, 'all'));
132
+ get enabledFilter() { return this.#enabledFilter_accessor_storage; }
133
+ set enabledFilter(value) { this.#enabledFilter_accessor_storage = value; }
134
+ get filteredRoutes() {
135
+ return this.routes.filter((route) => {
136
+ // Action type filter
137
+ if (this.actionFilter !== 'all' && route.action.type !== this.actionFilter)
138
+ return false;
139
+ // Enabled/disabled filter
140
+ if (this.enabledFilter === 'enabled' && route.enabled === false)
141
+ return false;
142
+ if (this.enabledFilter === 'disabled' && route.enabled !== false)
143
+ return false;
144
+ // Search query
145
+ if (this.searchQuery) {
146
+ const q = this.searchQuery.toLowerCase();
147
+ return this.routeMatchesSearch(route, q);
148
+ }
149
+ return true;
150
+ });
151
+ }
152
+ routeMatchesSearch(route, q) {
153
+ // Name and description
154
+ if (route.name?.toLowerCase().includes(q))
155
+ return true;
156
+ if (route.description?.toLowerCase().includes(q))
157
+ return true;
158
+ // Domains
159
+ if (route.match.domains) {
160
+ const domains = Array.isArray(route.match.domains) ? route.match.domains : [route.match.domains];
161
+ if (domains.some((d) => d.toLowerCase().includes(q)))
162
+ return true;
163
+ }
164
+ // Ports
165
+ const portsStr = this.formatPortsForSearch(route.match.ports);
166
+ if (portsStr.includes(q))
167
+ return true;
168
+ // Path
169
+ if (route.match.path?.toLowerCase().includes(q))
170
+ return true;
171
+ // Client IPs
172
+ if (route.match.clientIp?.some((ip) => ip.includes(q)))
173
+ return true;
174
+ // Targets
175
+ if (route.action.targets) {
176
+ for (const t of route.action.targets) {
177
+ const hosts = Array.isArray(t.host) ? t.host : [t.host];
178
+ if (hosts.some((h) => h.toLowerCase().includes(q)))
179
+ return true;
180
+ }
181
+ }
182
+ // Tags
183
+ if (route.tags?.some((t) => t.toLowerCase().includes(q)))
184
+ return true;
185
+ return false;
186
+ }
187
+ formatPortsForSearch(ports) {
188
+ if (typeof ports === 'number')
189
+ return String(ports);
190
+ if (Array.isArray(ports)) {
191
+ return ports
192
+ .map((p) => (typeof p === 'number' ? String(p) : `${p.from}-${p.to}`))
193
+ .join(' ');
194
+ }
195
+ return String(ports);
196
+ }
197
+ static styles = [
198
+ cssManager.defaultStyles,
199
+ css `
200
+ :host {
201
+ display: block;
202
+ }
203
+
204
+ .filter-bar {
205
+ display: flex;
206
+ flex-wrap: wrap;
207
+ gap: 12px;
208
+ align-items: center;
209
+ margin-bottom: 12px;
210
+ }
211
+
212
+ .search-input {
213
+ flex: 1;
214
+ min-width: 200px;
215
+ padding: 8px 12px;
216
+ background: ${cssManager.bdTheme('#ffffff', '#09090b')};
217
+ border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
218
+ border-radius: 6px;
219
+ font-size: 14px;
220
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
221
+ outline: none;
222
+ transition: border-color 200ms ease;
223
+ }
224
+
225
+ .search-input::placeholder {
226
+ color: ${cssManager.bdTheme('#a1a1aa', '#52525b')};
227
+ }
228
+
229
+ .search-input:focus {
230
+ border-color: ${cssManager.bdTheme('#2563eb', '#3b82f6')};
231
+ }
232
+
233
+ .chip-group {
234
+ display: flex;
235
+ gap: 4px;
236
+ }
237
+
238
+ .chip {
239
+ padding: 6px 12px;
240
+ background: transparent;
241
+ border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
242
+ border-radius: 9999px;
243
+ font-size: 12px;
244
+ font-weight: 500;
245
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
246
+ cursor: pointer;
247
+ transition: all 200ms ease;
248
+ white-space: nowrap;
249
+ }
250
+
251
+ .chip:hover {
252
+ background: ${cssManager.bdTheme('#f4f4f5', '#18181b')};
253
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
254
+ }
255
+
256
+ .chip.active {
257
+ background: ${cssManager.bdTheme('#18181b', '#fafafa')};
258
+ color: ${cssManager.bdTheme('#fafafa', '#18181b')};
259
+ border-color: ${cssManager.bdTheme('#18181b', '#fafafa')};
260
+ }
261
+
262
+ .results-count {
263
+ font-size: 13px;
264
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
265
+ margin-bottom: 16px;
266
+ }
267
+
268
+ .grid {
269
+ display: grid;
270
+ grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));
271
+ gap: 16px;
272
+ }
273
+
274
+ .grid sz-route-card {
275
+ cursor: pointer;
276
+ }
277
+
278
+ .empty-state {
279
+ text-align: center;
280
+ padding: 48px 24px;
281
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
282
+ font-size: 14px;
283
+ }
284
+
285
+ .empty-state-icon {
286
+ font-size: 32px;
287
+ margin-bottom: 12px;
288
+ opacity: 0.5;
289
+ }
290
+ `,
291
+ ];
292
+ render() {
293
+ const filtered = this.filteredRoutes;
294
+ return html `
295
+ <div class="filter-bar">
296
+ <input
297
+ class="search-input"
298
+ type="text"
299
+ placeholder="Search routes by domain, IP, port, path, or tag..."
300
+ .value=${this.searchQuery}
301
+ @input=${(e) => {
302
+ this.searchQuery = e.target.value;
303
+ }}
304
+ />
305
+ <div class="chip-group">
306
+ ${['all', 'forward', 'socket-handler'].map((type) => html `
307
+ <button
308
+ class="chip ${this.actionFilter === type ? 'active' : ''}"
309
+ @click=${() => {
310
+ this.actionFilter = type;
311
+ }}
312
+ >
313
+ ${type === 'all' ? 'All' : type === 'forward' ? 'Forward' : 'Socket Handler'}
314
+ </button>
315
+ `)}
316
+ </div>
317
+ <div class="chip-group">
318
+ ${['all', 'enabled', 'disabled'].map((status) => html `
319
+ <button
320
+ class="chip ${this.enabledFilter === status ? 'active' : ''}"
321
+ @click=${() => {
322
+ this.enabledFilter = status;
323
+ }}
324
+ >
325
+ ${status.charAt(0).toUpperCase() + status.slice(1)}
326
+ </button>
327
+ `)}
328
+ </div>
329
+ </div>
330
+
331
+ <div class="results-count">
332
+ Showing ${filtered.length} of ${this.routes.length} routes
333
+ </div>
334
+
335
+ ${filtered.length > 0
336
+ ? html `
337
+ <div class="grid">
338
+ ${filtered.map((route) => html `
339
+ <sz-route-card
340
+ .route=${route}
341
+ @click=${() => this.handleRouteClick(route)}
342
+ ></sz-route-card>
343
+ `)}
344
+ </div>
345
+ `
346
+ : html `
347
+ <div class="empty-state">
348
+ <div class="empty-state-icon">&#x1f50d;</div>
349
+ <div>No routes match your filters</div>
350
+ </div>
351
+ `}
352
+ `;
353
+ }
354
+ handleRouteClick(route) {
355
+ this.dispatchEvent(new CustomEvent('route-click', {
356
+ detail: route,
357
+ bubbles: true,
358
+ composed: true,
359
+ }));
360
+ }
361
+ constructor() {
362
+ super(...arguments);
363
+ __runInitializers(this, _enabledFilter_extraInitializers);
364
+ }
365
+ static {
366
+ __runInitializers(_classThis, _classExtraInitializers);
367
+ }
368
+ };
369
+ return SzRouteListView = _classThis;
370
+ })();
371
+ export { SzRouteListView };
372
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3otcm91dGUtbGlzdC12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViL2VsZW1lbnRzL3N6LXJvdXRlLWxpc3Qtdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsSUFBSSxFQUNKLEdBQUcsRUFDSCxVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssR0FFTixNQUFNLDZCQUE2QixDQUFDO0lBV3hCLGVBQWU7NEJBRDNCLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQzs7OztzQkFDQyxXQUFXOzs7Ozs7Ozs7Ozs7OytCQUFuQixTQUFRLFdBQVc7Ozs7a0NBdUQ3QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7dUNBR3pCLEtBQUssRUFBRTt3Q0FHUCxLQUFLLEVBQUU7eUNBR1AsS0FBSyxFQUFFO1lBUlIsdUtBQWdCLE1BQU0sNkJBQU4sTUFBTSx1RkFBc0I7WUFHNUMsc0xBQWlCLFdBQVcsNkJBQVgsV0FBVyxpR0FBYztZQUcxQyx5TEFBaUIsWUFBWSw2QkFBWixZQUFZLG1HQUFtQztZQUdoRSw0TEFBaUIsYUFBYSw2QkFBYixhQUFhLHFHQUF5QztZQWpFekUsNktBaVRDOzs7O1FBaFRRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOzs7a0JBR2Y7WUFDUjtnQkFDRSxJQUFJLEVBQUUsZUFBZTtnQkFDckIsV0FBVyxFQUFFLHVDQUF1QztnQkFDcEQsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUM7Z0JBQ3BDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFlLEVB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
@@ -160,6 +160,18 @@ let SzDemoAppShell = (() => {
160
160
  iconName: 'lucide:Key',
161
161
  content: 'sz-demo-view-tokens',
162
162
  },
163
+ {
164
+ id: 'mta',
165
+ name: 'Email / MTA',
166
+ iconName: 'lucide:Mail',
167
+ content: 'sz-demo-view-mta',
168
+ },
169
+ {
170
+ id: 'routes',
171
+ name: 'Routes',
172
+ iconName: 'lucide:Route',
173
+ content: 'sz-demo-view-routes',
174
+ },
163
175
  {
164
176
  id: 'settings',
165
177
  name: 'Settings',
@@ -175,7 +187,7 @@ let SzDemoAppShell = (() => {
175
187
  },
176
188
  {
177
189
  name: 'Infrastructure',
178
- views: ['services', 'network', 'registries'],
190
+ views: ['services', 'network', 'registries', 'mta', 'routes'],
179
191
  },
180
192
  {
181
193
  name: 'Administration',
@@ -209,4 +221,4 @@ let SzDemoAppShell = (() => {
209
221
  return SzDemoAppShell = _classThis;
210
222
  })();
211
223
  export { SzDemoAppShell };
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3otZGVtby1hcHAtc2hlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvcGFnZXMvc3otZGVtby1hcHAtc2hlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLElBQUksRUFDSixHQUFHLEVBQ0gsVUFBVSxHQUVYLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLHNCQUFzQixDQUFDO0lBU2pCLGNBQWM7NEJBRDFCLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQzs7OztzQkFDQyxXQUFXOzhCQUFuQixTQUFRLFdBQVc7Ozs7WUFBL0MsNktBK0pDOzs7O1FBOUpRLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDckIsVUFBVSxDQUFDLGFBQWE7WUFDeEIsR0FBRyxDQUFBOzs7Ozs7Ozs7OztLQVdGO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxPQUFPLElBQUksQ0FBQTs7S0FFVixDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssQ0FBQyxZQUFZO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLFlBQVksQ0FBYyxDQUFDO1lBRXhFLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU87WUFFbkIsa0NBQWtDO1lBQ2xDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ2QsUUFBUSxFQUFFO29CQUNSLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsWUFBWTtpQkFDdkI7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLFVBQVUsRUFBRSxJQUFJO29CQUNoQixXQUFXLEVBQUUsWUFBWTtvQkFDekIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLElBQUksRUFBRSxNQUFNOzRCQUNaLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxHQUFFLENBQUM7NEJBQ3RC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
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3otZGVtby1hcHAtc2hlbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvcGFnZXMvc3otZGVtby1hcHAtc2hlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsYUFBYSxFQUNiLElBQUksRUFDSixHQUFHLEVBQ0gsVUFBVSxHQUVYLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLHNCQUFzQixDQUFDO0lBU2pCLGNBQWM7NEJBRDFCLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQzs7OztzQkFDQyxXQUFXOzhCQUFuQixTQUFRLFdBQVc7Ozs7WUFBL0MsNktBMktDOzs7O1FBMUtRLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDckIsVUFBVSxDQUFDLGFBQWE7WUFDeEIsR0FBRyxDQUFBOzs7Ozs7Ozs7OztLQVdGO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxPQUFPLElBQUksQ0FBQTs7S0FFVixDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssQ0FBQyxZQUFZO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLFlBQVksQ0FBYyxDQUFDO1lBRXhFLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU87WUFFbkIsa0NBQWtDO1lBQ2xDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ2QsUUFBUSxFQUFFO29CQUNSLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsWUFBWTtpQkFDdkI7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLFVBQVUsRUFBRSxJQUFJO29CQUNoQixXQUFXLEVBQUUsWUFBWTtvQkFDekIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLElBQUksRUFBRSxNQUFNOzRCQUNaLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRSxHQUFFLENBQUM7NEJBQ3RC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