@design.estate/dees-catalog 4.12.0 → 6.0.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.
Files changed (37) hide show
  1. package/dist_bundle/bundle.js +2719 -1261
  2. package/dist_ts_web/00_commitinfo_data.js +2 -2
  3. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +23 -4
  4. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +290 -78
  5. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +419 -42
  6. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +44 -3
  7. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +5 -7
  8. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +5 -2
  9. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.d.ts +54 -0
  10. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.demo.d.ts +1 -0
  11. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.demo.js +56 -0
  12. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.js +870 -0
  13. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/index.d.ts +1 -0
  14. package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/index.js +2 -0
  15. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +5 -0
  16. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +87 -3
  17. package/dist_ts_web/elements/00group-harness/harness.markdown.js +3 -1
  18. package/dist_ts_web/elements/00group-harness/harness.styles.js +48 -1
  19. package/dist_ts_web/elements/00group-harness/index.d.ts +1 -0
  20. package/dist_ts_web/elements/00group-harness/index.js +2 -1
  21. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +41 -0
  22. package/package.json +1 -1
  23. package/readme.md +13 -5
  24. package/ts_web/00_commitinfo_data.ts +1 -1
  25. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +277 -79
  26. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +367 -36
  27. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +43 -2
  28. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +4 -6
  29. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +4 -1
  30. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.demo.ts +67 -0
  31. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +802 -0
  32. package/ts_web/elements/00group-harness/dees-harness-session-sidebar/index.ts +1 -0
  33. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +79 -1
  34. package/ts_web/elements/00group-harness/harness.markdown.ts +2 -0
  35. package/ts_web/elements/00group-harness/harness.styles.ts +47 -0
  36. package/ts_web/elements/00group-harness/index.ts +1 -0
  37. package/ts_web/elements/00group-harness/interfaces.ts +48 -0
@@ -33,13 +33,14 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
33
33
  return useValue ? value : void 0;
34
34
  };
35
35
  import { demoFunc } from './dees-harness-chat.demo.js';
36
- import { DeesElement, html, css, customElement, property, cssManager, } from '@design.estate/dees-element';
36
+ import { DeesElement, html, css, customElement, property, state, cssManager, } from '@design.estate/dees-element';
37
37
  import { themeDefaultStyles } from '../../00theme.js';
38
38
  import { harnessParseTodos } from '../harness.helpers.js';
39
39
  import { DeesHarnessToolRegistry } from '../toolregistry.js';
40
40
  import { DeesHarnessMessageList } from '../dees-harness-message-list/dees-harness-message-list.js';
41
41
  import { DeesHarnessComposer } from '../dees-harness-composer/dees-harness-composer.js';
42
42
  import '../dees-harness-todos/dees-harness-todos.js';
43
+ import '../dees-harness-session-sidebar/dees-harness-session-sidebar.js';
43
44
  import '../dees-harness-usage/dees-harness-usage.js';
44
45
  import '../../00group-button/dees-button/dees-button.js';
45
46
  import '../../00group-utility/dees-icon/dees-icon.js';
@@ -48,8 +49,7 @@ import '../../00group-utility/dees-icon/dees-icon.js';
48
49
  * pinned permission queue, status line, and composer. Owns no business
49
50
  * logic — consumers feed `.messages`/`.permissions`/`.status` (and stream
50
51
  * through `applyDelta()`), and listen for the bubbling harness-* events
51
- * from the children plus `harness-new-session` / `harness-open-sessions`
52
- * from the toolbar.
52
+ * from the children.
53
53
  */
54
54
  let DeesHarnessChat = (() => {
55
55
  let _classDecorators = [customElement('dees-harness-chat')];
@@ -78,6 +78,42 @@ let DeesHarnessChat = (() => {
78
78
  let _showTodosPanel_decorators;
79
79
  let _showTodosPanel_initializers = [];
80
80
  let _showTodosPanel_extraInitializers = [];
81
+ let _showSessionSidebar_decorators;
82
+ let _showSessionSidebar_initializers = [];
83
+ let _showSessionSidebar_extraInitializers = [];
84
+ let _sessionMetrics_decorators;
85
+ let _sessionMetrics_initializers = [];
86
+ let _sessionMetrics_extraInitializers = [];
87
+ let _scratchpad_decorators;
88
+ let _scratchpad_initializers = [];
89
+ let _scratchpad_extraInitializers = [];
90
+ let _scratchpadBusy_decorators;
91
+ let _scratchpadBusy_initializers = [];
92
+ let _scratchpadBusy_extraInitializers = [];
93
+ let _scratchpadError_decorators;
94
+ let _scratchpadError_initializers = [];
95
+ let _scratchpadError_extraInitializers = [];
96
+ let _sessionIntelligenceEnabled_decorators;
97
+ let _sessionIntelligenceEnabled_initializers = [];
98
+ let _sessionIntelligenceEnabled_extraInitializers = [];
99
+ let _intelligenceExchanges_decorators;
100
+ let _intelligenceExchanges_initializers = [];
101
+ let _intelligenceExchanges_extraInitializers = [];
102
+ let _intelligenceBusy_decorators;
103
+ let _intelligenceBusy_initializers = [];
104
+ let _intelligenceBusy_extraInitializers = [];
105
+ let _intelligenceError_decorators;
106
+ let _intelligenceError_initializers = [];
107
+ let _intelligenceError_extraInitializers = [];
108
+ let _sessionSidebarOpen_decorators;
109
+ let _sessionSidebarOpen_initializers = [];
110
+ let _sessionSidebarOpen_extraInitializers = [];
111
+ let _desktopSessionSidebarVisible_decorators;
112
+ let _desktopSessionSidebarVisible_initializers = [];
113
+ let _desktopSessionSidebarVisible_extraInitializers = [];
114
+ let _narrowSessionLayout_decorators;
115
+ let _narrowSessionLayout_initializers = [];
116
+ let _narrowSessionLayout_extraInitializers = [];
81
117
  let _heading_decorators;
82
118
  let _heading_initializers = [];
83
119
  let _heading_extraInitializers = [];
@@ -140,6 +176,18 @@ let DeesHarnessChat = (() => {
140
176
  _usage_decorators = [property({ attribute: false })];
141
177
  _todos_decorators = [property({ attribute: false })];
142
178
  _showTodosPanel_decorators = [property({ type: Boolean })];
179
+ _showSessionSidebar_decorators = [property({ type: Boolean })];
180
+ _sessionMetrics_decorators = [property({ attribute: false })];
181
+ _scratchpad_decorators = [property({ attribute: false })];
182
+ _scratchpadBusy_decorators = [property({ type: Boolean })];
183
+ _scratchpadError_decorators = [property()];
184
+ _sessionIntelligenceEnabled_decorators = [property({ type: Boolean })];
185
+ _intelligenceExchanges_decorators = [property({ attribute: false })];
186
+ _intelligenceBusy_decorators = [property({ type: Boolean })];
187
+ _intelligenceError_decorators = [property()];
188
+ _sessionSidebarOpen_decorators = [state()];
189
+ _desktopSessionSidebarVisible_decorators = [state()];
190
+ _narrowSessionLayout_decorators = [state()];
143
191
  _heading_decorators = [property()];
144
192
  _subheading_decorators = [property()];
145
193
  _showToolbar_decorators = [property({ type: Boolean })];
@@ -164,6 +212,18 @@ let DeesHarnessChat = (() => {
164
212
  __esDecorate(this, null, _usage_decorators, { kind: "accessor", name: "usage", static: false, private: false, access: { has: obj => "usage" in obj, get: obj => obj.usage, set: (obj, value) => { obj.usage = value; } }, metadata: _metadata }, _usage_initializers, _usage_extraInitializers);
165
213
  __esDecorate(this, null, _todos_decorators, { kind: "accessor", name: "todos", static: false, private: false, access: { has: obj => "todos" in obj, get: obj => obj.todos, set: (obj, value) => { obj.todos = value; } }, metadata: _metadata }, _todos_initializers, _todos_extraInitializers);
166
214
  __esDecorate(this, null, _showTodosPanel_decorators, { kind: "accessor", name: "showTodosPanel", static: false, private: false, access: { has: obj => "showTodosPanel" in obj, get: obj => obj.showTodosPanel, set: (obj, value) => { obj.showTodosPanel = value; } }, metadata: _metadata }, _showTodosPanel_initializers, _showTodosPanel_extraInitializers);
215
+ __esDecorate(this, null, _showSessionSidebar_decorators, { kind: "accessor", name: "showSessionSidebar", static: false, private: false, access: { has: obj => "showSessionSidebar" in obj, get: obj => obj.showSessionSidebar, set: (obj, value) => { obj.showSessionSidebar = value; } }, metadata: _metadata }, _showSessionSidebar_initializers, _showSessionSidebar_extraInitializers);
216
+ __esDecorate(this, null, _sessionMetrics_decorators, { kind: "accessor", name: "sessionMetrics", static: false, private: false, access: { has: obj => "sessionMetrics" in obj, get: obj => obj.sessionMetrics, set: (obj, value) => { obj.sessionMetrics = value; } }, metadata: _metadata }, _sessionMetrics_initializers, _sessionMetrics_extraInitializers);
217
+ __esDecorate(this, null, _scratchpad_decorators, { kind: "accessor", name: "scratchpad", static: false, private: false, access: { has: obj => "scratchpad" in obj, get: obj => obj.scratchpad, set: (obj, value) => { obj.scratchpad = value; } }, metadata: _metadata }, _scratchpad_initializers, _scratchpad_extraInitializers);
218
+ __esDecorate(this, null, _scratchpadBusy_decorators, { kind: "accessor", name: "scratchpadBusy", static: false, private: false, access: { has: obj => "scratchpadBusy" in obj, get: obj => obj.scratchpadBusy, set: (obj, value) => { obj.scratchpadBusy = value; } }, metadata: _metadata }, _scratchpadBusy_initializers, _scratchpadBusy_extraInitializers);
219
+ __esDecorate(this, null, _scratchpadError_decorators, { kind: "accessor", name: "scratchpadError", static: false, private: false, access: { has: obj => "scratchpadError" in obj, get: obj => obj.scratchpadError, set: (obj, value) => { obj.scratchpadError = value; } }, metadata: _metadata }, _scratchpadError_initializers, _scratchpadError_extraInitializers);
220
+ __esDecorate(this, null, _sessionIntelligenceEnabled_decorators, { kind: "accessor", name: "sessionIntelligenceEnabled", static: false, private: false, access: { has: obj => "sessionIntelligenceEnabled" in obj, get: obj => obj.sessionIntelligenceEnabled, set: (obj, value) => { obj.sessionIntelligenceEnabled = value; } }, metadata: _metadata }, _sessionIntelligenceEnabled_initializers, _sessionIntelligenceEnabled_extraInitializers);
221
+ __esDecorate(this, null, _intelligenceExchanges_decorators, { kind: "accessor", name: "intelligenceExchanges", static: false, private: false, access: { has: obj => "intelligenceExchanges" in obj, get: obj => obj.intelligenceExchanges, set: (obj, value) => { obj.intelligenceExchanges = value; } }, metadata: _metadata }, _intelligenceExchanges_initializers, _intelligenceExchanges_extraInitializers);
222
+ __esDecorate(this, null, _intelligenceBusy_decorators, { kind: "accessor", name: "intelligenceBusy", static: false, private: false, access: { has: obj => "intelligenceBusy" in obj, get: obj => obj.intelligenceBusy, set: (obj, value) => { obj.intelligenceBusy = value; } }, metadata: _metadata }, _intelligenceBusy_initializers, _intelligenceBusy_extraInitializers);
223
+ __esDecorate(this, null, _intelligenceError_decorators, { kind: "accessor", name: "intelligenceError", static: false, private: false, access: { has: obj => "intelligenceError" in obj, get: obj => obj.intelligenceError, set: (obj, value) => { obj.intelligenceError = value; } }, metadata: _metadata }, _intelligenceError_initializers, _intelligenceError_extraInitializers);
224
+ __esDecorate(this, null, _sessionSidebarOpen_decorators, { kind: "accessor", name: "sessionSidebarOpen", static: false, private: false, access: { has: obj => "sessionSidebarOpen" in obj, get: obj => obj.sessionSidebarOpen, set: (obj, value) => { obj.sessionSidebarOpen = value; } }, metadata: _metadata }, _sessionSidebarOpen_initializers, _sessionSidebarOpen_extraInitializers);
225
+ __esDecorate(this, null, _desktopSessionSidebarVisible_decorators, { kind: "accessor", name: "desktopSessionSidebarVisible", static: false, private: false, access: { has: obj => "desktopSessionSidebarVisible" in obj, get: obj => obj.desktopSessionSidebarVisible, set: (obj, value) => { obj.desktopSessionSidebarVisible = value; } }, metadata: _metadata }, _desktopSessionSidebarVisible_initializers, _desktopSessionSidebarVisible_extraInitializers);
226
+ __esDecorate(this, null, _narrowSessionLayout_decorators, { kind: "accessor", name: "narrowSessionLayout", static: false, private: false, access: { has: obj => "narrowSessionLayout" in obj, get: obj => obj.narrowSessionLayout, set: (obj, value) => { obj.narrowSessionLayout = value; } }, metadata: _metadata }, _narrowSessionLayout_initializers, _narrowSessionLayout_extraInitializers);
167
227
  __esDecorate(this, null, _heading_decorators, { kind: "accessor", name: "heading", static: false, private: false, access: { has: obj => "heading" in obj, get: obj => obj.heading, set: (obj, value) => { obj.heading = value; } }, metadata: _metadata }, _heading_initializers, _heading_extraInitializers);
168
228
  __esDecorate(this, null, _subheading_decorators, { kind: "accessor", name: "subheading", static: false, private: false, access: { has: obj => "subheading" in obj, get: obj => obj.subheading, set: (obj, value) => { obj.subheading = value; } }, metadata: _metadata }, _subheading_initializers, _subheading_extraInitializers);
169
229
  __esDecorate(this, null, _showToolbar_decorators, { kind: "accessor", name: "showToolbar", static: false, private: false, access: { has: obj => "showToolbar" in obj, get: obj => obj.showToolbar, set: (obj, value) => { obj.showToolbar = value; } }, metadata: _metadata }, _showToolbar_initializers, _showToolbar_extraInitializers);
@@ -214,7 +274,44 @@ let DeesHarnessChat = (() => {
214
274
  #showTodosPanel_accessor_storage = (__runInitializers(this, _todos_extraInitializers), __runInitializers(this, _showTodosPanel_initializers, true));
215
275
  get showTodosPanel() { return this.#showTodosPanel_accessor_storage; }
216
276
  set showTodosPanel(value) { this.#showTodosPanel_accessor_storage = value; }
217
- #heading_accessor_storage = (__runInitializers(this, _showTodosPanel_extraInitializers), __runInitializers(this, _heading_initializers, ''));
277
+ #showSessionSidebar_accessor_storage = (__runInitializers(this, _showTodosPanel_extraInitializers), __runInitializers(this, _showSessionSidebar_initializers, true));
278
+ get showSessionSidebar() { return this.#showSessionSidebar_accessor_storage; }
279
+ set showSessionSidebar(value) { this.#showSessionSidebar_accessor_storage = value; }
280
+ #sessionMetrics_accessor_storage = (__runInitializers(this, _showSessionSidebar_extraInitializers), __runInitializers(this, _sessionMetrics_initializers, {}));
281
+ get sessionMetrics() { return this.#sessionMetrics_accessor_storage; }
282
+ set sessionMetrics(value) { this.#sessionMetrics_accessor_storage = value; }
283
+ #scratchpad_accessor_storage = (__runInitializers(this, _sessionMetrics_extraInitializers), __runInitializers(this, _scratchpad_initializers, undefined));
284
+ get scratchpad() { return this.#scratchpad_accessor_storage; }
285
+ set scratchpad(value) { this.#scratchpad_accessor_storage = value; }
286
+ #scratchpadBusy_accessor_storage = (__runInitializers(this, _scratchpad_extraInitializers), __runInitializers(this, _scratchpadBusy_initializers, false));
287
+ get scratchpadBusy() { return this.#scratchpadBusy_accessor_storage; }
288
+ set scratchpadBusy(value) { this.#scratchpadBusy_accessor_storage = value; }
289
+ #scratchpadError_accessor_storage = (__runInitializers(this, _scratchpadBusy_extraInitializers), __runInitializers(this, _scratchpadError_initializers, ''));
290
+ get scratchpadError() { return this.#scratchpadError_accessor_storage; }
291
+ set scratchpadError(value) { this.#scratchpadError_accessor_storage = value; }
292
+ #sessionIntelligenceEnabled_accessor_storage = (__runInitializers(this, _scratchpadError_extraInitializers), __runInitializers(this, _sessionIntelligenceEnabled_initializers, false));
293
+ get sessionIntelligenceEnabled() { return this.#sessionIntelligenceEnabled_accessor_storage; }
294
+ set sessionIntelligenceEnabled(value) { this.#sessionIntelligenceEnabled_accessor_storage = value; }
295
+ #intelligenceExchanges_accessor_storage = (__runInitializers(this, _sessionIntelligenceEnabled_extraInitializers), __runInitializers(this, _intelligenceExchanges_initializers, []));
296
+ get intelligenceExchanges() { return this.#intelligenceExchanges_accessor_storage; }
297
+ set intelligenceExchanges(value) { this.#intelligenceExchanges_accessor_storage = value; }
298
+ #intelligenceBusy_accessor_storage = (__runInitializers(this, _intelligenceExchanges_extraInitializers), __runInitializers(this, _intelligenceBusy_initializers, false));
299
+ get intelligenceBusy() { return this.#intelligenceBusy_accessor_storage; }
300
+ set intelligenceBusy(value) { this.#intelligenceBusy_accessor_storage = value; }
301
+ #intelligenceError_accessor_storage = (__runInitializers(this, _intelligenceBusy_extraInitializers), __runInitializers(this, _intelligenceError_initializers, ''));
302
+ get intelligenceError() { return this.#intelligenceError_accessor_storage; }
303
+ set intelligenceError(value) { this.#intelligenceError_accessor_storage = value; }
304
+ #sessionSidebarOpen_accessor_storage = (__runInitializers(this, _intelligenceError_extraInitializers), __runInitializers(this, _sessionSidebarOpen_initializers, false));
305
+ get sessionSidebarOpen() { return this.#sessionSidebarOpen_accessor_storage; }
306
+ set sessionSidebarOpen(value) { this.#sessionSidebarOpen_accessor_storage = value; }
307
+ #desktopSessionSidebarVisible_accessor_storage = (__runInitializers(this, _sessionSidebarOpen_extraInitializers), __runInitializers(this, _desktopSessionSidebarVisible_initializers, true));
308
+ get desktopSessionSidebarVisible() { return this.#desktopSessionSidebarVisible_accessor_storage; }
309
+ set desktopSessionSidebarVisible(value) { this.#desktopSessionSidebarVisible_accessor_storage = value; }
310
+ #narrowSessionLayout_accessor_storage = (__runInitializers(this, _desktopSessionSidebarVisible_extraInitializers), __runInitializers(this, _narrowSessionLayout_initializers, false));
311
+ get narrowSessionLayout() { return this.#narrowSessionLayout_accessor_storage; }
312
+ set narrowSessionLayout(value) { this.#narrowSessionLayout_accessor_storage = value; }
313
+ sessionLayoutResizeObserver = __runInitializers(this, _narrowSessionLayout_extraInitializers);
314
+ #heading_accessor_storage = __runInitializers(this, _heading_initializers, '');
218
315
  get heading() { return this.#heading_accessor_storage; }
219
316
  set heading(value) { this.#heading_accessor_storage = value; }
220
317
  #subheading_accessor_storage = (__runInitializers(this, _heading_extraInitializers), __runInitializers(this, _subheading_initializers, ''));
@@ -283,6 +380,7 @@ let DeesHarnessChat = (() => {
283
380
  }
284
381
 
285
382
  .chatBody {
383
+ position: relative;
286
384
  flex: 1;
287
385
  min-height: 0;
288
386
  min-width: 0;
@@ -295,22 +393,135 @@ let DeesHarnessChat = (() => {
295
393
  min-width: 0;
296
394
  }
297
395
 
298
- .todosPanel {
396
+ .transcriptColumn {
397
+ flex: 1;
398
+ min-height: 0;
399
+ display: flex;
400
+ flex-direction: column;
401
+ }
402
+
403
+ .sessionPanel {
299
404
  flex: 0 0 232px;
300
405
  min-width: 0;
301
- overflow-y: auto;
302
- scrollbar-width: thin;
303
- scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
304
- padding: var(--dees-spacing-sm) var(--dees-spacing-md);
406
+ min-height: 0;
407
+ display: flex;
408
+ flex-direction: column;
409
+ overflow: hidden;
410
+ padding: 0;
305
411
  border-left: 1px solid var(--dees-color-border-subtle);
306
412
  background: var(--dees-color-bg-secondary);
307
413
  }
308
414
 
309
- /* narrow hosts (e.g. a sidebar chat) drop the panel; todo tool cards
310
- in the transcript still carry the same information */
311
- @container (max-width: 520px) {
312
- .todosPanel {
313
- display: none;
415
+ .sessionPanel.desktopHidden {
416
+ display: none;
417
+ }
418
+
419
+ .sessionPanel > dees-harness-session-sidebar {
420
+ flex: 1;
421
+ min-height: 0;
422
+ }
423
+
424
+ .sessionPanelClose,
425
+ .sessionPanelToggle,
426
+ .sessionPanelBackdrop {
427
+ display: none;
428
+ }
429
+
430
+ .sessionPanelToggle,
431
+ .toolbarSessionPanelToggle {
432
+ box-sizing: border-box;
433
+ width: var(--dees-control-height-lg);
434
+ height: var(--dees-control-height-lg);
435
+ padding: 0;
436
+ align-items: center;
437
+ justify-content: center;
438
+ border: 1px solid transparent;
439
+ border-radius: var(--dees-radius-lg);
440
+ corner-shape: var(--dees-corner-shape);
441
+ background: transparent;
442
+ color: var(--dees-color-text-primary);
443
+ cursor: pointer;
444
+ }
445
+
446
+ .toolbarSessionPanelToggle {
447
+ display: flex;
448
+ }
449
+
450
+ .sessionPanelToggle:hover,
451
+ .toolbarSessionPanelToggle:hover {
452
+ background: var(--dees-color-badge-default-bg);
453
+ }
454
+
455
+ .sessionPanelToggle:focus-visible,
456
+ .toolbarSessionPanelToggle:focus-visible {
457
+ outline: 2px solid var(--dees-color-accent-primary);
458
+ outline-offset: 2px;
459
+ }
460
+
461
+ /* Narrow hosts keep every session section reachable in an overlay.
462
+ Todo tool cards remain a second transcript-level representation. */
463
+ @container (max-width: 680px) {
464
+ .sessionPanel {
465
+ position: absolute;
466
+ inset: 0 0 0 auto;
467
+ display: flex;
468
+ width: min(320px, calc(100% - 36px));
469
+ max-width: none;
470
+ padding: 42px 0 0;
471
+ border-left-color: var(--dees-color-border-default);
472
+ box-shadow: var(--dees-shadow-lg);
473
+ visibility: hidden;
474
+ transform: translateX(100%);
475
+ transition:
476
+ transform var(--dees-transition-default) var(--dees-ease-out),
477
+ visibility 0s linear var(--dees-transition-default);
478
+ }
479
+
480
+ .sessionPanel.desktopHidden {
481
+ display: flex;
482
+ }
483
+
484
+ .sessionPanel.open {
485
+ visibility: visible;
486
+ transform: translateX(0);
487
+ transition-delay: 0s;
488
+ }
489
+
490
+ .sessionPanelClose {
491
+ position: absolute;
492
+ top: 6px;
493
+ right: 8px;
494
+ display: block;
495
+ }
496
+
497
+ .sessionPanelToggle {
498
+ position: absolute;
499
+ top: 8px;
500
+ right: 8px;
501
+ display: flex;
502
+ }
503
+
504
+ .sessionPanelBackdrop {
505
+ position: absolute;
506
+ inset: 0;
507
+ display: block;
508
+ border: 0;
509
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 58%, transparent);
510
+ opacity: 0;
511
+ pointer-events: none;
512
+ transition: opacity var(--dees-transition-default) var(--dees-ease-standard);
513
+ }
514
+
515
+ .sessionPanelBackdrop.open {
516
+ opacity: 1;
517
+ pointer-events: auto;
518
+ }
519
+
520
+ @media (prefers-reduced-motion: reduce) {
521
+ .sessionPanel,
522
+ .sessionPanelBackdrop {
523
+ transition: none;
524
+ }
314
525
  }
315
526
  }
316
527
 
@@ -358,7 +569,7 @@ let DeesHarnessChat = (() => {
358
569
  flex: 0 0 auto;
359
570
  }
360
571
 
361
- .chatBody dees-harness-message-list {
572
+ .transcriptColumn dees-harness-message-list {
362
573
  flex: 1;
363
574
  min-height: 0;
364
575
  }
@@ -371,6 +582,36 @@ let DeesHarnessChat = (() => {
371
582
  position: relative;
372
583
  z-index: 1;
373
584
  }
585
+
586
+ .composerContextBar {
587
+ min-width: 0;
588
+ display: flex;
589
+ align-items: center;
590
+ gap: var(--dees-spacing-xs);
591
+ padding: 5px var(--dees-spacing-md);
592
+ background: var(--dees-color-bg-secondary);
593
+ color: var(--dees-color-text-muted);
594
+ font-size: var(--dees-font-caption2-size, 10px);
595
+ line-height: 1.3;
596
+ }
597
+
598
+ .composerContextBar dees-icon {
599
+ flex: 0 0 auto;
600
+ color: var(--dees-color-text-secondary);
601
+ }
602
+
603
+ .composerContextLabel {
604
+ flex: 0 0 auto;
605
+ }
606
+
607
+ .composerContextTitle {
608
+ min-width: 0;
609
+ overflow: hidden;
610
+ color: var(--dees-color-text-secondary);
611
+ font-weight: 600;
612
+ text-overflow: ellipsis;
613
+ white-space: nowrap;
614
+ }
374
615
  `,
375
616
  ];
376
617
  // ---------------------------------------------------------------- methods
@@ -389,6 +630,32 @@ let DeesHarnessChat = (() => {
389
630
  scrollToBottom(force = false) {
390
631
  this.listElement?.scrollToBottom(force);
391
632
  }
633
+ async connectedCallback() {
634
+ await super.connectedCallback();
635
+ await this.updateComplete;
636
+ if (!this.isConnected)
637
+ return;
638
+ this.syncSessionLayout(this.getBoundingClientRect().width);
639
+ this.sessionLayoutResizeObserver?.disconnect();
640
+ this.sessionLayoutResizeObserver = new ResizeObserver((entries) => {
641
+ const entry = entries[0];
642
+ if (entry)
643
+ this.syncSessionLayout(entry.contentRect.width);
644
+ });
645
+ this.sessionLayoutResizeObserver.observe(this);
646
+ }
647
+ async disconnectedCallback() {
648
+ this.sessionLayoutResizeObserver?.disconnect();
649
+ this.sessionLayoutResizeObserver = undefined;
650
+ await super.disconnectedCallback();
651
+ }
652
+ syncSessionLayout(widthArg) {
653
+ const narrow = widthArg <= 680;
654
+ if (narrow === this.narrowSessionLayout)
655
+ return;
656
+ this.narrowSessionLayout = narrow;
657
+ this.sessionSidebarOpen = false;
658
+ }
392
659
  get effectiveTodos() {
393
660
  if (this.todos.length)
394
661
  return this.todos;
@@ -404,6 +671,14 @@ let DeesHarnessChat = (() => {
404
671
  }
405
672
  return [];
406
673
  }
674
+ get hasSessionSidebar() {
675
+ if (!this.showSessionSidebar)
676
+ return false;
677
+ return ((this.showTodosPanel && this.effectiveTodos.length > 0)
678
+ || Object.values(this.sessionMetrics).some((value) => value !== undefined)
679
+ || this.scratchpad !== undefined
680
+ || this.sessionIntelligenceEnabled);
681
+ }
407
682
  get listElement() {
408
683
  const element = this.shadowRoot?.querySelector('dees-harness-message-list');
409
684
  return element instanceof DeesHarnessMessageList ? element : undefined;
@@ -412,25 +687,120 @@ let DeesHarnessChat = (() => {
412
687
  const element = this.shadowRoot?.querySelector('dees-harness-composer');
413
688
  return element instanceof DeesHarnessComposer ? element : undefined;
414
689
  }
690
+ toggleSessionSidebar = (__runInitializers(this, _toolRegistry_extraInitializers), () => {
691
+ if (!this.narrowSessionLayout) {
692
+ this.desktopSessionSidebarVisible = !this.desktopSessionSidebarVisible;
693
+ return;
694
+ }
695
+ if (this.sessionSidebarOpen) {
696
+ void this.closeSessionSidebar();
697
+ return;
698
+ }
699
+ void this.openSessionSidebar();
700
+ });
701
+ async openSessionSidebar() {
702
+ this.sessionSidebarOpen = true;
703
+ await this.updateComplete;
704
+ const panel = this.shadowRoot?.querySelector('.sessionPanel');
705
+ await new Promise((resolve) => requestAnimationFrame(() => resolve()));
706
+ panel?.focus();
707
+ }
708
+ async closeSessionSidebar() {
709
+ this.sessionSidebarOpen = false;
710
+ await this.updateComplete;
711
+ const toggleButton = this.shadowRoot?.querySelector(this.showToolbar ? '.toolbarSessionPanelToggle' : '.sessionPanelToggle');
712
+ toggleButton?.focus();
713
+ }
415
714
  // ----------------------------------------------------------------- render
416
715
  render() {
417
716
  return html `
418
717
  ${this.showToolbar ? this.renderToolbar() : ''}
419
718
  <div class="chatBody">
420
- <dees-harness-message-list
421
- .messages=${this.messages}
422
- .permissions=${this.permissions}
423
- .permissionsBusy=${this.disabled}
424
- .questions=${this.questions}
425
- .status=${this.status}
426
- .showRoles=${this.showRoles}
427
- .showTimestamps=${this.showTimestamps}
428
- .toolRegistry=${this.toolRegistry}
429
- ></dees-harness-message-list>
430
- ${this.showTodosPanel && this.effectiveTodos.length
719
+ <div class="transcriptColumn">
720
+ <dees-harness-message-list
721
+ .messages=${this.messages}
722
+ .permissions=${this.permissions}
723
+ .permissionsBusy=${this.disabled}
724
+ .questions=${this.questions}
725
+ .status=${this.status}
726
+ .showRoles=${this.showRoles}
727
+ .showTimestamps=${this.showTimestamps}
728
+ .toolRegistry=${this.toolRegistry}
729
+ ></dees-harness-message-list>
730
+ ${this.heading
431
731
  ? html `
432
- <aside class="todosPanel">
433
- <dees-harness-todos heading="Tasks" .todos=${this.effectiveTodos}></dees-harness-todos>
732
+ <div class="composerContextBar" title=${`Replying to ${this.heading}`}>
733
+ <dees-icon icon="lucide:MessageSquare" iconSize="11"></dees-icon>
734
+ <span class="composerContextLabel">Replying to</span>
735
+ <span class="composerContextTitle">${this.heading}</span>
736
+ </div>
737
+ `
738
+ : ''}
739
+ ${this.hasSessionSidebar && !this.showToolbar ? html `
740
+ <button
741
+ class="sessionPanelToggle"
742
+ type="button"
743
+ aria-label="Session details"
744
+ title="Session details"
745
+ aria-expanded=${String(this.sessionSidebarOpen)}
746
+ aria-controls="harness-session-panel"
747
+ @click=${this.toggleSessionSidebar}
748
+ >
749
+ <dees-icon icon="lucide:PanelRight" iconSize="16"></dees-icon>
750
+ </button>
751
+ ` : ''}
752
+ </div>
753
+ ${this.hasSessionSidebar
754
+ ? html `
755
+ <button
756
+ class=${`sessionPanelBackdrop ${this.sessionSidebarOpen ? 'open' : ''}`}
757
+ aria-label="Close session details"
758
+ aria-hidden=${String(!this.sessionSidebarOpen)}
759
+ ?inert=${!this.sessionSidebarOpen}
760
+ tabindex=${this.sessionSidebarOpen ? '0' : '-1'}
761
+ @click=${() => void this.closeSessionSidebar()}
762
+ ></button>
763
+ <aside
764
+ id="harness-session-panel"
765
+ class=${`todosPanel sessionPanel ${this.sessionSidebarOpen ? 'open' : ''} ${this.desktopSessionSidebarVisible ? '' : 'desktopHidden'}`}
766
+ aria-label="Session details"
767
+ aria-hidden=${String(this.narrowSessionLayout
768
+ ? !this.sessionSidebarOpen
769
+ : !this.desktopSessionSidebarVisible)}
770
+ ?inert=${this.narrowSessionLayout
771
+ ? !this.sessionSidebarOpen
772
+ : !this.desktopSessionSidebarVisible}
773
+ tabindex="-1"
774
+ @keydown=${(event) => {
775
+ if (event.key !== 'Escape' || !this.narrowSessionLayout)
776
+ return;
777
+ event.preventDefault();
778
+ event.stopPropagation();
779
+ void this.closeSessionSidebar();
780
+ }}
781
+ >
782
+ <dees-button
783
+ class="sessionPanelClose"
784
+ size="icon"
785
+ type="ghost"
786
+ icon="lucide:X"
787
+ text="Close session details"
788
+ title="Close session details"
789
+ @clicked=${() => void this.closeSessionSidebar()}
790
+ ></dees-button>
791
+ <dees-harness-session-sidebar
792
+ .todos=${this.effectiveTodos}
793
+ .showTasks=${this.showTodosPanel}
794
+ .metrics=${this.sessionMetrics}
795
+ .scratchpad=${this.scratchpad}
796
+ .scratchpadBusy=${this.scratchpadBusy}
797
+ .scratchpadError=${this.scratchpadError}
798
+ .intelligenceEnabled=${this.sessionIntelligenceEnabled}
799
+ .intelligenceExchanges=${this.intelligenceExchanges}
800
+ .intelligenceBusy=${this.intelligenceBusy}
801
+ .intelligenceError=${this.intelligenceError}
802
+ .disabled=${this.disabled}
803
+ ></dees-harness-session-sidebar>
434
804
  </aside>
435
805
  `
436
806
  : ''}
@@ -478,23 +848,30 @@ let DeesHarnessChat = (() => {
478
848
  </div>
479
849
  <div class="toolbarActions">
480
850
  <dees-harness-usage compact .usage=${this.usage}></dees-harness-usage>
481
- <dees-button size="sm" type="ghost" title="Conversations" @clicked=${() => this.emit('harness-open-sessions')}>
482
- <dees-icon icon="lucide:History" iconSize="14"></dees-icon>
483
- </dees-button>
484
- <dees-button size="sm" type="ghost" title="New conversation" @clicked=${() => this.emit('harness-new-session')}>
485
- <dees-icon icon="lucide:SquarePen" iconSize="14"></dees-icon>
486
- </dees-button>
851
+ ${this.hasSessionSidebar ? html `
852
+ <button
853
+ class="toolbarSessionPanelToggle"
854
+ type="button"
855
+ aria-label="Toggle session details"
856
+ title="Toggle session details"
857
+ aria-expanded=${String(this.narrowSessionLayout
858
+ ? this.sessionSidebarOpen
859
+ : this.desktopSessionSidebarVisible)}
860
+ aria-controls="harness-session-panel"
861
+ @click=${this.toggleSessionSidebar}
862
+ >
863
+ <dees-icon
864
+ icon=${this.narrowSessionLayout
865
+ ? (this.sessionSidebarOpen ? 'lucide:PanelRightClose' : 'lucide:PanelRightOpen')
866
+ : (this.desktopSessionSidebarVisible ? 'lucide:PanelRightClose' : 'lucide:PanelRightOpen')}
867
+ iconSize="16"
868
+ ></dees-icon>
869
+ </button>
870
+ ` : ''}
487
871
  </div>
488
872
  </div>
489
873
  `;
490
874
  }
491
- emit(name) {
492
- this.dispatchEvent(new CustomEvent(name, { detail: {}, bubbles: true, composed: true }));
493
- }
494
- constructor() {
495
- super(...arguments);
496
- __runInitializers(this, _toolRegistry_extraInitializers);
497
- }
498
875
  static {
499
876
  __runInitializers(_classThis, _classExtraInitializers);
500
877
  }
@@ -502,4 +879,4 @@ let DeesHarnessChat = (() => {
502
879
  return DeesHarnessChat = _classThis;
503
880
  })();
504
881
  export { DeesHarnessChat };
505
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNoYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1jaGF0L2RlZXMtaGFybmVzcy1jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsVUFBVSxHQUNYLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFXdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbkcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDeEYsT0FBTyw2Q0FBNkMsQ0FBQztBQUNyRCxPQUFPLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8saURBQWlELENBQUM7QUFDekQsT0FBTyw4Q0FBOEMsQ0FBQztBQVN0RDs7Ozs7OztHQU9HO0lBRVUsZUFBZTs0QkFEM0IsYUFBYSxDQUFDLG1CQUFtQixDQUFDOzs7O3NCQUNFLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0JBQW5CLFNBQVEsV0FBVzs7OztvQ0FJN0MsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3VDQUc5QixRQUFRLENBQUMsRUFBRSxTQUFT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
882
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNoYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1jaGF0L2RlZXMtaGFybmVzcy1jaGF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBY3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sNkNBQTZDLENBQUM7QUFDckQsT0FBTyxpRUFBaUUsQ0FBQztBQUN6RSxPQUFPLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8saURBQWlELENBQUM7QUFDekQsT0FBTyw4Q0FBOEMsQ0FBQztBQVN0RDs7Ozs7O0dBTUc7SUFFVSxlQUFlOzRCQUQzQixhQUFhLENBQUMsbUJBQW1CLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrQkFBbkIsU0FBUSxXQUFXOzs7O29DQUk3QyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7dUNBRzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztxQ0FJOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO2tDQUc5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7aUNBRzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztpQ0FROUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDOzBDQUc5QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7OENBRzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQzswQ0FHM0IsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3NDQUc5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7MENBRzlCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQzsyQ0FHM0IsUUFBUSxFQUFFO3NEQUdWLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztpREFHM0IsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDOzRDQUc5QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7NkNBRzNCLFFBQVEsRUFBRTs4Q0FHVixLQUFLLEVBQUU7d0RBR1AsS0FBSyxFQUFFOytDQUdQLEtBQUssRUFBRTttQ0FLUCxRQUFRLEVBQUU7c0NBR1YsUUFBUSxFQUFFO3VDQUdWLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztxQ0FHM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDOzBDQUczQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7b0NBRzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztnQ0FHM0IsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3VDQUkzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7eUNBRzFCLFFBQVEsRUFBRTt1Q0FHVixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7aUNBRzlCLFFBQVEsRUFBRTt3Q0FHVixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7MkNBRzlCLFFBQVEsRUFBRTt5Q0FHVixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0NBSTlCLFFBQVEsRUFBRTt1Q0FHVixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7d0NBRzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQWxIL0IsNktBQVMsUUFBUSw2QkFBUixRQUFRLDJGQUF5QjtZQUcxQyxzTEFBUyxXQUFXLDZCQUFYLFdBQVcsaUdBQW1DO1lBSXZELGdMQUFTLFNBQVMsNkJBQVQsU0FBUyw2RkFBaUM7WUFHbkQsdUtBQVMsTUFBTSw2QkFBTixNQUFNLHVGQUFvQztZQUduRCxvS0FBUyxLQUFLLDZCQUFMLEtBQUsscUZBQXFCO1lBUW5DLG9LQUFTLEtBQUssNkJBQUwsS0FBSyxxRkFBMEI7WUFHeEMsK0xBQVMsY0FBYyw2QkFBZCxjQUFjLHVHQUFpQjtZQUd4QywyTUFBUyxrQkFBa0IsNkJBQWxCLGtCQUFrQiwrR0FBaUI7WUFHNUMsK0xBQVMsY0FBYyw2QkFBZCxjQUFjLHVHQUE4QjtZQUdyRCxtTEFBUyxVQUFVLDZCQUFWLFVBQVUsK0ZBQTZDO1lBR2hFLCtMQUFTLGNBQWMsNkJBQWQsY0FBYyx1R0FBa0I7WUFHekMsa01BQVMsZUFBZSw2QkFBZixlQUFlLHlHQUFjO1lBR3RDLG1PQUFTLDBCQUEwQiw2QkFBMUIsMEJBQTBCLCtIQUFrQjtZQUdyRCxvTkFBUyxxQkFBcUIsNkJBQXJCLHFCQUFxQixxSEFBc0M7WUFHcEUscU1BQVMsZ0JBQWdCLDZCQUFoQixnQkFBZ0IsMkdBQWtCO1lBRzNDLHdNQUFTLGlCQUFpQiw2QkFBakIsaUJBQWlCLDZHQUFjO1lBR3hDLDJNQUFpQixrQkFBa0IsNkJBQWxCLGtCQUFrQiwrR0FBa0I7WUFHckQseU9BQWlCLDRCQUE0Qiw2QkFBNUIsNEJBQTRCLG1JQUFpQjtZQUc5RCw4TUFBaUIsbUJBQW1CLDZCQUFuQixtQkFBbUIsaUhBQWtCO1lBS3RELDBLQUFTLE9BQU8sNkJBQVAsT0FBTyx5RkFBYztZQUc5QixtTEFBUyxVQUFVLDZCQUFWLFVBQVUsK0ZBQWM7WUFHakMsc0xBQVMsV0FBVyw2QkFBWCxXQUFXLGlHQUFpQjtZQUdyQyxnTEFBUyxTQUFTLDZCQUFULFNBQVMsNkZBQWlCO1lBR25DLCtMQUFTLGNBQWMsNkJBQWQsY0FBYyx1R0FBaUI7WUFHeEMsNktBQVMsUUFBUSw2QkFBUixRQUFRLDJGQUFrQjtZQUduQyxpS0FBUyxJQUFJLDZCQUFKLElBQUksbUZBQWtCO1lBSS9CLHNMQUFTLFdBQVcsNkJBQVgsV0FBVyxpR0FBYTtZQUdqQyw0TEFBUyxhQUFhLDZCQUFiLGFBQWEscUdBQWM7WUFHcEMsc0xBQVMsV0FBVyw2QkFBWCxXQUFXLGlHQUE0QjtZQUdoRCxvS0FBUyxLQUFLLDZCQUFMLEtBQUsscUZBQWM7WUFHNUIseUxBQVMsWUFBWSw2QkFBWixZQUFZLG1HQUFnQjtZQUdyQyxrTUFBUyxlQUFlLDZCQUFmLGVBQWUseUdBQWM7WUFHdEMsNExBQVMsYUFBYSw2QkFBYixhQUFhLHFHQUFnQjtZQUl0QyxpS0FBUyxJQUFJLDZCQUFKLElBQUksbUZBQWM7WUFHM0Isc0xBQVMsV0FBVyw2QkFBWCxXQUFXLGlHQUFnQjtZQUdwQyx5TEFBUyxZQUFZLDZCQUFaLFlBQVksbUdBQTREO1lBeEhuRiw2S0Fpb0JDOzs7O1FBaG9CUSxNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUN2QixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFHMUMsNkVBQXVDLEVBQUUsRUFBQztRQUExQyxJQUFTLFFBQVEsOENBQXlCO1FBQTFDLElBQVMsUUFBUSxvREFBeUI7UUFHMUMsMElBQW9ELEVBQUUsR0FBQztRQUF2RCxJQUFTLFdBQVcsaURBQW1DO1FBQXZELElBQVMsV0FBVyx1REFBbUM7UUFJdkQseUlBQWdELEVBQUUsR0FBQztRQUZuRCw0RUFBNEU7UUFFNUUsSUFBUyxTQUFTLCtDQUFpQztRQUFuRCxJQUFTLFNBQVMscURBQWlDO1FBR25ELGlJQUFrQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBQztRQUFuRCxJQUFTLE1BQU0sNENBQW9DO1FBQW5ELElBQVMsTUFBTSxrREFBb0M7UUFHbkQsNEhBQWdDLEVBQUUsR0FBQztRQUFuQyxJQUFTLEtBQUssMkNBQXFCO1FBQW5DLElBQVMsS0FBSyxpREFBcUI7UUFRbkMsMkhBQXFDLEVBQUUsR0FBQztRQU54Qzs7OztXQUlHO1FBRUgsSUFBUyxLQUFLLDJDQUEwQjtRQUF4QyxJQUFTLEtBQUssaURBQTBCO1FBR3hDLDZJQUFtQyxJQUFJLEdBQUM7UUFBeEMsSUFBUyxjQUFjLG9EQUFpQjtRQUF4QyxJQUFTLGNBQWMsMERBQWlCO1FBR3hDLDhKQUF1QyxJQUFJLEdBQUM7UUFBNUMsSUFBUyxrQkFBa0Isd0RBQWlCO1FBQTVDLElBQVMsa0JBQWtCLDhEQUFpQjtRQUc1QywwSkFBa0QsRUFBRSxHQUFDO1FBQXJELElBQVMsY0FBYyxvREFBOEI7UUFBckQsSUFBUyxjQUFjLDBEQUE4QjtRQUdyRCw4SUFBc0QsU0FBUyxHQUFDO1FBQWhFLElBQVMsVUFBVSxnREFBNkM7UUFBaEUsSUFBUyxVQUFVLHNEQUE2QztRQUdoRSxrSkFBbUMsS0FBSyxHQUFDO1FBQXpDLElBQVMsY0FBYyxvREFBa0I7UUFBekMsSUFBUyxjQUFjLDBEQUFrQjtRQUd6Qyx3SkFBbUMsRUFBRSxHQUFDO1FBQXRDLElBQVMsZUFBZSxxREFBYztRQUF0QyxJQUFTLGVBQWUsMkRBQWM7UUFHdEMsK0tBQStDLEtBQUssR0FBQztRQUFyRCxJQUFTLDBCQUEwQixnRUFBa0I7UUFBckQsSUFBUywwQkFBMEIsc0VBQWtCO1FBR3JELGdMQUFpRSxFQUFFLEdBQUM7UUFBcEUsSUFBUyxxQkFBcUIsMkRBQXNDO1FBQXBFLElBQVMscUJBQXFCLGlFQUFzQztRQUdwRSxpS0FBcUMsS0FBSyxHQUFDO1FBQTNDLElBQVMsZ0JBQWdCLHNEQUFrQjtRQUEzQyxJQUFTLGdCQUFnQiw0REFBa0I7UUFHM0MsOEpBQXFDLEVBQUUsR0FBQztRQUF4QyxJQUFTLGlCQUFpQix1REFBYztRQUF4QyxJQUFTLGlCQUFpQiw2REFBYztRQUd4QyxpS0FBK0MsS0FBSyxHQUFDO1FBQXJELElBQWlCLGtCQUFrQix3REFBa0I7UUFBckQsSUFBaUIsa0JBQWtCLDhEQUFrQjtRQUdyRCxzTEFBeUQsSUFBSSxHQUFDO1FBQTlELElBQWlCLDRCQUE0QixrRUFBaUI7UUFBOUQsSUFBaUIsNEJBQTRCLHdFQUFpQjtRQUc5RCw4S0FBZ0QsS0FBSyxHQUFDO1FBQXRELElBQWlCLG1CQUFtQix5REFBa0I7UUFBdEQsSUFBaUIsbUJBQW1CLCtEQUFrQjtRQUU5QywyQkFBMkIsbUVBQTZCO1FBR2hFLDJFQUEyQixFQUFFLEVBQUM7UUFBOUIsSUFBUyxPQUFPLDZDQUFjO1FBQTlCLElBQVMsT0FBTyxtREFBYztRQUc5Qix1SUFBOEIsRUFBRSxHQUFDO1FBQWpDLElBQVMsVUFBVSxnREFBYztRQUFqQyxJQUFTLFVBQVUsc0RBQWM7UUFHakMsNElBQWdDLElBQUksR0FBQztRQUFyQyxJQUFTLFdBQVcsaURBQWlCO1FBQXJDLElBQVMsV0FBVyx1REFBaUI7UUFHckMseUlBQThCLElBQUksR0FBQztRQUFuQyxJQUFTLFNBQVMsK0NBQWlCO1FBQW5DLElBQVMsU0FBUyxxREFBaUI7UUFHbkMsaUpBQW1DLElBQUksR0FBQztRQUF4QyxJQUFTLGNBQWMsb0RBQWlCO1FBQXhDLElBQVMsY0FBYywwREFBaUI7UUFHeEMsMElBQTZCLEtBQUssR0FBQztRQUFuQyxJQUFTLFFBQVEsOENBQWtCO1FBQW5DLElBQVMsUUFBUSxvREFBa0I7UUFHbkMsNEhBQXlCLEtBQUssR0FBQztRQUEvQixJQUFTLElBQUksMENBQWtCO1FBQS9CLElBQVMsSUFBSSxnREFBa0I7UUFJL0Isc0lBQStCLENBQUMsR0FBQztRQUZqQywwRUFBMEU7UUFFMUUsSUFBUyxXQUFXLGlEQUFhO1FBQWpDLElBQVMsV0FBVyx1REFBYTtRQUdqQyxpSkFBaUMsRUFBRSxHQUFDO1FBQXBDLElBQVMsYUFBYSxtREFBYztRQUFwQyxJQUFTLGFBQWEseURBQWM7UUFHcEMsK0lBQTZDLEVBQUUsR0FBQztRQUFoRCxJQUFTLFdBQVcsaURBQTRCO1FBQWhELElBQVMsV0FBVyx1REFBNEI7UUFHaEQsaUlBQXlCLEVBQUUsR0FBQztRQUE1QixJQUFTLEtBQUssMkNBQWM7UUFBNUIsSUFBUyxLQUFLLGlEQUFjO1FBRzVCLHlJQUFrQyxFQUFFLEdBQUM7UUFBckMsSUFBUyxZQUFZLGtEQUFnQjtRQUFyQyxJQUFTLFlBQVksd0RBQWdCO1FBR3JDLHNKQUFtQyxFQUFFLEdBQUM7UUFBdEMsSUFBUyxlQUFlLHFEQUFjO1FBQXRDLElBQVMsZUFBZSwyREFBYztRQUd0QyxxSkFBbUMsRUFBRSxHQUFDO1FBQXRDLElBQVMsYUFBYSxtREFBZ0I7UUFBdEMsSUFBUyxhQUFhLHlEQUFnQjtRQUl0QyxpSUFBd0IsRUFBRSxHQUFDO1FBRjNCLHFFQUFxRTtRQUVyRSxJQUFTLElBQUksMENBQWM7UUFBM0IsSUFBUyxJQUFJLGdEQUFjO1FBRzNCLHNJQUFpQyxFQUFFLEdBQUM7UUFBcEMsSUFBUyxXQUFXLGlEQUFnQjtRQUFwQyxJQUFTLFdBQVcsdURBQWdCO1FBR3BDLCtJQUFpRCx1QkFBdUIsQ0FBQyxPQUFPLEdBQUM7UUFBakYsSUFBUyxZQUFZLGtEQUE0RDtRQUFqRixJQUFTLFlBQVksd0RBQTREO1FBRTFFLE1BQU0sQ0FBQyxNQUFNLEdBQUc7WUFDckIsa0JBQWtCO1lBQ2xCLFVBQVUsQ0FBQyxhQUFhO1lBQ3hCLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FxUEY7U0FDRixDQUFDO1FBRUYsMkVBQTJFO1FBRTNFLDJEQUEyRDtRQUNwRCxVQUFVLENBQUMsS0FBMEI7WUFDMUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVNLEtBQUssQ0FBQyxhQUFhO1lBQ3hCLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMxQixNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDNUMsQ0FBQztRQUVNLGFBQWE7WUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBRU0sY0FBYyxDQUFDLEtBQUssR0FBRyxLQUFLO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFTSxLQUFLLENBQUMsaUJBQWlCO1lBQzVCLE1BQU0sS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztnQkFBRSxPQUFPO1lBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2hFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsSUFBSSxLQUFLO29CQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRU0sS0FBSyxDQUFDLG9CQUFvQjtZQUMvQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLDJCQUEyQixHQUFHLFNBQVMsQ0FBQztZQUM3QyxNQUFNLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3JDLENBQUM7UUFFTyxpQkFBaUIsQ0FBQyxRQUFnQjtZQUN4QyxNQUFNLE1BQU0sR0FBRyxRQUFRLElBQUksR0FBRyxDQUFDO1lBQy9CLElBQUksTUFBTSxLQUFLLElBQUksQ0FBQyxtQkFBbUI7Z0JBQUUsT0FBTztZQUNoRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQVcsY0FBYztZQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekMsb0VBQW9FO1lBQ3BFLHFEQUFxRDtZQUNyRCxLQUFLLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQy9ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsSUFBSTtvQkFBRSxTQUFTO2dCQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNO29CQUFFLFNBQVM7Z0JBQzlELE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxJQUFXLGlCQUFpQjtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUMzQyxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzttQkFDcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO21CQUN2RSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVM7bUJBQzdCLElBQUksQ0FBQywwQkFBMEIsQ0FDbkMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFZLFdBQVc7WUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUM1RSxPQUFPLE9BQU8sWUFBWSxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDekUsQ0FBQztRQUVELElBQVksZUFBZTtZQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sT0FBTyxZQUFZLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0RSxDQUFDO1FBRWdCLG9CQUFvQiw4REFBRyxHQUFTLEVBQUU7WUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUM7Z0JBQ3ZFLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDNUIsS0FBSyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDaEMsT0FBTztZQUNULENBQUM7WUFDRCxLQUFLLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2pDLENBQUMsRUFBQztRQUVNLEtBQUssQ0FBQyxrQkFBa0I7WUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUMvQixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQWMsZUFBZSxDQUFDLENBQUM7WUFDM0UsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBRU8sS0FBSyxDQUFDLG1CQUFtQjtZQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMxQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUN4RSxDQUFDO1lBQ0YsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFFRCwyRUFBMkU7UUFFcEUsTUFBTTtZQUNYLE9BQU8sSUFBSSxDQUFBO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFOzs7O3dCQUk1QixJQUFJLENBQUMsUUFBUTsyQkFDVixJQUFJLENBQUMsV0FBVzsrQkFDWixJQUFJLENBQUMsUUFBUTt5QkFDbkIsSUFBSSxDQUFDLFNBQVM7c0JBQ2pCLElBQUksQ0FBQyxNQUFNO3lCQUNSLElBQUksQ0FBQyxTQUFTOzhCQUNULElBQUksQ0FBQyxjQUFjOzRCQUNyQixJQUFJLENBQUMsWUFBWTs7WUFFakMsSUFBSSxDQUFDLE9BQU87Z0JBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQTt3REFDc0MsZUFBZSxJQUFJLENBQUMsT0FBTyxFQUFFOzs7dURBRzlCLElBQUksQ0FBQyxPQUFPOztlQUVwRDtnQkFDSCxDQUFDLENBQUMsRUFBRTtZQUNKLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTs7Ozs7OzhCQU1oQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDOzt1QkFFdEMsSUFBSSxDQUFDLG9CQUFvQjs7OztXQUlyQyxDQUFDLENBQUMsQ0FBQyxFQUFFOztVQUVOLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUE7O3dCQUVRLHdCQUF3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFOzs4QkFFekQsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO3lCQUNyQyxDQUFDLElBQUksQ0FBQyxrQkFBa0I7MkJBQ3RCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJO3lCQUN0QyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxtQkFBbUIsRUFBRTs7Ozt3QkFJdEMsMkJBQTJCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRTs7OEJBRXhILE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CO29CQUMzQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCO29CQUMxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUM7eUJBQzlCLElBQUksQ0FBQyxtQkFBbUI7b0JBQy9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0I7b0JBQzFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEI7OzJCQUUzQixDQUFDLEtBQW9CLEVBQUUsRUFBRTtvQkFDbEMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUI7d0JBQUUsT0FBTztvQkFDaEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3hCLEtBQUssSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQ2xDLENBQUM7Ozs7Ozs7Ozs2QkFTWSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxtQkFBbUIsRUFBRTs7OzJCQUd2QyxJQUFJLENBQUMsY0FBYzsrQkFDZixJQUFJLENBQUMsY0FBYzs2QkFDckIsSUFBSSxDQUFDLGNBQWM7Z0NBQ2hCLElBQUksQ0FBQyxVQUFVO29DQUNYLElBQUksQ0FBQyxjQUFjO3FDQUNsQixJQUFJLENBQUMsZUFBZTt5Q0FDaEIsSUFBSSxDQUFDLDBCQUEwQjsyQ0FDN0IsSUFBSSxDQUFDLHFCQUFxQjtzQ0FDL0IsSUFBSSxDQUFDLGdCQUFnQjt1Q0FDcEIsSUFBSSxDQUFDLGlCQUFpQjs4QkFDL0IsSUFBSSxDQUFDLFFBQVE7OzthQUc5QjtnQkFDSCxDQUFDLENBQUMsRUFBRTs7Ozs7bUJBS0ssSUFBSSxDQUFDLGFBQWE7eUJBQ1osSUFBSSxDQUFDLFdBQVc7c0JBQ25CLElBQUksQ0FBQyxRQUFRO2tCQUNqQixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU07eUJBQ2pDLElBQUksQ0FBQyxXQUFXO21CQUN0QixJQUFJLENBQUMsS0FBSzswQkFDSCxJQUFJLENBQUMsWUFBWTs2QkFDZCxJQUFJLENBQUMsZUFBZTsyQkFDdEIsSUFBSSxDQUFDLGFBQWE7a0JBQzNCLElBQUksQ0FBQyxJQUFJO3lCQUNGLElBQUksQ0FBQyxXQUFXOzJCQUNkLENBQUMsS0FBcUMsRUFBRSxFQUFFO2dCQUN6RCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNqRCxDQUFDO3dDQUM2QixDQUFDLEtBQXlELEVBQUUsRUFBRTtnQkFDMUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7WUFDckQsQ0FBQztrQ0FDdUIsQ0FBQyxLQUFnRSxFQUFFLEVBQUU7Z0JBQzNGLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLO29CQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ3pELElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxlQUFlO29CQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7WUFDekYsQ0FBQztpQ0FDc0IsQ0FBQyxLQUFxQyxFQUFFLEVBQUU7Z0JBQy9ELElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJO29CQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDeEQsQ0FBQzs7O0tBR04sQ0FBQztRQUNKLENBQUM7UUFFTyxhQUFhO1lBQ25CLE9BQU8sSUFBSSxDQUFBOzs7cUNBR3NCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTztZQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsK0JBQStCLElBQUksQ0FBQyxVQUFVLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTs7OytDQUc5QyxJQUFJLENBQUMsS0FBSztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTs7Ozs7OzhCQU1YLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CO2dCQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtnQkFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQzs7dUJBRTdCLElBQUksQ0FBQyxvQkFBb0I7Ozt1QkFHekIsSUFBSSxDQUFDLG1CQUFtQjtnQkFDN0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7Z0JBQ2hGLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDOzs7O1dBSWpHLENBQUMsQ0FBQyxDQUFDLEVBQUU7OztLQUdYLENBQUM7UUFDSixDQUFDOztZQWhvQlUsdURBQWU7Ozs7O1NBQWYsZUFBZSJ9