@operato/menu 10.9.0 → 10.10.1

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/CHANGELOG.md CHANGED
@@ -3,6 +3,23 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ### [10.10.1](https://github.com/hatiolab/operato/compare/v10.10.0...v10.10.1) (2026-09-06)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * **menu:** a zero count keeps its place and loses the signal ([74b976a](https://github.com/hatiolab/operato/commit/74b976a19cc9782246d2c4e0e9abf41d5603d110))
12
+
13
+
14
+
15
+ ## [10.10.0](https://github.com/hatiolab/operato/compare/v10.9.0...v10.10.0) (2026-09-06)
16
+
17
+ **Note:** Version bump only for package @operato/menu
18
+
19
+
20
+
21
+
22
+
6
23
  ## [10.9.0](https://github.com/hatiolab/operato/compare/v10.8.1...v10.9.0) (2026-09-05)
7
24
 
8
25
  **Note:** Version bump only for package @operato/menu
@@ -407,6 +407,23 @@ export const MenuPortraitStyles = css `
407
407
  display: none;
408
408
  }
409
409
 
410
+ /*
411
+ * Zero keeps its place and loses the signal.
412
+ *
413
+ * The filled accent pill means "there is something here for you". 작성 중 0 wore exactly the same
414
+ * one as 할 일 9 — rgb(12,122,76), 28x17 — so a column of them read as four things waiting.
415
+ *
416
+ * Hiding zero is not the answer: an empty slot cannot be told apart from a count that has not
417
+ * arrived yet (see the rule above). So the number stays and the colour goes quiet. Contrast is
418
+ * still readable at 10.5px because both tokens come from the same surface pair the menu already
419
+ * uses for inactive rows.
420
+ */
421
+ :host a [badge][zero] {
422
+ background-color: var(--menu-rail-badge-zero, var(--ui-line-soft, #e6eaed));
423
+ color: var(--menu-rail-badge-zero-ink, var(--ui-faint, #8a959c));
424
+ font-weight: 500;
425
+ }
426
+
410
427
  /* ── 시스템 자리 ───────────────────────────────────────────────────── */
411
428
  /*
412
429
  * 빈 자리로 벌린다 — 시스템 항목이 바닥에 붙는다.
@@ -1 +1 @@
1
- {"version":3,"file":"menu-portrait-styles.js","sourceRoot":"","sources":["../../src/menu-portrait-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAijBpC,CAAA","sourcesContent":["import { css } from 'lit'\n\n/**\n * 왼쪽 메뉴의 모양 — **한 벌이다.**\n *\n * ## 왜 한 벌인가\n *\n * 한때 둘이었다. 기존 모양(줄마다 밑줄 · 왼쪽 여백 16px · hover 에 굵기 변화)과 레일 모양\n * (라운드 알약 · 밑줄 없음 · 접을 수 있음). 같은 메뉴가 설정 하나로 딴 물건처럼 보였고, 무엇을\n * 어느 쪽에 두어야 하는지를 매번 판단해야 해서 **일곱 번 조용히 깨졌다.**\n *\n * 기존 모양은 접을 수도 없었다 — 줄마다 폭 전체를 쓰는 밑줄이 있고 왼쪽 여백이 16px 이라\n * 56px 에서 무너진다. 그래서 레일 펼친 모양을 기준으로 통일했다.\n *\n * ## 안에 세 변형이 있다\n *\n * ```\n * (기본) 늘 보이는 모양. 서랍도 이것이다\n * [collapsed] 접힌 레일 — 아이콘만. 하위는 팝업으로\n * .railpop 팝업 — 접힌 레일에서 하위로 가는 길, 그리고 시스템 항목의 자리\n * ```\n *\n * 무엇이 어느 변형에 걸리나는 `menu-mode.ts` 가 답한다. 여기서 그때그때 판단하지 않는다.\n *\n * ## 값의 출처\n *\n * `operato-twin` 의 레일(`twin-nav-rail`)이 쓰던 값이다. 값을 베끼지 않고 조정 지점으로 노출해\n * 앱이 자기 테마에 맞출 수 있게 둔다.\n */\nexport const MenuPortraitStyles = css`\n :host {\n /*\n * ── 조정 지점 ─────────────────────────────────────────────────────────\n * 폭은 여기 없다 — ox-menu-part 가 정한다. 셸이 크기를 재는 요소도 그것이고, 리사이즈\n * 손잡이가 인라인 폭을 쓰는 요소도 그것이다. 여기서 또 정하면 둘이 싸운다.\n * 폭 토큰(--menu-rail-width · --menu-rail-width-collapsed)은 앱이 위에서 준다.\n */\n --menu-rail-radius: 8px;\n --menu-rail-gap: 11px;\n --menu-rail-font-size: 13px;\n --menu-rail-font-weight: 560;\n --menu-rail-icon-size: 19px;\n /*\n * ── 줄의 세로 여백 ────────────────────────────────────────────────────\n * 줄 높이는 아이콘(20px)에 이 값의 두 배를 더한 것이다. 8px 이면 36px 줄이다.\n *\n * 항목이 스물 남짓인 레일은 그 높이로 화면을 넘긴다. 그때는 줄여 앉힌다 — 다 보이는 것이\n * 넉넉한 것보다 낫다. 다만 **줄이는 것은 앱이 고르는 값**이고, 화면 높이에 따라 저절로\n * 눌리게 두지 않는다.\n *\n * 저절로 눌리게 두면 창 높이마다 줄 높이가 달라진다. 실제로 그런 레일이 있었다 —\n * 창 1100 에서 33px · 800 에서 28px · 620 에서 16px 이 되어 아이콘이 뭉개졌다.\n *\n * 기본은 6.5px — 33px 줄이다. 두 제품이 같은 값을 골랐고, 앱마다 적어 두면 한쪽만 고쳐진다.\n */\n --menu-rail-row-pad: 6.5px;\n --menu-rail-surface: var(--md-sys-color-surface, #fff);\n --menu-rail-ink: var(--md-sys-color-on-surface, #17242c);\n --menu-rail-muted: var(--md-sys-color-on-surface-variant, #57676f);\n --menu-rail-faint: var(--md-sys-color-outline, #8a959c);\n --menu-rail-hover: var(--md-sys-color-surface-container-low, rgba(0, 0, 0, 0.04));\n --menu-rail-accent: var(--md-sys-color-primary, #0e8a56);\n --menu-rail-accent-wash: var(--md-sys-color-primary-container, rgba(14, 138, 86, 0.1));\n\n /*\n * ── 세로 단이다 ───────────────────────────────────────────────────────\n * 이 셋이 없으면 gap 이 안 먹고, **바닥에 붙이는 빈 자리가 자라지 않아** 시스템 줄이 목록\n * 바로 뒤에 붙는다. 두 스타일 파일을 합칠 때 이것을 잃어 그 증상이 났다.\n */\n display: flex;\n flex-direction: column;\n height: 100%;\n\n box-sizing: border-box;\n width: 100%;\n background-color: var(--menu-rail-surface);\n padding: 10px 8px;\n gap: 2px;\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n /*\n * 하위가 펼쳐져 있으면 최상위의 합계를 감춘다.\n *\n * 그 아래에 낱개 건수가 다 보이므로 같은 말을 두 번 하는 것이고, 합계와 낱개가 나란히 있으면\n * 「합계가 저 셋과 다른 무엇인가」를 한 번 생각하게 만든다.\n *\n * 최상위에만 건다 — 하위 항목도 지금 페이지이면 active 를 단다. 그래서 [top] 으로 가른다.\n *\n * 접혔을 때는 감추지 않는다 — 낱개가 안 보이므로 합계가 유일한 신호다.\n */\n :host(:not([collapsed])) li[top][active] > a [badge] {\n display: none;\n }\n\n :host ul {\n display: flex;\n flex-direction: column;\n gap: 2px;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n /* 묶음 이름 — 접히면 자리가 없다. */\n :host [group-label] {\n padding: 10px 10px 4px;\n border: none;\n font-family: var(--theme-font-mono, monospace);\n font-size: 9.5px;\n font-weight: 400;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--menu-rail-faint);\n }\n\n /* 접히면 자리가 없다 — 레일 안쪽만. 팝업 안의 묶음 이름은 그대로 보인다. */\n :host([collapsed]) > [group-label],\n :host([collapsed]) > ul [group-label] {\n display: none;\n }\n\n :host a {\n display: flex;\n align-items: center;\n gap: var(--menu-rail-gap);\n padding: var(--menu-rail-row-pad) 11px;\n /*\n * **줄어들지 않는다.** 목록이 화면보다 길면 겉 상자가 구르면 되고, 줄이 눌릴 일이 아니다.\n * 이것이 없으면 창 높이에 따라 줄 높이가 달라진다(위 --menu-rail-row-pad 머리말).\n */\n flex: none;\n border: none;\n border-radius: var(--menu-rail-radius);\n font: var(--menu-rail-font-weight) var(--menu-rail-font-size) var(--theme-font, inherit);\n color: var(--menu-rail-muted);\n text-decoration: none;\n text-transform: none;\n white-space: nowrap;\n overflow: hidden;\n }\n\n /*\n * hover 에서 굵기를 바꾸지 않는다. 기존 모양은 a:hover { font-weight: bold } 여서 마우스가\n * 지날 때마다 글자 폭이 늘어 줄이 흔들렸다. 색만 바꾼다.\n */\n :host a:hover {\n background-color: var(--menu-rail-hover);\n color: var(--menu-rail-ink);\n font-weight: var(--menu-rail-font-weight);\n }\n\n :host a md-icon {\n --md-icon-size: var(--menu-rail-icon-size);\n\n flex: none;\n width: 20px;\n min-width: 20px;\n height: 20px;\n margin: 0;\n opacity: 1;\n overflow: hidden;\n color: var(--menu-rail-faint);\n }\n\n /*\n * ── 지금 페이지 ─────────────────────────────────────────────────────────\n * 어느 층이든 **지금 보고 있는 그 줄**에만 강조를 준다. 층으로 가르지 않는다 — 최상위가 그\n * 자리일 수도 있고(하위가 없는 묶음) 하위가 그 자리일 수도 있다.\n */\n :host li[current] > a {\n border-left: none;\n background-color: var(--menu-rail-accent-wash);\n color: var(--menu-rail-ink);\n font-weight: 700;\n }\n\n :host li[current] > a md-icon {\n color: var(--menu-rail-accent);\n }\n\n /*\n * ── 펼쳐진 최상위 ───────────────────────────────────────────────────────\n * **강조하지 않는다.** 최상위의 active 는 「하위가 펼쳐져 있다」는 여닫힘이고, 지금 페이지는\n * 그 안의 한 줄이다. 둘에 같은 강조를 주면 두 줄이 나란히 강조되어 어느 쪽이 지금 자리인지\n * 흐려진다.\n *\n * 그래도 옅게는 둔다 — 접힌 화살표와 함께 「여기가 열려 있다」를 말한다.\n */\n :host(:not([collapsed])) li[top][active]:not([current]) > a {\n background-color: transparent;\n color: var(--menu-rail-ink);\n }\n\n :host(:not([collapsed])) li[top][active]:not([current]) > a md-icon {\n color: var(--menu-rail-ink);\n }\n\n /*\n * ── 접히면 최상위가 대신 말한다 ─────────────────────────────────────────\n * 하위가 감춰지므로 지금 자리를 말할 줄이 최상위뿐이다. 그때는 최상위가 강조를 받는다.\n */\n :host([collapsed]) li[top][active] > a {\n background-color: var(--menu-rail-accent-wash);\n color: var(--menu-rail-ink);\n }\n\n :host([collapsed]) li[top][active] > a md-icon {\n color: var(--menu-rail-accent);\n }\n\n /*\n * ── 팝업을 연 항목 ─────────────────────────────────────────────────────\n * active(지금 페이지)와 **다른 뜻**이라 다른 표시를 준다. 접힌 레일에서 강조된 아이콘은\n * 「지금 페이지」만 뜻하므로, 이 표시가 없으면 어느 항목의 팝업인지 알 수 없다.\n *\n * 강조색을 쓰지 않는다 — 그 색은 지금 페이지의 것이다. 대신 글자·아이콘을 짙게 하고 팝업과\n * 같은 면색으로 칠해 팝업의 연장으로 읽히게 한다.\n */\n :host li[popped] > a {\n background-color: var(--menu-rail-hover);\n color: var(--menu-rail-ink);\n }\n\n :host li[popped] > a md-icon {\n color: var(--menu-rail-ink);\n }\n\n /* 지금 페이지이면서 팝업까지 연 경우 — 강조색이 이긴다(그것이 더 드문 사실이다). */\n :host li[current][popped] > a,\n :host([collapsed]) li[top][active][popped] > a {\n background-color: var(--menu-rail-accent-wash);\n }\n\n :host li[current][popped] > a md-icon,\n :host([collapsed]) li[top][active][popped] > a md-icon {\n color: var(--menu-rail-accent);\n }\n\n /*\n * ── 하위가 있다는 표시 ──────────────────────────────────────────────────\n * **이 화살표가 곧 「나는 묶음이다」이다.** 없으면 최상위 줄만 보고 하위를 가졌는지, 자기가\n * 끝인지 알 수 없다 — 눌러 봐야 안다.\n *\n * 글자는 md-icon 의 내용이 아니라 여기서 준다. 두 스타일 파일을 합칠 때 이 ::before 를\n * 잃었고, 그래서 <md-icon submenu-button> 이 **빈 채로 남아 화살표가 사라졌다.**\n * 아이콘 이름을 컴포넌트로 옮기지 않는 이유는, 접힘·팝업마다 다르게 두는 것이 이 파일의\n * 일이기 때문이다.\n */\n :host a [submenu-button] {\n margin-left: auto;\n --md-icon-size: 16px;\n width: 16px;\n min-width: 16px;\n color: var(--menu-rail-faint);\n transition: transform 0.2s ease;\n }\n\n :host a [submenu-button]::before {\n content: 'chevron_right';\n }\n\n /* 펼쳐지면 아래를 가리킨다 — 화살표 하나로 여닫힘까지 말한다. */\n :host li[active] > a [submenu-button] {\n transform: rotate(90deg);\n color: var(--menu-rail-ink);\n }\n\n /* 접히면 하위가 팝업으로 뜬다. 56px 안에 화살표를 둘 자리도 없다. */\n :host([collapsed]) > ul li a [submenu-button] {\n display: none;\n }\n\n :host a > span {\n flex: 1;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n /*\n * ── 접으면 이름을 감춘다 — **레일 안쪽만** ─────────────────────────────\n * 팝업은 같은 shadow root 안의 **형제**다(.railpop). 그래서 li 로만 좁히면 팝업 줄도\n * 함께 걸려 **아이콘만 남는다** — 접힌 레일에서 팝업은 이름을 읽으러 여는 자리인데.\n *\n * > ul 로 좁힌다. 레일의 목록과 시스템 목록은 host 의 직계 자식이고, 팝업의 목록은\n * .railpop 안에 있다. 이 한 칸이 두 자리를 가른다.\n */\n :host([collapsed]) > ul li a > span {\n display: none;\n }\n\n :host([collapsed]) > ul li a {\n justify-content: center;\n gap: 0;\n padding: var(--menu-rail-row-pad) 0;\n }\n\n /* ── 하위 메뉴 — 펼친 상태에서는 그 자리에서 열린다 ────────────────── */\n :host li > ul {\n overflow: hidden;\n max-height: 0;\n background: none;\n padding-left: 20px;\n transition: max-height 0.24s ease;\n }\n\n :host li[active] > ul {\n max-height: 640px;\n }\n\n :host li[active] > ul[settled] {\n overflow-y: auto;\n }\n\n :host li li a {\n padding: calc(var(--menu-rail-row-pad) - 2px) 11px;\n font-size: 12.5px;\n color: var(--menu-rail-muted);\n }\n\n\n /*\n * 접히면 하위를 그 자리에서 열지 않는다. 56px 안에서는 들여쓴 목록이 읽히지 않는다.\n * 대신 팝업으로 뜬다 — .railpop 이 그 자리다.\n */\n :host([collapsed]) > ul li > ul {\n display: none;\n }\n\n /* ── 건수 ──────────────────────────────────────────────────────────── */\n /*\n * **메뉴에서 유일하게 색을 갖는 자리다.**\n *\n * 나머지는 무채색이다 — 틀은 자리를 말하고, 색은 「무엇이 나를 기다리나」에만 쓴다. 건수가 바로\n * 그것이라 여기에 제품의 강조색을 준다.\n *\n * 색을 --menu-rail-accent 에서 가져오지 않는다. 그 이름은 지금 페이지 표시에도 쓰이고, 그것까지\n * 강조색이 되면 메뉴 전체가 물든다. 배지만 따로 든다.\n *\n * 순서는 앱 토큰이 먼저다(--ui-accent). md 의 primary 는 앱마다 뜻이 다르다 — operato-twin 에서는\n * 브랜드 청록이지만 operato-plant 에서는 **진회색**이라, primary 를 쓰면 한쪽에서만 색이 나온다.\n * 실제로 그랬다.\n *\n * 글자색은 짝으로 온다. 강조색 위에 흰 글자를 늘 올리면 어두운 테마의 밝은 초록에서 대비가\n * 2.24 로 떨어진다 — 그 테마는 짙은 글자를 짝으로 둔다.\n */\n :host a [badge] {\n margin-left: auto;\n min-width: 18px;\n padding: 0 5px;\n border-radius: 9px;\n background-color: var(--menu-rail-badge, var(--ui-accent, var(--md-sys-color-primary, #0c7a4c)));\n color: var(--menu-rail-badge-ink, var(--ui-on-accent, var(--md-sys-color-on-primary, #ffffff)));\n font-family: var(--theme-font-mono, monospace);\n font-size: 10.5px;\n font-weight: 700;\n line-height: 17px;\n text-align: center;\n }\n\n /*\n * 접히면 라벨이 없어 옆에 둘 자리가 없다. 아이콘 위에 겹친다.\n *\n * 이것도 **레일 안쪽만**이다. 팝업에는 이름이 있으니 건수가 그 오른쪽에 알약으로 선다 —\n * 위의 기본 규칙이 그대로 맞다.\n */\n :host([collapsed]) > ul li[menu] {\n position: relative;\n }\n\n :host([collapsed]) > ul li a [badge] {\n position: absolute;\n top: 0;\n right: 2px;\n margin-left: 0;\n /*\n * 글자를 9.5px 에서 10px 로 올린다. 링이 아이콘을 밀어내 준 만큼 숫자에 자리를 줄 수 있다 —\n * 접힌 레일에서 이 숫자가 유일한 신호이므로 읽히는 것이 먼저다.\n */\n min-width: 15px;\n padding: 0 3px;\n font-size: 10px;\n line-height: 15px;\n /*\n * **배경색 링으로 아이콘을 밀어낸다.**\n *\n * 56px 안에서는 배지가 아이콘 위에 겹칠 수밖에 없다. 겹친 자리에서 아이콘의 선이 배지의\n * 글자를 지나가면 숫자가 안 읽힌다. 링이 그 사이를 끊는다 — 아이콘을 지운 것처럼 보인다.\n *\n * 링 색은 레일의 면색이다. 고른 항목은 배경이 accent-wash 여서 정확히 같지는 않지만, 그\n * 색이 아주 옅어 눈에 걸리지 않는다.\n */\n box-shadow: 0 0 0 2px var(--menu-rail-surface);\n }\n\n /*\n * **값이 아직 안 온 동안**만 자리를 비운다.\n *\n * 알약을 그릴지는 배지 정의가 있나로 정해지고, 그 안의 값은 조금 뒤에 채워진다. 그 사이 빈\n * 알약이 아이콘 위에 뜻 없는 점으로 남는다.\n *\n * **0 은 값이다.** 0 이면 0 을 보인다 — 「기다리는 것이 없다」도 사람이 알아야 하는 사실이고,\n * 그 자리가 비어 있으면 「아직 안 왔나」와 구별되지 않는다.\n */\n :host a [badge]:empty {\n display: none;\n }\n\n /* ── 시스템 자리 ───────────────────────────────────────────────────── */\n /*\n * 빈 자리로 벌린다 — 시스템 항목이 바닥에 붙는다.\n *\n * 목록이 화면보다 길면 이 자리가 0 이 되고 시스템은 목록 끝에 그대로 이어진다.\n * flex: 1 1 auto 가 아니라 flex: 1 1 0 이라야 그렇게 된다 — auto 면 이 빈 칸이 자기\n * 높이를 주장해 목록이 밀린다.\n *\n * **레일 전용이 아니다.** 한때 [rail] 에 걸어 두고 「바닥에 붙이는 것은 폭이 좁을 때의\n * 배치」라고 적었는데, 그건 지어낸 이유였다. 서랍도 화면 높이를 다 쓰므로 시스템이 바닥에\n * 붙는 뜻이 같다.\n */\n :host .railspacer {\n flex: 1 1 0;\n min-height: 0;\n }\n\n /*\n * 시스템 단추의 스타일은 여기에 없다 — **보통 메뉴 줄로 그린다.**\n *\n * 전에는 button.railitem 으로 따로 그리고 그 꾸밈을 여기에 두었다. 그러면 레일이 아닌\n * 모양에서는 꾸밈이 없다. ul > li > a 로 두면 위의 규칙들이 그대로 붙는다 — 여백 · 색 ·\n * hover · 접힘 · 화살표 · 팝업 표시까지.\n */\n\n /* ── 접기 단추 ─────────────────────────────────────────────────────── */\n :host .railtoggle {\n display: flex;\n align-items: center;\n gap: var(--menu-rail-gap);\n width: 100%;\n box-sizing: border-box;\n margin-bottom: 4px;\n padding: 8px 11px;\n border: none;\n border-radius: var(--menu-rail-radius);\n background: none;\n color: var(--menu-rail-faint);\n font: var(--menu-rail-font-weight) var(--menu-rail-font-size) var(--theme-font, inherit);\n text-align: left;\n cursor: pointer;\n }\n\n :host .railtoggle:hover {\n background-color: var(--menu-rail-hover);\n color: var(--menu-rail-ink);\n }\n\n :host .railtoggle md-icon {\n --md-icon-size: var(--menu-rail-icon-size);\n\n flex: none;\n width: 20px;\n min-width: 20px;\n color: inherit;\n }\n\n :host([collapsed]) .railtoggle {\n justify-content: center;\n gap: 0;\n padding: 8px 0;\n }\n\n :host([collapsed]) .railtoggle span {\n display: none;\n }\n\n /*\n * ── 하위 메뉴 팝업 ──────────────────────────────────────────────────────\n * **레일 전용이 아니다.** 접힌 레일에서 하위로 가는 길이기도 하고, 시스템 항목(주소가 아니라\n * 함수)의 자리이기도 하다. 시스템은 어느 모양에서든 팝업으로 열리므로 [rail] 에 걸지 않는다.\n */\n /*\n * fixed 다 — 레일은 overflow-x: hidden 이라 안에서 띄우면 잘린다.\n *\n * 그리고 팝업은 같은 shadow root 안에 있다. 그래서 위의 접힘 규칙들은 **> ul 로 좁혀 둔다** —\n * 좁히지 않으면 a > span 의 display: none 이 팝업 항목의 이름까지 지우고, 가운데 정렬과\n * 여백 0 이 같이 걸려 **아이콘만 남는다.** 한때 li 로만 좁혀 두었는데, 팝업 줄도 li 라서\n * 아무것도 가리지 못했다.\n */\n :host .railpop {\n position: fixed;\n z-index: 60;\n min-width: 190px;\n /*\n * 70vh 였다. 그러면 열여섯 줄짜리 목록이 화면에 다 들어가는데도 스크롤이 생긴다.\n * 자리는 fitPopup 이 맞추므로, 여기서는 **화면이 허락하는 만큼**만 잘라 둔다.\n */\n max-height: calc(100vh - 16px);\n overflow-y: auto;\n box-sizing: border-box;\n padding: 6px;\n /*\n * 테두리는 **선 색**이다. 표면색으로 두면 경계가 안 보여 레일에서 흘러나온 것처럼 읽힌다.\n * 그림자만으로는 밝은 테마에서 약하다.\n */\n border: 1px solid var(--menu-rail-line, var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.15)));\n border-radius: 10px;\n background-color: var(--menu-rail-surface);\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.22);\n }\n\n /*\n * 노브 — 팝업이 어느 항목에서 열렸는지 가리킨다.\n *\n * 45도 돌린 정사각이다. 왼쪽 두 변만 테두리를 두어 팝업의 왼쪽 선에서 뾰족하게 나오고,\n * 배경은 팝업과 같은 면색이라 팝업의 선이 그 자리에서 끊긴 것처럼 보인다.\n *\n * 자리(top)는 fitKnob 이 정한다. 팝업이 위로 밀려 그 항목이 팝업의 세로 범위 밖에 있으면\n * hidden 이 붙는다 — 아무 데도 가리키지 못하는 화살은 없는 것이 낫다.\n */\n :host .railknob {\n /*\n * **fixed 다 — 팝업 안에 두면 잘린다.** 팝업은 목록이 길 때 스크롤해야 해서\n * overflow-y: auto 이고, 그러면 브라우저가 overflow-x 도 auto 로 계산한다. 노브는 팝업의\n * 왼쪽 선 밖으로 나가야 하므로 그 스크롤 박스에 잘렸다. 자리는 fitKnob 이 화면 좌표로 준다.\n */\n position: fixed;\n z-index: 61;\n width: 10px;\n height: 10px;\n transform: rotate(45deg);\n /*\n * 선과 면이 **팝업과 같다.** 팝업의 왼쪽 선에 반쯤 물리면 그 선이 그 자리에서 뾰족하게\n * 꺾인 것처럼 보인다 — 따로 붙은 장식이 아니라 팝업의 일부다.\n *\n * 선을 한 단 진하게 하고 크게 하고 그림자까지 얹어 봤다. 눈에는 더 잡히는데 팝업에서\n * 떨어진 부품처럼 보였다. 선을 아예 없애 봤더니 팝업의 선이 끊긴 틈으로만 남아 약했다.\n *\n * 안 보였던 원인은 색도 크기도 아니라 **잘림**이었다(position: fixed 로 고쳤다).\n */\n border-left: 1px solid var(--menu-rail-line, var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.15)));\n border-bottom: 1px solid var(--menu-rail-line, var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.15)));\n background-color: var(--menu-rail-surface);\n }\n\n :host .railpop .phead {\n padding: 6px 10px 4px;\n font-family: var(--theme-font-mono, monospace);\n font-size: 9.5px;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--menu-rail-faint);\n }\n\n :host .railpop a {\n padding: 8px 10px;\n border-radius: 7px;\n font-size: 12.5px;\n }\n\n /*\n * 팝업 안의 지금 페이지에 대한 규칙은 **여기 없다.**\n *\n * 팝업도 renderMenus 가 그리므로 줄이 li[current] > a 다. 위의 규칙이 그대로 닿는다.\n * 한때 팝업 줄을 a[current] 로 따로 그렸고 그 규칙이 여기 남아 있었는데, 모양이 바뀐 뒤\n * 아무것에도 걸리지 않는 죽은 줄이었다.\n */\n\n /*\n * ── 손가락으로 누르는 화면 ──────────────────────────────────────────────\n * 폭이 아니라 **입력 장치**로 가른다. 좁은 창에서 마우스를 쓰는 사람에게 줄을 키울 이유는\n * 없고, 넓은 태블릿에서 손가락으로 누르는 사람에게는 키워야 한다.\n *\n * 기존 모양은 max-width: 460px 으로 갈랐다. 그건 「좁으면 휴대폰일 것」이라는 짐작이다.\n */\n @media (pointer: coarse) {\n :host {\n --menu-rail-font-size: 15px;\n }\n\n :host a,\n :host .railitem {\n padding: 12px 11px;\n }\n\n :host li li a {\n padding: 10px 11px;\n }\n }\n`\n"]}
1
+ {"version":3,"file":"menu-portrait-styles.js","sourceRoot":"","sources":["../../src/menu-portrait-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkkBpC,CAAA","sourcesContent":["import { css } from 'lit'\n\n/**\n * 왼쪽 메뉴의 모양 — **한 벌이다.**\n *\n * ## 왜 한 벌인가\n *\n * 한때 둘이었다. 기존 모양(줄마다 밑줄 · 왼쪽 여백 16px · hover 에 굵기 변화)과 레일 모양\n * (라운드 알약 · 밑줄 없음 · 접을 수 있음). 같은 메뉴가 설정 하나로 딴 물건처럼 보였고, 무엇을\n * 어느 쪽에 두어야 하는지를 매번 판단해야 해서 **일곱 번 조용히 깨졌다.**\n *\n * 기존 모양은 접을 수도 없었다 — 줄마다 폭 전체를 쓰는 밑줄이 있고 왼쪽 여백이 16px 이라\n * 56px 에서 무너진다. 그래서 레일 펼친 모양을 기준으로 통일했다.\n *\n * ## 안에 세 변형이 있다\n *\n * ```\n * (기본) 늘 보이는 모양. 서랍도 이것이다\n * [collapsed] 접힌 레일 — 아이콘만. 하위는 팝업으로\n * .railpop 팝업 — 접힌 레일에서 하위로 가는 길, 그리고 시스템 항목의 자리\n * ```\n *\n * 무엇이 어느 변형에 걸리나는 `menu-mode.ts` 가 답한다. 여기서 그때그때 판단하지 않는다.\n *\n * ## 값의 출처\n *\n * `operato-twin` 의 레일(`twin-nav-rail`)이 쓰던 값이다. 값을 베끼지 않고 조정 지점으로 노출해\n * 앱이 자기 테마에 맞출 수 있게 둔다.\n */\nexport const MenuPortraitStyles = css`\n :host {\n /*\n * ── 조정 지점 ─────────────────────────────────────────────────────────\n * 폭은 여기 없다 — ox-menu-part 가 정한다. 셸이 크기를 재는 요소도 그것이고, 리사이즈\n * 손잡이가 인라인 폭을 쓰는 요소도 그것이다. 여기서 또 정하면 둘이 싸운다.\n * 폭 토큰(--menu-rail-width · --menu-rail-width-collapsed)은 앱이 위에서 준다.\n */\n --menu-rail-radius: 8px;\n --menu-rail-gap: 11px;\n --menu-rail-font-size: 13px;\n --menu-rail-font-weight: 560;\n --menu-rail-icon-size: 19px;\n /*\n * ── 줄의 세로 여백 ────────────────────────────────────────────────────\n * 줄 높이는 아이콘(20px)에 이 값의 두 배를 더한 것이다. 8px 이면 36px 줄이다.\n *\n * 항목이 스물 남짓인 레일은 그 높이로 화면을 넘긴다. 그때는 줄여 앉힌다 — 다 보이는 것이\n * 넉넉한 것보다 낫다. 다만 **줄이는 것은 앱이 고르는 값**이고, 화면 높이에 따라 저절로\n * 눌리게 두지 않는다.\n *\n * 저절로 눌리게 두면 창 높이마다 줄 높이가 달라진다. 실제로 그런 레일이 있었다 —\n * 창 1100 에서 33px · 800 에서 28px · 620 에서 16px 이 되어 아이콘이 뭉개졌다.\n *\n * 기본은 6.5px — 33px 줄이다. 두 제품이 같은 값을 골랐고, 앱마다 적어 두면 한쪽만 고쳐진다.\n */\n --menu-rail-row-pad: 6.5px;\n --menu-rail-surface: var(--md-sys-color-surface, #fff);\n --menu-rail-ink: var(--md-sys-color-on-surface, #17242c);\n --menu-rail-muted: var(--md-sys-color-on-surface-variant, #57676f);\n --menu-rail-faint: var(--md-sys-color-outline, #8a959c);\n --menu-rail-hover: var(--md-sys-color-surface-container-low, rgba(0, 0, 0, 0.04));\n --menu-rail-accent: var(--md-sys-color-primary, #0e8a56);\n --menu-rail-accent-wash: var(--md-sys-color-primary-container, rgba(14, 138, 86, 0.1));\n\n /*\n * ── 세로 단이다 ───────────────────────────────────────────────────────\n * 이 셋이 없으면 gap 이 안 먹고, **바닥에 붙이는 빈 자리가 자라지 않아** 시스템 줄이 목록\n * 바로 뒤에 붙는다. 두 스타일 파일을 합칠 때 이것을 잃어 그 증상이 났다.\n */\n display: flex;\n flex-direction: column;\n height: 100%;\n\n box-sizing: border-box;\n width: 100%;\n background-color: var(--menu-rail-surface);\n padding: 10px 8px;\n gap: 2px;\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n /*\n * 하위가 펼쳐져 있으면 최상위의 합계를 감춘다.\n *\n * 그 아래에 낱개 건수가 다 보이므로 같은 말을 두 번 하는 것이고, 합계와 낱개가 나란히 있으면\n * 「합계가 저 셋과 다른 무엇인가」를 한 번 생각하게 만든다.\n *\n * 최상위에만 건다 — 하위 항목도 지금 페이지이면 active 를 단다. 그래서 [top] 으로 가른다.\n *\n * 접혔을 때는 감추지 않는다 — 낱개가 안 보이므로 합계가 유일한 신호다.\n */\n :host(:not([collapsed])) li[top][active] > a [badge] {\n display: none;\n }\n\n :host ul {\n display: flex;\n flex-direction: column;\n gap: 2px;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n /* 묶음 이름 — 접히면 자리가 없다. */\n :host [group-label] {\n padding: 10px 10px 4px;\n border: none;\n font-family: var(--theme-font-mono, monospace);\n font-size: 9.5px;\n font-weight: 400;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--menu-rail-faint);\n }\n\n /* 접히면 자리가 없다 — 레일 안쪽만. 팝업 안의 묶음 이름은 그대로 보인다. */\n :host([collapsed]) > [group-label],\n :host([collapsed]) > ul [group-label] {\n display: none;\n }\n\n :host a {\n display: flex;\n align-items: center;\n gap: var(--menu-rail-gap);\n padding: var(--menu-rail-row-pad) 11px;\n /*\n * **줄어들지 않는다.** 목록이 화면보다 길면 겉 상자가 구르면 되고, 줄이 눌릴 일이 아니다.\n * 이것이 없으면 창 높이에 따라 줄 높이가 달라진다(위 --menu-rail-row-pad 머리말).\n */\n flex: none;\n border: none;\n border-radius: var(--menu-rail-radius);\n font: var(--menu-rail-font-weight) var(--menu-rail-font-size) var(--theme-font, inherit);\n color: var(--menu-rail-muted);\n text-decoration: none;\n text-transform: none;\n white-space: nowrap;\n overflow: hidden;\n }\n\n /*\n * hover 에서 굵기를 바꾸지 않는다. 기존 모양은 a:hover { font-weight: bold } 여서 마우스가\n * 지날 때마다 글자 폭이 늘어 줄이 흔들렸다. 색만 바꾼다.\n */\n :host a:hover {\n background-color: var(--menu-rail-hover);\n color: var(--menu-rail-ink);\n font-weight: var(--menu-rail-font-weight);\n }\n\n :host a md-icon {\n --md-icon-size: var(--menu-rail-icon-size);\n\n flex: none;\n width: 20px;\n min-width: 20px;\n height: 20px;\n margin: 0;\n opacity: 1;\n overflow: hidden;\n color: var(--menu-rail-faint);\n }\n\n /*\n * ── 지금 페이지 ─────────────────────────────────────────────────────────\n * 어느 층이든 **지금 보고 있는 그 줄**에만 강조를 준다. 층으로 가르지 않는다 — 최상위가 그\n * 자리일 수도 있고(하위가 없는 묶음) 하위가 그 자리일 수도 있다.\n */\n :host li[current] > a {\n border-left: none;\n background-color: var(--menu-rail-accent-wash);\n color: var(--menu-rail-ink);\n font-weight: 700;\n }\n\n :host li[current] > a md-icon {\n color: var(--menu-rail-accent);\n }\n\n /*\n * ── 펼쳐진 최상위 ───────────────────────────────────────────────────────\n * **강조하지 않는다.** 최상위의 active 는 「하위가 펼쳐져 있다」는 여닫힘이고, 지금 페이지는\n * 그 안의 한 줄이다. 둘에 같은 강조를 주면 두 줄이 나란히 강조되어 어느 쪽이 지금 자리인지\n * 흐려진다.\n *\n * 그래도 옅게는 둔다 — 접힌 화살표와 함께 「여기가 열려 있다」를 말한다.\n */\n :host(:not([collapsed])) li[top][active]:not([current]) > a {\n background-color: transparent;\n color: var(--menu-rail-ink);\n }\n\n :host(:not([collapsed])) li[top][active]:not([current]) > a md-icon {\n color: var(--menu-rail-ink);\n }\n\n /*\n * ── 접히면 최상위가 대신 말한다 ─────────────────────────────────────────\n * 하위가 감춰지므로 지금 자리를 말할 줄이 최상위뿐이다. 그때는 최상위가 강조를 받는다.\n */\n :host([collapsed]) li[top][active] > a {\n background-color: var(--menu-rail-accent-wash);\n color: var(--menu-rail-ink);\n }\n\n :host([collapsed]) li[top][active] > a md-icon {\n color: var(--menu-rail-accent);\n }\n\n /*\n * ── 팝업을 연 항목 ─────────────────────────────────────────────────────\n * active(지금 페이지)와 **다른 뜻**이라 다른 표시를 준다. 접힌 레일에서 강조된 아이콘은\n * 「지금 페이지」만 뜻하므로, 이 표시가 없으면 어느 항목의 팝업인지 알 수 없다.\n *\n * 강조색을 쓰지 않는다 — 그 색은 지금 페이지의 것이다. 대신 글자·아이콘을 짙게 하고 팝업과\n * 같은 면색으로 칠해 팝업의 연장으로 읽히게 한다.\n */\n :host li[popped] > a {\n background-color: var(--menu-rail-hover);\n color: var(--menu-rail-ink);\n }\n\n :host li[popped] > a md-icon {\n color: var(--menu-rail-ink);\n }\n\n /* 지금 페이지이면서 팝업까지 연 경우 — 강조색이 이긴다(그것이 더 드문 사실이다). */\n :host li[current][popped] > a,\n :host([collapsed]) li[top][active][popped] > a {\n background-color: var(--menu-rail-accent-wash);\n }\n\n :host li[current][popped] > a md-icon,\n :host([collapsed]) li[top][active][popped] > a md-icon {\n color: var(--menu-rail-accent);\n }\n\n /*\n * ── 하위가 있다는 표시 ──────────────────────────────────────────────────\n * **이 화살표가 곧 「나는 묶음이다」이다.** 없으면 최상위 줄만 보고 하위를 가졌는지, 자기가\n * 끝인지 알 수 없다 — 눌러 봐야 안다.\n *\n * 글자는 md-icon 의 내용이 아니라 여기서 준다. 두 스타일 파일을 합칠 때 이 ::before 를\n * 잃었고, 그래서 <md-icon submenu-button> 이 **빈 채로 남아 화살표가 사라졌다.**\n * 아이콘 이름을 컴포넌트로 옮기지 않는 이유는, 접힘·팝업마다 다르게 두는 것이 이 파일의\n * 일이기 때문이다.\n */\n :host a [submenu-button] {\n margin-left: auto;\n --md-icon-size: 16px;\n width: 16px;\n min-width: 16px;\n color: var(--menu-rail-faint);\n transition: transform 0.2s ease;\n }\n\n :host a [submenu-button]::before {\n content: 'chevron_right';\n }\n\n /* 펼쳐지면 아래를 가리킨다 — 화살표 하나로 여닫힘까지 말한다. */\n :host li[active] > a [submenu-button] {\n transform: rotate(90deg);\n color: var(--menu-rail-ink);\n }\n\n /* 접히면 하위가 팝업으로 뜬다. 56px 안에 화살표를 둘 자리도 없다. */\n :host([collapsed]) > ul li a [submenu-button] {\n display: none;\n }\n\n :host a > span {\n flex: 1;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n /*\n * ── 접으면 이름을 감춘다 — **레일 안쪽만** ─────────────────────────────\n * 팝업은 같은 shadow root 안의 **형제**다(.railpop). 그래서 li 로만 좁히면 팝업 줄도\n * 함께 걸려 **아이콘만 남는다** — 접힌 레일에서 팝업은 이름을 읽으러 여는 자리인데.\n *\n * > ul 로 좁힌다. 레일의 목록과 시스템 목록은 host 의 직계 자식이고, 팝업의 목록은\n * .railpop 안에 있다. 이 한 칸이 두 자리를 가른다.\n */\n :host([collapsed]) > ul li a > span {\n display: none;\n }\n\n :host([collapsed]) > ul li a {\n justify-content: center;\n gap: 0;\n padding: var(--menu-rail-row-pad) 0;\n }\n\n /* ── 하위 메뉴 — 펼친 상태에서는 그 자리에서 열린다 ────────────────── */\n :host li > ul {\n overflow: hidden;\n max-height: 0;\n background: none;\n padding-left: 20px;\n transition: max-height 0.24s ease;\n }\n\n :host li[active] > ul {\n max-height: 640px;\n }\n\n :host li[active] > ul[settled] {\n overflow-y: auto;\n }\n\n :host li li a {\n padding: calc(var(--menu-rail-row-pad) - 2px) 11px;\n font-size: 12.5px;\n color: var(--menu-rail-muted);\n }\n\n\n /*\n * 접히면 하위를 그 자리에서 열지 않는다. 56px 안에서는 들여쓴 목록이 읽히지 않는다.\n * 대신 팝업으로 뜬다 — .railpop 이 그 자리다.\n */\n :host([collapsed]) > ul li > ul {\n display: none;\n }\n\n /* ── 건수 ──────────────────────────────────────────────────────────── */\n /*\n * **메뉴에서 유일하게 색을 갖는 자리다.**\n *\n * 나머지는 무채색이다 — 틀은 자리를 말하고, 색은 「무엇이 나를 기다리나」에만 쓴다. 건수가 바로\n * 그것이라 여기에 제품의 강조색을 준다.\n *\n * 색을 --menu-rail-accent 에서 가져오지 않는다. 그 이름은 지금 페이지 표시에도 쓰이고, 그것까지\n * 강조색이 되면 메뉴 전체가 물든다. 배지만 따로 든다.\n *\n * 순서는 앱 토큰이 먼저다(--ui-accent). md 의 primary 는 앱마다 뜻이 다르다 — operato-twin 에서는\n * 브랜드 청록이지만 operato-plant 에서는 **진회색**이라, primary 를 쓰면 한쪽에서만 색이 나온다.\n * 실제로 그랬다.\n *\n * 글자색은 짝으로 온다. 강조색 위에 흰 글자를 늘 올리면 어두운 테마의 밝은 초록에서 대비가\n * 2.24 로 떨어진다 — 그 테마는 짙은 글자를 짝으로 둔다.\n */\n :host a [badge] {\n margin-left: auto;\n min-width: 18px;\n padding: 0 5px;\n border-radius: 9px;\n background-color: var(--menu-rail-badge, var(--ui-accent, var(--md-sys-color-primary, #0c7a4c)));\n color: var(--menu-rail-badge-ink, var(--ui-on-accent, var(--md-sys-color-on-primary, #ffffff)));\n font-family: var(--theme-font-mono, monospace);\n font-size: 10.5px;\n font-weight: 700;\n line-height: 17px;\n text-align: center;\n }\n\n /*\n * 접히면 라벨이 없어 옆에 둘 자리가 없다. 아이콘 위에 겹친다.\n *\n * 이것도 **레일 안쪽만**이다. 팝업에는 이름이 있으니 건수가 그 오른쪽에 알약으로 선다 —\n * 위의 기본 규칙이 그대로 맞다.\n */\n :host([collapsed]) > ul li[menu] {\n position: relative;\n }\n\n :host([collapsed]) > ul li a [badge] {\n position: absolute;\n top: 0;\n right: 2px;\n margin-left: 0;\n /*\n * 글자를 9.5px 에서 10px 로 올린다. 링이 아이콘을 밀어내 준 만큼 숫자에 자리를 줄 수 있다 —\n * 접힌 레일에서 이 숫자가 유일한 신호이므로 읽히는 것이 먼저다.\n */\n min-width: 15px;\n padding: 0 3px;\n font-size: 10px;\n line-height: 15px;\n /*\n * **배경색 링으로 아이콘을 밀어낸다.**\n *\n * 56px 안에서는 배지가 아이콘 위에 겹칠 수밖에 없다. 겹친 자리에서 아이콘의 선이 배지의\n * 글자를 지나가면 숫자가 안 읽힌다. 링이 그 사이를 끊는다 — 아이콘을 지운 것처럼 보인다.\n *\n * 링 색은 레일의 면색이다. 고른 항목은 배경이 accent-wash 여서 정확히 같지는 않지만, 그\n * 색이 아주 옅어 눈에 걸리지 않는다.\n */\n box-shadow: 0 0 0 2px var(--menu-rail-surface);\n }\n\n /*\n * **값이 아직 안 온 동안**만 자리를 비운다.\n *\n * 알약을 그릴지는 배지 정의가 있나로 정해지고, 그 안의 값은 조금 뒤에 채워진다. 그 사이 빈\n * 알약이 아이콘 위에 뜻 없는 점으로 남는다.\n *\n * **0 은 값이다.** 0 이면 0 을 보인다 — 「기다리는 것이 없다」도 사람이 알아야 하는 사실이고,\n * 그 자리가 비어 있으면 「아직 안 왔나」와 구별되지 않는다.\n */\n :host a [badge]:empty {\n display: none;\n }\n\n /*\n * Zero keeps its place and loses the signal.\n *\n * The filled accent pill means \"there is something here for you\". 작성 중 0 wore exactly the same\n * one as 할 일 9 — rgb(12,122,76), 28x17 — so a column of them read as four things waiting.\n *\n * Hiding zero is not the answer: an empty slot cannot be told apart from a count that has not\n * arrived yet (see the rule above). So the number stays and the colour goes quiet. Contrast is\n * still readable at 10.5px because both tokens come from the same surface pair the menu already\n * uses for inactive rows.\n */\n :host a [badge][zero] {\n background-color: var(--menu-rail-badge-zero, var(--ui-line-soft, #e6eaed));\n color: var(--menu-rail-badge-zero-ink, var(--ui-faint, #8a959c));\n font-weight: 500;\n }\n\n /* ── 시스템 자리 ───────────────────────────────────────────────────── */\n /*\n * 빈 자리로 벌린다 — 시스템 항목이 바닥에 붙는다.\n *\n * 목록이 화면보다 길면 이 자리가 0 이 되고 시스템은 목록 끝에 그대로 이어진다.\n * flex: 1 1 auto 가 아니라 flex: 1 1 0 이라야 그렇게 된다 — auto 면 이 빈 칸이 자기\n * 높이를 주장해 목록이 밀린다.\n *\n * **레일 전용이 아니다.** 한때 [rail] 에 걸어 두고 「바닥에 붙이는 것은 폭이 좁을 때의\n * 배치」라고 적었는데, 그건 지어낸 이유였다. 서랍도 화면 높이를 다 쓰므로 시스템이 바닥에\n * 붙는 뜻이 같다.\n */\n :host .railspacer {\n flex: 1 1 0;\n min-height: 0;\n }\n\n /*\n * 시스템 단추의 스타일은 여기에 없다 — **보통 메뉴 줄로 그린다.**\n *\n * 전에는 button.railitem 으로 따로 그리고 그 꾸밈을 여기에 두었다. 그러면 레일이 아닌\n * 모양에서는 꾸밈이 없다. ul > li > a 로 두면 위의 규칙들이 그대로 붙는다 — 여백 · 색 ·\n * hover · 접힘 · 화살표 · 팝업 표시까지.\n */\n\n /* ── 접기 단추 ─────────────────────────────────────────────────────── */\n :host .railtoggle {\n display: flex;\n align-items: center;\n gap: var(--menu-rail-gap);\n width: 100%;\n box-sizing: border-box;\n margin-bottom: 4px;\n padding: 8px 11px;\n border: none;\n border-radius: var(--menu-rail-radius);\n background: none;\n color: var(--menu-rail-faint);\n font: var(--menu-rail-font-weight) var(--menu-rail-font-size) var(--theme-font, inherit);\n text-align: left;\n cursor: pointer;\n }\n\n :host .railtoggle:hover {\n background-color: var(--menu-rail-hover);\n color: var(--menu-rail-ink);\n }\n\n :host .railtoggle md-icon {\n --md-icon-size: var(--menu-rail-icon-size);\n\n flex: none;\n width: 20px;\n min-width: 20px;\n color: inherit;\n }\n\n :host([collapsed]) .railtoggle {\n justify-content: center;\n gap: 0;\n padding: 8px 0;\n }\n\n :host([collapsed]) .railtoggle span {\n display: none;\n }\n\n /*\n * ── 하위 메뉴 팝업 ──────────────────────────────────────────────────────\n * **레일 전용이 아니다.** 접힌 레일에서 하위로 가는 길이기도 하고, 시스템 항목(주소가 아니라\n * 함수)의 자리이기도 하다. 시스템은 어느 모양에서든 팝업으로 열리므로 [rail] 에 걸지 않는다.\n */\n /*\n * fixed 다 — 레일은 overflow-x: hidden 이라 안에서 띄우면 잘린다.\n *\n * 그리고 팝업은 같은 shadow root 안에 있다. 그래서 위의 접힘 규칙들은 **> ul 로 좁혀 둔다** —\n * 좁히지 않으면 a > span 의 display: none 이 팝업 항목의 이름까지 지우고, 가운데 정렬과\n * 여백 0 이 같이 걸려 **아이콘만 남는다.** 한때 li 로만 좁혀 두었는데, 팝업 줄도 li 라서\n * 아무것도 가리지 못했다.\n */\n :host .railpop {\n position: fixed;\n z-index: 60;\n min-width: 190px;\n /*\n * 70vh 였다. 그러면 열여섯 줄짜리 목록이 화면에 다 들어가는데도 스크롤이 생긴다.\n * 자리는 fitPopup 이 맞추므로, 여기서는 **화면이 허락하는 만큼**만 잘라 둔다.\n */\n max-height: calc(100vh - 16px);\n overflow-y: auto;\n box-sizing: border-box;\n padding: 6px;\n /*\n * 테두리는 **선 색**이다. 표면색으로 두면 경계가 안 보여 레일에서 흘러나온 것처럼 읽힌다.\n * 그림자만으로는 밝은 테마에서 약하다.\n */\n border: 1px solid var(--menu-rail-line, var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.15)));\n border-radius: 10px;\n background-color: var(--menu-rail-surface);\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.22);\n }\n\n /*\n * 노브 — 팝업이 어느 항목에서 열렸는지 가리킨다.\n *\n * 45도 돌린 정사각이다. 왼쪽 두 변만 테두리를 두어 팝업의 왼쪽 선에서 뾰족하게 나오고,\n * 배경은 팝업과 같은 면색이라 팝업의 선이 그 자리에서 끊긴 것처럼 보인다.\n *\n * 자리(top)는 fitKnob 이 정한다. 팝업이 위로 밀려 그 항목이 팝업의 세로 범위 밖에 있으면\n * hidden 이 붙는다 — 아무 데도 가리키지 못하는 화살은 없는 것이 낫다.\n */\n :host .railknob {\n /*\n * **fixed 다 — 팝업 안에 두면 잘린다.** 팝업은 목록이 길 때 스크롤해야 해서\n * overflow-y: auto 이고, 그러면 브라우저가 overflow-x 도 auto 로 계산한다. 노브는 팝업의\n * 왼쪽 선 밖으로 나가야 하므로 그 스크롤 박스에 잘렸다. 자리는 fitKnob 이 화면 좌표로 준다.\n */\n position: fixed;\n z-index: 61;\n width: 10px;\n height: 10px;\n transform: rotate(45deg);\n /*\n * 선과 면이 **팝업과 같다.** 팝업의 왼쪽 선에 반쯤 물리면 그 선이 그 자리에서 뾰족하게\n * 꺾인 것처럼 보인다 — 따로 붙은 장식이 아니라 팝업의 일부다.\n *\n * 선을 한 단 진하게 하고 크게 하고 그림자까지 얹어 봤다. 눈에는 더 잡히는데 팝업에서\n * 떨어진 부품처럼 보였다. 선을 아예 없애 봤더니 팝업의 선이 끊긴 틈으로만 남아 약했다.\n *\n * 안 보였던 원인은 색도 크기도 아니라 **잘림**이었다(position: fixed 로 고쳤다).\n */\n border-left: 1px solid var(--menu-rail-line, var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.15)));\n border-bottom: 1px solid var(--menu-rail-line, var(--md-sys-color-outline-variant, rgba(0, 0, 0, 0.15)));\n background-color: var(--menu-rail-surface);\n }\n\n :host .railpop .phead {\n padding: 6px 10px 4px;\n font-family: var(--theme-font-mono, monospace);\n font-size: 9.5px;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n color: var(--menu-rail-faint);\n }\n\n :host .railpop a {\n padding: 8px 10px;\n border-radius: 7px;\n font-size: 12.5px;\n }\n\n /*\n * 팝업 안의 지금 페이지에 대한 규칙은 **여기 없다.**\n *\n * 팝업도 renderMenus 가 그리므로 줄이 li[current] > a 다. 위의 규칙이 그대로 닿는다.\n * 한때 팝업 줄을 a[current] 로 따로 그렸고 그 규칙이 여기 남아 있었는데, 모양이 바뀐 뒤\n * 아무것에도 걸리지 않는 죽은 줄이었다.\n */\n\n /*\n * ── 손가락으로 누르는 화면 ──────────────────────────────────────────────\n * 폭이 아니라 **입력 장치**로 가른다. 좁은 창에서 마우스를 쓰는 사람에게 줄을 키울 이유는\n * 없고, 넓은 태블릿에서 손가락으로 누르는 사람에게는 키워야 한다.\n *\n * 기존 모양은 max-width: 460px 으로 갈랐다. 그건 「좁으면 휴대폰일 것」이라는 짐작이다.\n */\n @media (pointer: coarse) {\n :host {\n --menu-rail-font-size: 15px;\n }\n\n :host a,\n :host .railitem {\n padding: 12px 11px;\n }\n\n :host li li a {\n padding: 10px 11px;\n }\n }\n`\n"]}
@@ -90,6 +90,25 @@ export declare class OxMenuPortrait extends OxMenuPortrait_base {
90
90
  * CSS 로 「최상위인 li」를 가리려면 `:not(li li)` 같은 것이 필요하고, 그건 읽는 사람이
91
91
  * 한 번 더 생각해야 하는 선택자다.
92
92
  */
93
+ /**
94
+ * The count pill next to a menu label.
95
+ *
96
+ * Zero is drawn, and drawn quietly.
97
+ *
98
+ * The pill is the "there is something here for you" signal, and 작성 중 0 wore the same filled
99
+ * accent as 할 일 9 — same colour rgb(12,122,76), same 28x17 box. Four of them in a column read
100
+ * as four things waiting. Hiding zero is not the answer either: an empty slot cannot be told
101
+ * apart from a count that has not arrived yet. So zero keeps its place and loses the signal.
102
+ *
103
+ * ── Why this method exists ────────────────────────────────────────────
104
+ * Callers used to hand over a Lit directive — `badge: () => asyncReplace(counts(name))` — which
105
+ * left this component with something it could only drop into a slot. It could not see the value,
106
+ * so it could not decide how to draw it. The component that draws the pill has to own how the
107
+ * pill looks, so it now takes the stream and wraps it here.
108
+ *
109
+ * A caller that still passes a ready-made directive keeps working, minus the quiet zero.
110
+ */
111
+ private renderBadge;
93
112
  renderMenus(menus: Menu[], activeTopLevel?: Menu, activeMenu?: Menu, depth?: number): TemplateResult | typeof nothing;
94
113
  render(): TemplateResult<1>;
95
114
  /**
@@ -3,12 +3,26 @@ import { __decorate } from "tslib";
3
3
  import '@material/web/icon/icon.js';
4
4
  import { html, LitElement, nothing } from 'lit';
5
5
  import { customElement, property, state } from 'lit/decorators.js';
6
+ import { asyncReplace } from 'lit/directives/async-replace.js';
6
7
  import { ifDefined } from 'lit/directives/if-defined.js';
7
8
  import { i18next, localize } from '@operato/i18n';
8
9
  import { navigate, store } from '@operato/shell';
9
10
  import { ScrollbarStyles } from '@operato/styles';
10
11
  import { MenuPortraitStyles } from './menu-portrait-styles.js';
11
12
  import { childrenOpenAs, menuMode, showsLabels, topNavigates } from './menu-mode.js';
13
+ /** A stream of counts, as opposed to one value or a ready-made directive. */
14
+ function isAsyncIterable(value) {
15
+ return typeof (value === null || value === void 0 ? void 0 : value[Symbol.asyncIterator]) === 'function';
16
+ }
17
+ /**
18
+ * Nothing is waiting.
19
+ *
20
+ * Only a real zero counts. An empty string is a count that has not arrived, and the pill is hidden
21
+ * for that case by `[badge]:empty` — treating it as zero here would draw a grey pill on load.
22
+ */
23
+ function isZero(value) {
24
+ return value === 0 || value === '0';
25
+ }
12
26
  /**
13
27
  * 시스템 항목을 담는 가짜 최상위.
14
28
  *
@@ -139,6 +153,33 @@ let OxMenuPortrait = OxMenuPortrait_1 = class OxMenuPortrait extends localize(i1
139
153
  * CSS 로 「최상위인 li」를 가리려면 `:not(li li)` 같은 것이 필요하고, 그건 읽는 사람이
140
154
  * 한 번 더 생각해야 하는 선택자다.
141
155
  */
156
+ /**
157
+ * The count pill next to a menu label.
158
+ *
159
+ * Zero is drawn, and drawn quietly.
160
+ *
161
+ * The pill is the "there is something here for you" signal, and 작성 중 0 wore the same filled
162
+ * accent as 할 일 9 — same colour rgb(12,122,76), same 28x17 box. Four of them in a column read
163
+ * as four things waiting. Hiding zero is not the answer either: an empty slot cannot be told
164
+ * apart from a count that has not arrived yet. So zero keeps its place and loses the signal.
165
+ *
166
+ * ── Why this method exists ────────────────────────────────────────────
167
+ * Callers used to hand over a Lit directive — `badge: () => asyncReplace(counts(name))` — which
168
+ * left this component with something it could only drop into a slot. It could not see the value,
169
+ * so it could not decide how to draw it. The component that draws the pill has to own how the
170
+ * pill looks, so it now takes the stream and wraps it here.
171
+ *
172
+ * A caller that still passes a ready-made directive keeps working, minus the quiet zero.
173
+ */
174
+ renderBadge(badge) {
175
+ if (badge === false || badge === null || badge === undefined) {
176
+ return nothing;
177
+ }
178
+ if (isAsyncIterable(badge)) {
179
+ return asyncReplace(badge, value => html `<div badge ?zero=${isZero(value)}>${value}</div>`);
180
+ }
181
+ return html `<div badge ?zero=${isZero(badge)}>${badge}</div>`;
182
+ }
142
183
  renderMenus(menus, activeTopLevel, activeMenu, depth = 0) {
143
184
  if (menus.length == 0) {
144
185
  return nothing;
@@ -182,7 +223,7 @@ let OxMenuPortrait = OxMenuPortrait_1 = class OxMenuPortrait extends localize(i1
182
223
  >
183
224
  <a href=${path || '#'} title=${ifDefined(this.hoverText(label, description))}>
184
225
  <md-icon filled>${icon || 'fiber_manual_record'}</md-icon>
185
- <span>${label}</span>${badge !== false ? html `<div badge>${badge}</div>` : html ``}
226
+ <span>${label}</span>${this.renderBadge(badge)}
186
227
  ${menus.length > 0 ? html ` <md-icon filled submenu-button></md-icon> ` : html ``}
187
228
  </a>
188
229
  ${menus && this.renderMenus(menus || [], activeMenu, activeMenu, depth + 1)}
@@ -1 +1 @@
1
- {"version":3,"file":"ox-menu-portrait.js","sourceRoot":"","sources":["../../src/ox-menu-portrait.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { html, LitElement, nothing, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { navigate, store } from '@operato/shell'\nimport { ScrollbarStyles } from '@operato/styles'\n\nimport { Menu } from './types.js'\n\nimport { MenuPortraitStyles } from './menu-portrait-styles.js'\nimport { childrenOpenAs, menuMode, showsLabels, topNavigates } from './menu-mode.js'\n\n/**\n * 시스템 항목을 담는 가짜 최상위.\n *\n * 팝업이 「어느 최상위에서 열렸나」를 하나의 값(`popped`)으로 들고 있어서, 시스템도 최상위인\n * 것처럼 다룬다. 그래야 노브와 자리 계산이 한 벌로 남는다.\n */\nconst SYSTEM = { name: 'ox-menu-system' } as Menu\n\n@customElement('ox-menu-portrait')\nexport class OxMenuPortrait extends localize(i18next)(LitElement) {\n static styles = [ScrollbarStyles, MenuPortraitStyles]\n\n @property({ type: Array }) menus?: Menu[]\n @property({ type: Object }) activeTopLevel?: Menu\n @property({ type: Object }) activeMenu?: Menu\n @property({ type: String }) path!: string\n\n /**\n * 레일 모드 — 접을 수 있고, 접히면 하위가 팝업으로 뜬다.\n *\n * **옵트인이다.** 켜지 않은 앱은 지금과 한 글자도 다르지 않다. 모양이 함께 바뀌는 것은 취향이\n * 아니라 요건이다 — 기존 모양은 줄마다 폭 전체를 쓰는 밑줄이 있고 왼쪽 여백이 16px 이라 56px\n * 에서 무너진다(§`menu-rail-styles.ts`).\n */\n @property({ type: Boolean, reflect: true }) rail = false\n\n /**\n * 접힘 — 아이콘만.\n *\n * **주인은 이 컴포넌트가 아니다.** 폭을 정하는 요소는 `ox-menu-part` 이고(그쪽에 `min-width`\n * 가 있다), 셸의 리사이즈 손잡이도 그 요소에 인라인 폭을 쓴다. 그래서 상태와 저장은 그쪽이\n * 갖고 여기는 받아서 그린다.\n */\n @property({ type: Boolean, reflect: true }) collapsed = false\n\n /**\n * 서랍인가 — 화면 위에 겹쳐 떴다가 닫히는 메뉴.\n *\n * 그때 최상위는 **펼치기만** 한다. 누르는 순간 서랍이 닫히면 그 묶음의 나머지 하위를 볼\n * 기회가 없다(§`ox-menu-part` 의 `drawer`).\n */\n @property({ type: Boolean, reflect: true }) drawer = false\n\n /**\n * 지금 어떤 모양으로 서 있나 — 세 플래그에서 하나로 모은다.\n *\n * 이 값과 그에 딸린 두 답(`하위를 어디에` · `최상위가 이동하나`)은 `menu-mode.ts` 에 있고\n * 시험으로 못박혀 있다. 여기서 그때그때 판단하지 않는다 — 그렇게 하다가 네 번 깨졌다.\n */\n private get mode() {\n return menuMode({ rail: this.rail, collapsed: this.collapsed, drawer: this.drawer })\n }\n\n /** 접힌 상태에서 팝업으로 열린 최상위 메뉴. 시스템 팝업이면 SYSTEM 이다. */\n @state() private popped?: Menu\n\n /**\n * 시스템 항목 — 프로필 · 로그아웃 · 설정처럼 **앱이 아니라 프레임워크가 붙이는 것**들.\n *\n * 하드코딩하지 않는다. 각 패키지가 부팅할 때 `ADD_MORENDA` 로 등록하고(권한이 없으면 등록\n * 자체를 안 한다), 우리는 그 목록을 그대로 그린다. 그래서 목록이 비면 이 자리도 없다.\n */\n /*\n * private 을 두지 않는다 — 시험이 이 목록을 넣어 보고 「항목이 없으면 자리도 없다」를 확인한다.\n * 앱에서는 store 가 채운다(아래 connectedCallback).\n */\n @state() morendas: any[] = []\n\n private _unsubscribeStore?: () => void\n\n /** 팝업 자리 — 누른 항목의 오른쪽. 세로는 그린 뒤 재서 맞춘다(§`fitPopup`). */\n private _popLeft = 0\n private _popTop = 0\n /** 누른 항목의 윗선. 화면에 들어가면 이 자리를 쓴다. */\n private _popPrefer = 0\n\n /** 팝업이 화면 안에 들어가게 세로 자리를 맞춘다. 팝업 밖 여백. */\n private static readonly POP_MARGIN = 8\n\n /**\n * 팝업 밖을 누르면 닫는다.\n *\n * ── 팝업 안의 클릭을 막지 않는다 ────────────────────────────────────────\n * 한때 팝업 컨테이너에 stopPropagation 을 걸어 두었다. 팝업 안을 눌러도 이 처리기가 받아\n * 곧바로 닫히던 것을 막으려던 것인데, 그것이 **셸의 라우터까지 막았다.**\n *\n * 라우터는 document.body 에서 클릭을 받아 composedPath 로 A 를 찾고 preventDefault 한 뒤\n * 화면만 바꾼다(@operato/shell 의 installRouter). 클릭이 거기까지 못 가면 브라우저의 기본\n * 이동이 그대로 일어나 **페이지 전체가 다시 읽혔다.**\n *\n * 그래서 막지 않고, 여기서 「팝업 안이면 닫지 않는다」로 가른다. 줄을 누를 때 닫는 일은 그\n * 줄의 처리기가 한다.\n */\n private _onDocClick = (e: MouseEvent) => {\n if (!this.popped) {\n return\n }\n\n const pop = this.renderRoot?.querySelector?.('.railpop')\n\n if (pop && e.composedPath().includes(pop)) {\n return\n }\n\n this.popped = undefined\n }\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('click', this._onDocClick)\n\n /*\n * morenda 는 각 패키지의 부팅에서 **비동기로** 등록된다. 한 번 읽고 끝내면 늦게 붙는 것이\n * 빠진다. 길이가 바뀔 때만 다시 그린다 — 이 목록은 늘어나기만 한다.\n */\n const read = () => ((store.getState() as any)?.more?.morendas || []) as any[]\n\n this.morendas = read()\n this._unsubscribeStore = store.subscribe(() => {\n const next = read()\n if (next.length !== this.morendas.length) {\n this.morendas = next\n }\n })\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n document.removeEventListener('click', this._onDocClick)\n this._unsubscribeStore?.()\n }\n\n /**\n * 마우스를 올렸을 때 뜨는 글.\n *\n * ── 접혔을 때는 이름이 먼저다 ───────────────────────────────────────────\n * 접히면 아이콘만 남으므로 **이름을 모른다.** 그때는 이름을 윗줄에 얹고 설명을 아랫줄에 둔다.\n * 펼쳐져 있으면 이름은 이미 옆에 있으니 설명만 낸다.\n *\n * 줄바꿈으로 잇는다 — 대시로 이으면 설명 안의 대시와 겹쳐 「A — B — C」가 된다.\n *\n * 설명도 없고 이름도 안 보이는 경우가 아니면 아무것도 내지 않는다. 이름을 그대로 되풀이하는\n * 툴팁은 소음이다.\n */\n private hoverText(label?: unknown, description?: string) {\n const name = typeof label === 'string' ? label : undefined\n\n if (showsLabels(this.mode)) {\n return description || undefined\n }\n\n return description && name ? `${name}\\n${description}` : description || name\n }\n\n /**\n * @param depth 0 이면 최상위다. **하위도 `active` 를 달기 때문에** 깊이를 값으로 넘긴다 —\n * CSS 로 「최상위인 li」를 가리려면 `:not(li li)` 같은 것이 필요하고, 그건 읽는 사람이\n * 한 번 더 생각해야 하는 선택자다.\n */\n renderMenus(menus: Menu[], activeTopLevel?: Menu, activeMenu?: Menu, depth = 0): TemplateResult | typeof nothing {\n if (menus.length == 0) {\n return nothing\n }\n\n return html`\n <ul>\n ${menus.map(menu => {\n var { type, name, active, path, label = name, icon, menus = [], description } = menu\n active = active && typeof active === 'function' ? active.call(menu, { path: this.path }) : false\n /*\n * 건수는 값이거나 값을 내는 함수다. 함수의 반환은 화면에 그릴 수 있는 무엇이든 온다 —\n * 숫자이거나, 갱신될 때마다 바뀌는 Lit 디렉티브다. 그래서 따로 담는다.\n */\n const badge: unknown = typeof menu.badge === 'function' ? menu.badge.call(menu) : (menu.badge ?? false)\n\n return type == 'group'\n ? html`<li group-label>${label}</li>`\n : html`\n <!--\n popped — **지금 팝업을 연 항목**이다. active(지금 페이지)와 다른 뜻이라\n 다른 표시를 준다. 접힌 레일에서 강조된 아이콘은 「지금 페이지」만 뜻하므로,\n 이 표시가 없으면 어느 항목의 팝업인지 알 수 없다.\n -->\n <!--\n active 와 current 는 뜻이 다르다.\n\n 최상위의 active 하위가 펼쳐져 있다 (여닫힘)\n 하위의 active 이것이 지금 페이지다\n current 이것이 지금 페이지다 — 어느 층이든\n\n active 하나로 두면 「펼쳐져 있다」와 「지금 페이지다」에 같은 강조가 걸려,\n 최상위와 그 안의 한 줄이 나란히 강조된다.\n -->\n <li\n ?active=${activeTopLevel ? menu === activeTopLevel : active}\n ?current=${!!activeMenu && menu === activeMenu}\n ?popped=${this.popped === menu}\n ?top=${depth === 0}\n .menu=${menu}\n menu\n >\n <a href=${path || '#'} title=${ifDefined(this.hoverText(label, description))}>\n <md-icon filled>${icon || 'fiber_manual_record'}</md-icon>\n <span>${label}</span>${badge !== false ? html`<div badge>${badge}</div>` : html``}\n ${menus.length > 0 ? html` <md-icon filled submenu-button></md-icon> ` : html``}\n </a>\n ${menus && this.renderMenus(menus || [], activeMenu, activeMenu, depth + 1)}\n </li>\n `\n })}\n </ul>\n `\n }\n\n render() {\n const { menus, activeTopLevel, activeMenu } = this\n\n /*\n * 레일이 아니어도 시스템 자리는 그린다.\n *\n * 한때 이것을 레일 가지 안에만 두었다. 그래서 **메뉴 감추기를 켜면 「관리」 한 줄이\n * 사라졌다** — 그 설정이 레일을 끄기 때문이다.\n *\n * 레일을 감추기와 배타로 둔 것은 **접기** 때문이다. 이미 숨은 것을 접을 수는 없다. 그 판단은\n * 접기에만 맞고, 시스템 자리는 접기와 아무 상관이 없다. 관계없는 것을 한 플래그에 묶었다.\n */\n if (!this.rail) {\n return html`${this.renderMenus(menus || [], activeTopLevel, activeMenu)} ${this.renderSystem()}\n ${this.renderPopped()}`\n }\n\n return html`\n <!--\n 접기 단추 — 맨 위에 둔다. 접힌 뒤 다시 펼치는 길이 같은 자리에 있어야 한다.\n -->\n <button\n class=\"railtoggle\"\n title=${i18next.t(this.collapsed ? 'text.expand-menu' : 'text.collapse-menu')}\n @click=${(e: MouseEvent) => this.toggleCollapsed(e)}\n >\n <md-icon>${this.collapsed ? 'menu' : 'menu_open'}</md-icon>\n <span>${i18next.t('text.collapse-menu')}</span>\n </button>\n ${this.renderMenus(menus || [], activeTopLevel, activeMenu)} ${this.renderSystem()} ${this.renderPopped()}\n `\n }\n\n /**\n * 시스템 항목 — **바닥에 붙는다.**\n *\n * 프로필 · 로그아웃 · 설정은 하루에 한 번 여는 것이고, 일하는 화면들과 같은 깊이에 있으면\n * 자주 여는 것을 밀어낸다. 그래서 메뉴 끝에 두고 사이를 빈 자리로 벌린다.\n *\n * 목록이 비면 이 자리도 없다 — 각 패키지가 권한이 없으면 등록 자체를 안 하므로, 비어 있는\n * 것은 「볼 것이 없다」는 뜻이다. 빈 묶음 이름만 남겨 두면 눌러도 아무 일이 없다.\n *\n * 펼친 상태에서도 팝업으로 연다. 이 항목들은 **주소가 아니라 함수**라, 그 자리에서 펼치면\n * 옆의 하위 메뉴들과 같은 모양이 되어 「눌러도 화면이 안 바뀌는 메뉴」로 읽힌다.\n */\n private renderSystem(): TemplateResult | typeof nothing {\n if (!this.morendas.length) {\n return nothing\n }\n\n /*\n * **보통 메뉴 줄과 같은 모양으로 그린다.**\n *\n * 전에는 button.railitem 으로 따로 그렸고, 그 스타일이 레일에만 있어서 다른 모양에서는\n * 꾸밈이 없었다. ul > li > a 로 두면 레일과 기존 모양이 각자 가진 규칙이 그대로 붙는다 —\n * 여백 · 색 · hover · 접힘 · 화살표 · 팝업 표시까지.\n *\n * `li` 에 `menu` 를 달아도 `.menu` 속성은 주지 않는다. `renderMenus` 의 클릭 처리기가\n * `menuElement?.menu` 로 가르므로, 그것이 없으면 이 줄을 건드리지 않고 아래 `@click` 이 받는다.\n */\n /* 팝업으로 열리는 모양에서는 팝업 상태로, 그 밖에서는 다른 최상위와 같은 상태로. */\n const open = childrenOpenAs(this.mode) === 'popup' ? this.popped === SYSTEM : this.activeTopLevel === SYSTEM\n\n return html`\n <div class=\"railspacer\"></div>\n <div group-label>${i18next.t('text.system')}</div>\n <ul>\n <li menu ?active=${open} ?popped=${childrenOpenAs(this.mode) === 'popup' && open} ?top=${true}>\n <a href=\"#\" title=${i18next.t('text.manage')} @click=${(e: MouseEvent) => this.openSystem(e)}>\n <md-icon filled>admin_panel_settings</md-icon>\n <span>${i18next.t('text.manage')}</span>\n <md-icon filled submenu-button></md-icon>\n </a>\n <!--\n 하위를 **그 자리에** 둔다 — 다른 최상위와 같은 규칙이다.\n\n 펼친 상태에서 팝업으로 열면 이 줄만 다르게 굴고, 특히 메뉴를 감추는 모드(모바일에서\n 쓴다)에서는 화면 어딘가에 고정된 팝업이 뜰 자리가 없다.\n\n 접힌 레일에서는 이 목록이 감춰지고(56px 안에 들어가지 않는다) 팝업이 대신 뜬다 —\n 그것도 다른 최상위와 같다.\n -->\n <ul>\n ${this.morendas.map(\n morenda => html`<li>\n <a href=\"#\" @click=${(e: Event) => this.runMorenda(e, morenda)}>\n ${morenda.icon}<span>${morenda.name}</span>\n </a>\n </li>`\n )}\n </ul>\n </li>\n </ul>\n `\n }\n\n /** 시스템 항목은 주소가 아니라 함수다. 이동을 막고 부른다. */\n private runMorenda(e: Event, morenda: any) {\n e.preventDefault()\n this.popped = undefined\n morenda.action?.()\n }\n\n /**\n * 시스템 줄을 누른다 — **다른 최상위와 똑같은 두 갈래다.**\n *\n * 한때 시스템만 자기 상태(`popped`)를 따로 썼다. 다른 최상위는 `activeTopLevel` 하나를 나눠\n * 쓰는데 시스템만 그 밖에 있었으니, **다른 묶음이 열려 있어도 시스템이 함께 열렸다.** 한 번에\n * 하나만 열리는 규칙에서 이 줄만 빠져 있었다.\n *\n * 이제 같은 상태를 쓴다. 접힌 레일에서만 팝업이고, 그때는 다른 최상위도 팝업이다.\n */\n private openSystem(e: MouseEvent) {\n e.preventDefault()\n /* 이 클릭이 document 로 올라가면 팝업이 바로 닫힌다. */\n e.stopPropagation()\n\n if (childrenOpenAs(this.mode) === 'popup') {\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n\n this._popLeft = this.getBoundingClientRect().right + 8\n this._popPrefer = rect.top\n this._popTop = rect.top\n this.popped = this.popped === SYSTEM ? undefined : SYSTEM\n return\n }\n\n /* 그 자리에서 열린다 — 하나만 열리는 규칙을 함께 쓴다. */\n this.popped = undefined\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === SYSTEM ? undefined : SYSTEM\n })\n )\n }\n\n /**\n * 접힌 상태에서 하위 메뉴를 팝업으로 낸다.\n *\n * 그 자리에서 열지 않는 이유는 56px 안에 들여쓴 목록이 들어가지 않기 때문이다. 접힌 레일에서\n * 하위를 열 길이 없으면 **접는 순간 화면의 절반에 갈 수 없게 된다** — 접기가 기능이 아니라\n * 함정이 된다.\n */\n private renderPopped(): TemplateResult | typeof nothing {\n const menu = this.popped\n\n if (!menu || childrenOpenAs(this.mode) !== 'popup') {\n return nothing\n }\n\n const system = menu === SYSTEM\n\n return html`\n <!--\n 노브 — 팝업이 어느 항목에서 열렸는지 가리킨다.\n\n **팝업 안에 두면 안 보인다.** 팝업은 목록이 길 때 스크롤해야 해서 overflow-y: auto 인데,\n 그러면 브라우저가 overflow-x 도 auto 로 계산한다. 노브는 팝업의 왼쪽 선 밖으로 나가야\n 하므로 그 스크롤 박스에 잘린다. 그래서 형제로 두고 화면 좌표로 세운다.\n -->\n <div class=\"railknob\" hidden></div>\n <div class=\"railpop\" style=\"left:${this._popLeft}px; top:${this._popTop}px\">\n <div class=\"phead\">${system ? i18next.t('text.manage') : menu.label || menu.name}</div>\n <!--\n 하위를 **레일 안쪽과 똑같이 그린다.**\n\n 한때 팝업 줄을 따로 만들었다(PopRow). 그래서 옮겨 적을 것을 세 번 빠뜨렸다 — 건수 ·\n 지금 페이지 · 그리고 처음에 이름과 아이콘. 빠뜨려도 오류가 나지 않아 화면을 보고서야\n 알았다.\n\n 같은 함수로 그리면 옮겨 적을 것이 없다. 앞으로 하위에 무엇을 더해도 팝업이 따라온다.\n -->\n ${system ? this.renderSystemRows() : this.renderMenus(menu.menus || [], this.activeMenu, this.activeMenu, 1)}\n </div>\n `\n }\n\n /**\n * 시스템 항목 줄들 — **이것만 따로 그린다.**\n *\n * morenda 는 주소가 아니라 함수를 갖는다(`action`). 아이콘과 이름도 Lit 템플릿이라 `Menu` 모양이\n * 아니다. 억지로 `Menu` 로 바꿔 넘기면 그 변환이 또 옮겨 적는 자리가 된다.\n */\n private renderSystemRows(): TemplateResult {\n return html`\n <ul>\n ${this.morendas.map(\n morenda => html`<li>\n <a href=\"#\" @click=${(e: Event) => this.runMorenda(e, morenda)}>${morenda.icon}<span>${morenda.name}</span></a>\n </li>`\n )}\n </ul>\n `\n }\n\n /**\n * 팝업이 화면 안에 들어가게 세로 자리를 맞춘다.\n *\n * ── 왜 그린 뒤에 하나 ───────────────────────────────────────────────────\n * 높이를 알아야 맞출 수 있고, 높이는 그려 봐야 안다. 항목마다 하위 수가 다르다 — 「기준정보」는\n * 열여섯 줄이고 「배우기」는 한 줄이다.\n *\n * ── 규칙 ────────────────────────────────────────────────────────────────\n * 누른 항목의 윗선에서 시작하는 것이 바람이다. 그대로 두면 아래쪽 항목에서 팝업이 화면 밖으로\n * 나간다. 그래서 **아래로 넘치는 만큼 위로 올린다.** 그래도 안 들어가면 위 여백에 붙이고\n * 그때만 스크롤한다.\n *\n * 자리를 반응 상태로 두지 않고 style 에 바로 쓴다 — 값이 바뀔 때마다 다시 그리면 그 렌더에서\n * 또 재게 되고, 재는 값이 그리기에 달려 있으므로 서로 물린다.\n */\n private fitPopup() {\n const pop = this.renderRoot?.querySelector?.('.railpop') as HTMLElement | null\n\n if (!pop) {\n return\n }\n\n const margin = OxMenuPortrait.POP_MARGIN\n const height = pop.offsetHeight\n const room = window.innerHeight - margin * 2\n\n /* 화면보다 크면 위에 붙이고 스크롤한다. 그 아래 다시 재지 않는다. */\n const top = height >= room ? margin : Math.max(margin, Math.min(this._popPrefer, window.innerHeight - margin - height))\n\n if (Math.round(top) !== Math.round(this._popTop)) {\n this._popTop = top\n }\n\n pop.style.top = `${top}px`\n this.fitKnob(pop, top)\n }\n\n /**\n * 노브를 그 항목의 가운데 높이에 둔다.\n *\n * ── 범위를 벗어나면 감추지 않고 끝에 붙인다 ──────────────────────────────\n * 팝업이 위로 밀리는 것은 **아래에 자리가 없어서**이고, 그만큼만 밀린다. 그래서 그 항목은\n * 거의 항상 팝업의 세로 범위 안으로 들어온다. 벗어나는 것은 라운드 모서리에 걸치는 몇 px\n * 뿐이다. 그때 감추면 **자리가 좁을 때만 표시가 사라진다** — 가장 필요한 순간이다.\n *\n * 그래서 모서리 안쪽으로 붙인다. 정확히 그 줄을 가리키지 못해도 「위쪽」·「아래쪽」은\n * 가리키고, 어느 항목인지는 그 항목의 popped 표시가 말한다.\n */\n private fitKnob(pop: HTMLElement, popTop: number) {\n const knob = this.renderRoot?.querySelector?.('.railknob') as HTMLElement | null\n /* 최상위 항목이거나 시스템 단추다 — 둘 다 popped 를 단다. */\n const item = this.renderRoot?.querySelector?.('[popped]') as HTMLElement | null\n\n if (!knob) {\n return\n }\n\n if (!item) {\n knob.hidden = true\n return\n }\n\n const rect = item.getBoundingClientRect()\n const centre = rect.top + rect.height / 2 - popTop\n /* 라운드 모서리에 걸치면 반쪽만 보인다. 그 안쪽까지만 간다. */\n const inset = 14\n const within = Math.max(inset, Math.min(centre, pop.offsetHeight - inset))\n /* 정사각의 반. 가운데가 그 줄의 가운데에 오게 한다. */\n const half = knob.offsetHeight / 2 || 5\n\n knob.hidden = false\n /* 팝업의 왼쪽 선에 반쯤 물리게 — 선이 그 자리에서 끊긴 것처럼 보인다. */\n knob.style.left = `${this._popLeft - half}px`\n knob.style.top = `${popTop + within - half}px`\n }\n\n protected updated() {\n this.fitPopup()\n }\n\n /** 접기/펼치기는 `ox-menu-part` 가 한다 — 폭과 저장이 그쪽 것이다. 여기서는 뜻만 올린다. */\n private toggleCollapsed(e: MouseEvent) {\n e.stopPropagation()\n this.popped = undefined\n this.dispatchEvent(new CustomEvent('collapse-toggle', { bubbles: true, composed: true }))\n }\n\n firstUpdated() {\n this.renderRoot.addEventListener('click', (e: Event) => {\n const menuElement = (e.target as Element)!.closest('[menu]')\n\n /*\n * 팝업 안을 눌렀으면 팝업을 닫는다 — 이동은 라우터가 한다(막지 않는다).\n *\n * 한때 팝업 컨테이너에 stopPropagation 을 걸어 두었다. 그러면 라우터까지 막혀 **페이지\n * 전체가 다시 읽혔다.** 막지 않고 닫기만 한다.\n */\n if ((e.target as Element)!.closest('.railpop')) {\n this.popped = undefined\n }\n\n /*\n * `active-toplevel` 은 **최상위에서만** 나간다.\n *\n * `closest('[menu]')` 는 가장 가까운 줄을 집으므로 하위를 누르면 하위가 잡힌다. 그것을\n * 그대로 올리면 「열린 묶음」이 하위로 바뀌어, 그 묶음이 닫힌 것처럼 된다. 지금까지는 하위\n * 클릭이 곧 이동이라 주소가 바뀌며 저절로 나았지만, 나을 이유가 없는 자리다.\n */\n //@ts-ignore\n if (menuElement?.menu && menuElement.hasAttribute('top')) {\n //@ts-ignore\n let menu = menuElement.menu\n\n /*\n * 접힌 레일에서 하위가 있는 항목은 **팝업으로 연다.**\n *\n * 이 자리에서 갈라야 한다 — 아래로 흘려 보내면 `active-toplevel` 이 나가고, 그러면\n * 56px 안에서 아무것도 안 보이는 채로 「열렸다」가 된다. 팝업이 접힌 레일에서 하위로\n * 가는 유일한 길이다.\n */\n /*\n * 하위가 있는 최상위를 눌렀다. 무엇을 할지는 **모양이 정한다**(§`menu-mode.ts`).\n *\n * 팝업으로 열리는 모양 팝업을 띄운다 (접힌 레일)\n * 이동하지 않는 모양 그 자리에서 펼치기만 한다 (서랍)\n * 나머지 이동하면서 펼친다 — 아래로 흘려 보낸다\n */\n if (menu.menus?.length && !topNavigates(this.mode) && childrenOpenAs(this.mode) === 'inline') {\n e.stopPropagation()\n e.preventDefault()\n\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === menu ? undefined : menu\n })\n )\n\n return\n }\n\n if (menu.menus?.length && childrenOpenAs(this.mode) === 'popup') {\n e.stopPropagation()\n e.preventDefault()\n\n const rect = (menuElement as HTMLElement).getBoundingClientRect()\n\n /*\n * **레일의 오른쪽을 기준으로 띄운다** — 누른 항목의 오른쪽이 아니다.\n *\n * 항목은 레일 안쪽 여백만큼 들어가 있어서, 항목 기준으로 재면 팝업이 레일 끝에 정확히\n * 붙는다(56px 레일에서 left 가 56 이 됐다). 붙으면 레일을 덮은 것처럼 보인다.\n *\n * 틈은 8px 이다. 16px 은 떨어져 떠 있는 것처럼 보였고, 0 은 레일에 얹힌 것처럼\n * 보였다. 8px 이 「레일에서 열린 다른 면」으로 읽히는 자리다.\n */\n this._popLeft = this.getBoundingClientRect().right + 8\n /*\n * 누른 항목의 윗선에서 시작하는 것은 **바람**일 뿐이다. 실제 자리는 그린 뒤 높이를\n * 재서 정한다(`fitPopup`) — 여기서 고정하면 항목이 아래쪽일 때 팝업이 화면 밖으로\n * 나가거나 열여섯 줄짜리 목록에 스크롤이 생긴다.\n */\n this._popPrefer = rect.top\n this._popTop = rect.top\n this.popped = this.popped === menu ? undefined : menu\n\n return\n }\n\n /*\n * ── 화살표가 토글이고, 글자가 이동이다 ────────────────────────────\n * 최상위 항목은 두 일을 한다 — 자기 화면으로 가고, 하위를 펼친다. 글자를 누르면 링크가\n * 주소를 바꾸므로 **접기가 살아남을 수 없다** — 주소가 바뀌면 그 주소의 메뉴가 다시\n * 열린다(§`ox-menu-part` 의 `_closedByUser`).\n *\n * 그래서 접는 자리를 화살표로 옮긴다. 화살표는 이미 「펼침」을 그리고 있어서 사람이 그것을\n * 누르려 한다. 누르면 이동하지 않고 접기만 한다.\n */\n const onCaret = !!(e.target as Element)?.closest?.('[submenu-button]')\n\n if (!menu.path || onCaret) {\n /* protect to act move to href. */\n e.stopPropagation()\n e.preventDefault()\n }\n\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === menu ? undefined : menu\n })\n )\n }\n\n /* to respond even if current acting menu is selected */\n let href = (e.target as HTMLAnchorElement)!.href\n href && location.href === href && navigate(href + '#force', true)\n })\n\n /* to hide scrollbar during transition */\n this.renderRoot.addEventListener('transitionstart', e => {\n ;(e.target as Element).removeAttribute('settled')\n })\n this.renderRoot.addEventListener('transitionend', e => {\n ;(e.target as Element).setAttribute('settled', '')\n })\n }\n}\n"]}
1
+ {"version":3,"file":"ox-menu-portrait.js","sourceRoot":"","sources":["../../src/ox-menu-portrait.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { html, LitElement, nothing, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { asyncReplace } from 'lit/directives/async-replace.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { navigate, store } from '@operato/shell'\nimport { ScrollbarStyles } from '@operato/styles'\n\nimport { Menu } from './types.js'\n\nimport { MenuPortraitStyles } from './menu-portrait-styles.js'\nimport { childrenOpenAs, menuMode, showsLabels, topNavigates } from './menu-mode.js'\n\n/** A stream of counts, as opposed to one value or a ready-made directive. */\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return typeof (value as any)?.[Symbol.asyncIterator] === 'function'\n}\n\n/**\n * Nothing is waiting.\n *\n * Only a real zero counts. An empty string is a count that has not arrived, and the pill is hidden\n * for that case by `[badge]:empty` — treating it as zero here would draw a grey pill on load.\n */\nfunction isZero(value: unknown): boolean {\n return value === 0 || value === '0'\n}\n\n/**\n * 시스템 항목을 담는 가짜 최상위.\n *\n * 팝업이 「어느 최상위에서 열렸나」를 하나의 값(`popped`)으로 들고 있어서, 시스템도 최상위인\n * 것처럼 다룬다. 그래야 노브와 자리 계산이 한 벌로 남는다.\n */\nconst SYSTEM = { name: 'ox-menu-system' } as Menu\n\n@customElement('ox-menu-portrait')\nexport class OxMenuPortrait extends localize(i18next)(LitElement) {\n static styles = [ScrollbarStyles, MenuPortraitStyles]\n\n @property({ type: Array }) menus?: Menu[]\n @property({ type: Object }) activeTopLevel?: Menu\n @property({ type: Object }) activeMenu?: Menu\n @property({ type: String }) path!: string\n\n /**\n * 레일 모드 — 접을 수 있고, 접히면 하위가 팝업으로 뜬다.\n *\n * **옵트인이다.** 켜지 않은 앱은 지금과 한 글자도 다르지 않다. 모양이 함께 바뀌는 것은 취향이\n * 아니라 요건이다 — 기존 모양은 줄마다 폭 전체를 쓰는 밑줄이 있고 왼쪽 여백이 16px 이라 56px\n * 에서 무너진다(§`menu-rail-styles.ts`).\n */\n @property({ type: Boolean, reflect: true }) rail = false\n\n /**\n * 접힘 — 아이콘만.\n *\n * **주인은 이 컴포넌트가 아니다.** 폭을 정하는 요소는 `ox-menu-part` 이고(그쪽에 `min-width`\n * 가 있다), 셸의 리사이즈 손잡이도 그 요소에 인라인 폭을 쓴다. 그래서 상태와 저장은 그쪽이\n * 갖고 여기는 받아서 그린다.\n */\n @property({ type: Boolean, reflect: true }) collapsed = false\n\n /**\n * 서랍인가 — 화면 위에 겹쳐 떴다가 닫히는 메뉴.\n *\n * 그때 최상위는 **펼치기만** 한다. 누르는 순간 서랍이 닫히면 그 묶음의 나머지 하위를 볼\n * 기회가 없다(§`ox-menu-part` 의 `drawer`).\n */\n @property({ type: Boolean, reflect: true }) drawer = false\n\n /**\n * 지금 어떤 모양으로 서 있나 — 세 플래그에서 하나로 모은다.\n *\n * 이 값과 그에 딸린 두 답(`하위를 어디에` · `최상위가 이동하나`)은 `menu-mode.ts` 에 있고\n * 시험으로 못박혀 있다. 여기서 그때그때 판단하지 않는다 — 그렇게 하다가 네 번 깨졌다.\n */\n private get mode() {\n return menuMode({ rail: this.rail, collapsed: this.collapsed, drawer: this.drawer })\n }\n\n /** 접힌 상태에서 팝업으로 열린 최상위 메뉴. 시스템 팝업이면 SYSTEM 이다. */\n @state() private popped?: Menu\n\n /**\n * 시스템 항목 — 프로필 · 로그아웃 · 설정처럼 **앱이 아니라 프레임워크가 붙이는 것**들.\n *\n * 하드코딩하지 않는다. 각 패키지가 부팅할 때 `ADD_MORENDA` 로 등록하고(권한이 없으면 등록\n * 자체를 안 한다), 우리는 그 목록을 그대로 그린다. 그래서 목록이 비면 이 자리도 없다.\n */\n /*\n * private 을 두지 않는다 — 시험이 이 목록을 넣어 보고 「항목이 없으면 자리도 없다」를 확인한다.\n * 앱에서는 store 가 채운다(아래 connectedCallback).\n */\n @state() morendas: any[] = []\n\n private _unsubscribeStore?: () => void\n\n /** 팝업 자리 — 누른 항목의 오른쪽. 세로는 그린 뒤 재서 맞춘다(§`fitPopup`). */\n private _popLeft = 0\n private _popTop = 0\n /** 누른 항목의 윗선. 화면에 들어가면 이 자리를 쓴다. */\n private _popPrefer = 0\n\n /** 팝업이 화면 안에 들어가게 세로 자리를 맞춘다. 팝업 밖 여백. */\n private static readonly POP_MARGIN = 8\n\n /**\n * 팝업 밖을 누르면 닫는다.\n *\n * ── 팝업 안의 클릭을 막지 않는다 ────────────────────────────────────────\n * 한때 팝업 컨테이너에 stopPropagation 을 걸어 두었다. 팝업 안을 눌러도 이 처리기가 받아\n * 곧바로 닫히던 것을 막으려던 것인데, 그것이 **셸의 라우터까지 막았다.**\n *\n * 라우터는 document.body 에서 클릭을 받아 composedPath 로 A 를 찾고 preventDefault 한 뒤\n * 화면만 바꾼다(@operato/shell 의 installRouter). 클릭이 거기까지 못 가면 브라우저의 기본\n * 이동이 그대로 일어나 **페이지 전체가 다시 읽혔다.**\n *\n * 그래서 막지 않고, 여기서 「팝업 안이면 닫지 않는다」로 가른다. 줄을 누를 때 닫는 일은 그\n * 줄의 처리기가 한다.\n */\n private _onDocClick = (e: MouseEvent) => {\n if (!this.popped) {\n return\n }\n\n const pop = this.renderRoot?.querySelector?.('.railpop')\n\n if (pop && e.composedPath().includes(pop)) {\n return\n }\n\n this.popped = undefined\n }\n\n connectedCallback() {\n super.connectedCallback()\n document.addEventListener('click', this._onDocClick)\n\n /*\n * morenda 는 각 패키지의 부팅에서 **비동기로** 등록된다. 한 번 읽고 끝내면 늦게 붙는 것이\n * 빠진다. 길이가 바뀔 때만 다시 그린다 — 이 목록은 늘어나기만 한다.\n */\n const read = () => ((store.getState() as any)?.more?.morendas || []) as any[]\n\n this.morendas = read()\n this._unsubscribeStore = store.subscribe(() => {\n const next = read()\n if (next.length !== this.morendas.length) {\n this.morendas = next\n }\n })\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n document.removeEventListener('click', this._onDocClick)\n this._unsubscribeStore?.()\n }\n\n /**\n * 마우스를 올렸을 때 뜨는 글.\n *\n * ── 접혔을 때는 이름이 먼저다 ───────────────────────────────────────────\n * 접히면 아이콘만 남으므로 **이름을 모른다.** 그때는 이름을 윗줄에 얹고 설명을 아랫줄에 둔다.\n * 펼쳐져 있으면 이름은 이미 옆에 있으니 설명만 낸다.\n *\n * 줄바꿈으로 잇는다 — 대시로 이으면 설명 안의 대시와 겹쳐 「A — B — C」가 된다.\n *\n * 설명도 없고 이름도 안 보이는 경우가 아니면 아무것도 내지 않는다. 이름을 그대로 되풀이하는\n * 툴팁은 소음이다.\n */\n private hoverText(label?: unknown, description?: string) {\n const name = typeof label === 'string' ? label : undefined\n\n if (showsLabels(this.mode)) {\n return description || undefined\n }\n\n return description && name ? `${name}\\n${description}` : description || name\n }\n\n /**\n * @param depth 0 이면 최상위다. **하위도 `active` 를 달기 때문에** 깊이를 값으로 넘긴다 —\n * CSS 로 「최상위인 li」를 가리려면 `:not(li li)` 같은 것이 필요하고, 그건 읽는 사람이\n * 한 번 더 생각해야 하는 선택자다.\n */\n /**\n * The count pill next to a menu label.\n *\n * Zero is drawn, and drawn quietly.\n *\n * The pill is the \"there is something here for you\" signal, and 작성 중 0 wore the same filled\n * accent as 할 일 9 — same colour rgb(12,122,76), same 28x17 box. Four of them in a column read\n * as four things waiting. Hiding zero is not the answer either: an empty slot cannot be told\n * apart from a count that has not arrived yet. So zero keeps its place and loses the signal.\n *\n * ── Why this method exists ────────────────────────────────────────────\n * Callers used to hand over a Lit directive — `badge: () => asyncReplace(counts(name))` — which\n * left this component with something it could only drop into a slot. It could not see the value,\n * so it could not decide how to draw it. The component that draws the pill has to own how the\n * pill looks, so it now takes the stream and wraps it here.\n *\n * A caller that still passes a ready-made directive keeps working, minus the quiet zero.\n */\n private renderBadge(badge: unknown) {\n if (badge === false || badge === null || badge === undefined) {\n return nothing\n }\n\n if (isAsyncIterable(badge)) {\n return asyncReplace(badge, value => html`<div badge ?zero=${isZero(value)}>${value}</div>`)\n }\n\n return html`<div badge ?zero=${isZero(badge)}>${badge}</div>`\n }\n\n renderMenus(menus: Menu[], activeTopLevel?: Menu, activeMenu?: Menu, depth = 0): TemplateResult | typeof nothing {\n if (menus.length == 0) {\n return nothing\n }\n\n return html`\n <ul>\n ${menus.map(menu => {\n var { type, name, active, path, label = name, icon, menus = [], description } = menu\n active = active && typeof active === 'function' ? active.call(menu, { path: this.path }) : false\n /*\n * 건수는 값이거나 값을 내는 함수다. 함수의 반환은 화면에 그릴 수 있는 무엇이든 온다 —\n * 숫자이거나, 갱신될 때마다 바뀌는 Lit 디렉티브다. 그래서 따로 담는다.\n */\n const badge: unknown = typeof menu.badge === 'function' ? menu.badge.call(menu) : (menu.badge ?? false)\n\n return type == 'group'\n ? html`<li group-label>${label}</li>`\n : html`\n <!--\n popped — **지금 팝업을 연 항목**이다. active(지금 페이지)와 다른 뜻이라\n 다른 표시를 준다. 접힌 레일에서 강조된 아이콘은 「지금 페이지」만 뜻하므로,\n 이 표시가 없으면 어느 항목의 팝업인지 알 수 없다.\n -->\n <!--\n active 와 current 는 뜻이 다르다.\n\n 최상위의 active 하위가 펼쳐져 있다 (여닫힘)\n 하위의 active 이것이 지금 페이지다\n current 이것이 지금 페이지다 — 어느 층이든\n\n active 하나로 두면 「펼쳐져 있다」와 「지금 페이지다」에 같은 강조가 걸려,\n 최상위와 그 안의 한 줄이 나란히 강조된다.\n -->\n <li\n ?active=${activeTopLevel ? menu === activeTopLevel : active}\n ?current=${!!activeMenu && menu === activeMenu}\n ?popped=${this.popped === menu}\n ?top=${depth === 0}\n .menu=${menu}\n menu\n >\n <a href=${path || '#'} title=${ifDefined(this.hoverText(label, description))}>\n <md-icon filled>${icon || 'fiber_manual_record'}</md-icon>\n <span>${label}</span>${this.renderBadge(badge)}\n ${menus.length > 0 ? html` <md-icon filled submenu-button></md-icon> ` : html``}\n </a>\n ${menus && this.renderMenus(menus || [], activeMenu, activeMenu, depth + 1)}\n </li>\n `\n })}\n </ul>\n `\n }\n\n render() {\n const { menus, activeTopLevel, activeMenu } = this\n\n /*\n * 레일이 아니어도 시스템 자리는 그린다.\n *\n * 한때 이것을 레일 가지 안에만 두었다. 그래서 **메뉴 감추기를 켜면 「관리」 한 줄이\n * 사라졌다** — 그 설정이 레일을 끄기 때문이다.\n *\n * 레일을 감추기와 배타로 둔 것은 **접기** 때문이다. 이미 숨은 것을 접을 수는 없다. 그 판단은\n * 접기에만 맞고, 시스템 자리는 접기와 아무 상관이 없다. 관계없는 것을 한 플래그에 묶었다.\n */\n if (!this.rail) {\n return html`${this.renderMenus(menus || [], activeTopLevel, activeMenu)} ${this.renderSystem()}\n ${this.renderPopped()}`\n }\n\n return html`\n <!--\n 접기 단추 — 맨 위에 둔다. 접힌 뒤 다시 펼치는 길이 같은 자리에 있어야 한다.\n -->\n <button\n class=\"railtoggle\"\n title=${i18next.t(this.collapsed ? 'text.expand-menu' : 'text.collapse-menu')}\n @click=${(e: MouseEvent) => this.toggleCollapsed(e)}\n >\n <md-icon>${this.collapsed ? 'menu' : 'menu_open'}</md-icon>\n <span>${i18next.t('text.collapse-menu')}</span>\n </button>\n ${this.renderMenus(menus || [], activeTopLevel, activeMenu)} ${this.renderSystem()} ${this.renderPopped()}\n `\n }\n\n /**\n * 시스템 항목 — **바닥에 붙는다.**\n *\n * 프로필 · 로그아웃 · 설정은 하루에 한 번 여는 것이고, 일하는 화면들과 같은 깊이에 있으면\n * 자주 여는 것을 밀어낸다. 그래서 메뉴 끝에 두고 사이를 빈 자리로 벌린다.\n *\n * 목록이 비면 이 자리도 없다 — 각 패키지가 권한이 없으면 등록 자체를 안 하므로, 비어 있는\n * 것은 「볼 것이 없다」는 뜻이다. 빈 묶음 이름만 남겨 두면 눌러도 아무 일이 없다.\n *\n * 펼친 상태에서도 팝업으로 연다. 이 항목들은 **주소가 아니라 함수**라, 그 자리에서 펼치면\n * 옆의 하위 메뉴들과 같은 모양이 되어 「눌러도 화면이 안 바뀌는 메뉴」로 읽힌다.\n */\n private renderSystem(): TemplateResult | typeof nothing {\n if (!this.morendas.length) {\n return nothing\n }\n\n /*\n * **보통 메뉴 줄과 같은 모양으로 그린다.**\n *\n * 전에는 button.railitem 으로 따로 그렸고, 그 스타일이 레일에만 있어서 다른 모양에서는\n * 꾸밈이 없었다. ul > li > a 로 두면 레일과 기존 모양이 각자 가진 규칙이 그대로 붙는다 —\n * 여백 · 색 · hover · 접힘 · 화살표 · 팝업 표시까지.\n *\n * `li` 에 `menu` 를 달아도 `.menu` 속성은 주지 않는다. `renderMenus` 의 클릭 처리기가\n * `menuElement?.menu` 로 가르므로, 그것이 없으면 이 줄을 건드리지 않고 아래 `@click` 이 받는다.\n */\n /* 팝업으로 열리는 모양에서는 팝업 상태로, 그 밖에서는 다른 최상위와 같은 상태로. */\n const open = childrenOpenAs(this.mode) === 'popup' ? this.popped === SYSTEM : this.activeTopLevel === SYSTEM\n\n return html`\n <div class=\"railspacer\"></div>\n <div group-label>${i18next.t('text.system')}</div>\n <ul>\n <li menu ?active=${open} ?popped=${childrenOpenAs(this.mode) === 'popup' && open} ?top=${true}>\n <a href=\"#\" title=${i18next.t('text.manage')} @click=${(e: MouseEvent) => this.openSystem(e)}>\n <md-icon filled>admin_panel_settings</md-icon>\n <span>${i18next.t('text.manage')}</span>\n <md-icon filled submenu-button></md-icon>\n </a>\n <!--\n 하위를 **그 자리에** 둔다 — 다른 최상위와 같은 규칙이다.\n\n 펼친 상태에서 팝업으로 열면 이 줄만 다르게 굴고, 특히 메뉴를 감추는 모드(모바일에서\n 쓴다)에서는 화면 어딘가에 고정된 팝업이 뜰 자리가 없다.\n\n 접힌 레일에서는 이 목록이 감춰지고(56px 안에 들어가지 않는다) 팝업이 대신 뜬다 —\n 그것도 다른 최상위와 같다.\n -->\n <ul>\n ${this.morendas.map(\n morenda => html`<li>\n <a href=\"#\" @click=${(e: Event) => this.runMorenda(e, morenda)}>\n ${morenda.icon}<span>${morenda.name}</span>\n </a>\n </li>`\n )}\n </ul>\n </li>\n </ul>\n `\n }\n\n /** 시스템 항목은 주소가 아니라 함수다. 이동을 막고 부른다. */\n private runMorenda(e: Event, morenda: any) {\n e.preventDefault()\n this.popped = undefined\n morenda.action?.()\n }\n\n /**\n * 시스템 줄을 누른다 — **다른 최상위와 똑같은 두 갈래다.**\n *\n * 한때 시스템만 자기 상태(`popped`)를 따로 썼다. 다른 최상위는 `activeTopLevel` 하나를 나눠\n * 쓰는데 시스템만 그 밖에 있었으니, **다른 묶음이 열려 있어도 시스템이 함께 열렸다.** 한 번에\n * 하나만 열리는 규칙에서 이 줄만 빠져 있었다.\n *\n * 이제 같은 상태를 쓴다. 접힌 레일에서만 팝업이고, 그때는 다른 최상위도 팝업이다.\n */\n private openSystem(e: MouseEvent) {\n e.preventDefault()\n /* 이 클릭이 document 로 올라가면 팝업이 바로 닫힌다. */\n e.stopPropagation()\n\n if (childrenOpenAs(this.mode) === 'popup') {\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()\n\n this._popLeft = this.getBoundingClientRect().right + 8\n this._popPrefer = rect.top\n this._popTop = rect.top\n this.popped = this.popped === SYSTEM ? undefined : SYSTEM\n return\n }\n\n /* 그 자리에서 열린다 — 하나만 열리는 규칙을 함께 쓴다. */\n this.popped = undefined\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === SYSTEM ? undefined : SYSTEM\n })\n )\n }\n\n /**\n * 접힌 상태에서 하위 메뉴를 팝업으로 낸다.\n *\n * 그 자리에서 열지 않는 이유는 56px 안에 들여쓴 목록이 들어가지 않기 때문이다. 접힌 레일에서\n * 하위를 열 길이 없으면 **접는 순간 화면의 절반에 갈 수 없게 된다** — 접기가 기능이 아니라\n * 함정이 된다.\n */\n private renderPopped(): TemplateResult | typeof nothing {\n const menu = this.popped\n\n if (!menu || childrenOpenAs(this.mode) !== 'popup') {\n return nothing\n }\n\n const system = menu === SYSTEM\n\n return html`\n <!--\n 노브 — 팝업이 어느 항목에서 열렸는지 가리킨다.\n\n **팝업 안에 두면 안 보인다.** 팝업은 목록이 길 때 스크롤해야 해서 overflow-y: auto 인데,\n 그러면 브라우저가 overflow-x 도 auto 로 계산한다. 노브는 팝업의 왼쪽 선 밖으로 나가야\n 하므로 그 스크롤 박스에 잘린다. 그래서 형제로 두고 화면 좌표로 세운다.\n -->\n <div class=\"railknob\" hidden></div>\n <div class=\"railpop\" style=\"left:${this._popLeft}px; top:${this._popTop}px\">\n <div class=\"phead\">${system ? i18next.t('text.manage') : menu.label || menu.name}</div>\n <!--\n 하위를 **레일 안쪽과 똑같이 그린다.**\n\n 한때 팝업 줄을 따로 만들었다(PopRow). 그래서 옮겨 적을 것을 세 번 빠뜨렸다 — 건수 ·\n 지금 페이지 · 그리고 처음에 이름과 아이콘. 빠뜨려도 오류가 나지 않아 화면을 보고서야\n 알았다.\n\n 같은 함수로 그리면 옮겨 적을 것이 없다. 앞으로 하위에 무엇을 더해도 팝업이 따라온다.\n -->\n ${system ? this.renderSystemRows() : this.renderMenus(menu.menus || [], this.activeMenu, this.activeMenu, 1)}\n </div>\n `\n }\n\n /**\n * 시스템 항목 줄들 — **이것만 따로 그린다.**\n *\n * morenda 는 주소가 아니라 함수를 갖는다(`action`). 아이콘과 이름도 Lit 템플릿이라 `Menu` 모양이\n * 아니다. 억지로 `Menu` 로 바꿔 넘기면 그 변환이 또 옮겨 적는 자리가 된다.\n */\n private renderSystemRows(): TemplateResult {\n return html`\n <ul>\n ${this.morendas.map(\n morenda => html`<li>\n <a href=\"#\" @click=${(e: Event) => this.runMorenda(e, morenda)}>${morenda.icon}<span>${morenda.name}</span></a>\n </li>`\n )}\n </ul>\n `\n }\n\n /**\n * 팝업이 화면 안에 들어가게 세로 자리를 맞춘다.\n *\n * ── 왜 그린 뒤에 하나 ───────────────────────────────────────────────────\n * 높이를 알아야 맞출 수 있고, 높이는 그려 봐야 안다. 항목마다 하위 수가 다르다 — 「기준정보」는\n * 열여섯 줄이고 「배우기」는 한 줄이다.\n *\n * ── 규칙 ────────────────────────────────────────────────────────────────\n * 누른 항목의 윗선에서 시작하는 것이 바람이다. 그대로 두면 아래쪽 항목에서 팝업이 화면 밖으로\n * 나간다. 그래서 **아래로 넘치는 만큼 위로 올린다.** 그래도 안 들어가면 위 여백에 붙이고\n * 그때만 스크롤한다.\n *\n * 자리를 반응 상태로 두지 않고 style 에 바로 쓴다 — 값이 바뀔 때마다 다시 그리면 그 렌더에서\n * 또 재게 되고, 재는 값이 그리기에 달려 있으므로 서로 물린다.\n */\n private fitPopup() {\n const pop = this.renderRoot?.querySelector?.('.railpop') as HTMLElement | null\n\n if (!pop) {\n return\n }\n\n const margin = OxMenuPortrait.POP_MARGIN\n const height = pop.offsetHeight\n const room = window.innerHeight - margin * 2\n\n /* 화면보다 크면 위에 붙이고 스크롤한다. 그 아래 다시 재지 않는다. */\n const top = height >= room ? margin : Math.max(margin, Math.min(this._popPrefer, window.innerHeight - margin - height))\n\n if (Math.round(top) !== Math.round(this._popTop)) {\n this._popTop = top\n }\n\n pop.style.top = `${top}px`\n this.fitKnob(pop, top)\n }\n\n /**\n * 노브를 그 항목의 가운데 높이에 둔다.\n *\n * ── 범위를 벗어나면 감추지 않고 끝에 붙인다 ──────────────────────────────\n * 팝업이 위로 밀리는 것은 **아래에 자리가 없어서**이고, 그만큼만 밀린다. 그래서 그 항목은\n * 거의 항상 팝업의 세로 범위 안으로 들어온다. 벗어나는 것은 라운드 모서리에 걸치는 몇 px\n * 뿐이다. 그때 감추면 **자리가 좁을 때만 표시가 사라진다** — 가장 필요한 순간이다.\n *\n * 그래서 모서리 안쪽으로 붙인다. 정확히 그 줄을 가리키지 못해도 「위쪽」·「아래쪽」은\n * 가리키고, 어느 항목인지는 그 항목의 popped 표시가 말한다.\n */\n private fitKnob(pop: HTMLElement, popTop: number) {\n const knob = this.renderRoot?.querySelector?.('.railknob') as HTMLElement | null\n /* 최상위 항목이거나 시스템 단추다 — 둘 다 popped 를 단다. */\n const item = this.renderRoot?.querySelector?.('[popped]') as HTMLElement | null\n\n if (!knob) {\n return\n }\n\n if (!item) {\n knob.hidden = true\n return\n }\n\n const rect = item.getBoundingClientRect()\n const centre = rect.top + rect.height / 2 - popTop\n /* 라운드 모서리에 걸치면 반쪽만 보인다. 그 안쪽까지만 간다. */\n const inset = 14\n const within = Math.max(inset, Math.min(centre, pop.offsetHeight - inset))\n /* 정사각의 반. 가운데가 그 줄의 가운데에 오게 한다. */\n const half = knob.offsetHeight / 2 || 5\n\n knob.hidden = false\n /* 팝업의 왼쪽 선에 반쯤 물리게 — 선이 그 자리에서 끊긴 것처럼 보인다. */\n knob.style.left = `${this._popLeft - half}px`\n knob.style.top = `${popTop + within - half}px`\n }\n\n protected updated() {\n this.fitPopup()\n }\n\n /** 접기/펼치기는 `ox-menu-part` 가 한다 — 폭과 저장이 그쪽 것이다. 여기서는 뜻만 올린다. */\n private toggleCollapsed(e: MouseEvent) {\n e.stopPropagation()\n this.popped = undefined\n this.dispatchEvent(new CustomEvent('collapse-toggle', { bubbles: true, composed: true }))\n }\n\n firstUpdated() {\n this.renderRoot.addEventListener('click', (e: Event) => {\n const menuElement = (e.target as Element)!.closest('[menu]')\n\n /*\n * 팝업 안을 눌렀으면 팝업을 닫는다 — 이동은 라우터가 한다(막지 않는다).\n *\n * 한때 팝업 컨테이너에 stopPropagation 을 걸어 두었다. 그러면 라우터까지 막혀 **페이지\n * 전체가 다시 읽혔다.** 막지 않고 닫기만 한다.\n */\n if ((e.target as Element)!.closest('.railpop')) {\n this.popped = undefined\n }\n\n /*\n * `active-toplevel` 은 **최상위에서만** 나간다.\n *\n * `closest('[menu]')` 는 가장 가까운 줄을 집으므로 하위를 누르면 하위가 잡힌다. 그것을\n * 그대로 올리면 「열린 묶음」이 하위로 바뀌어, 그 묶음이 닫힌 것처럼 된다. 지금까지는 하위\n * 클릭이 곧 이동이라 주소가 바뀌며 저절로 나았지만, 나을 이유가 없는 자리다.\n */\n //@ts-ignore\n if (menuElement?.menu && menuElement.hasAttribute('top')) {\n //@ts-ignore\n let menu = menuElement.menu\n\n /*\n * 접힌 레일에서 하위가 있는 항목은 **팝업으로 연다.**\n *\n * 이 자리에서 갈라야 한다 — 아래로 흘려 보내면 `active-toplevel` 이 나가고, 그러면\n * 56px 안에서 아무것도 안 보이는 채로 「열렸다」가 된다. 팝업이 접힌 레일에서 하위로\n * 가는 유일한 길이다.\n */\n /*\n * 하위가 있는 최상위를 눌렀다. 무엇을 할지는 **모양이 정한다**(§`menu-mode.ts`).\n *\n * 팝업으로 열리는 모양 팝업을 띄운다 (접힌 레일)\n * 이동하지 않는 모양 그 자리에서 펼치기만 한다 (서랍)\n * 나머지 이동하면서 펼친다 — 아래로 흘려 보낸다\n */\n if (menu.menus?.length && !topNavigates(this.mode) && childrenOpenAs(this.mode) === 'inline') {\n e.stopPropagation()\n e.preventDefault()\n\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === menu ? undefined : menu\n })\n )\n\n return\n }\n\n if (menu.menus?.length && childrenOpenAs(this.mode) === 'popup') {\n e.stopPropagation()\n e.preventDefault()\n\n const rect = (menuElement as HTMLElement).getBoundingClientRect()\n\n /*\n * **레일의 오른쪽을 기준으로 띄운다** — 누른 항목의 오른쪽이 아니다.\n *\n * 항목은 레일 안쪽 여백만큼 들어가 있어서, 항목 기준으로 재면 팝업이 레일 끝에 정확히\n * 붙는다(56px 레일에서 left 가 56 이 됐다). 붙으면 레일을 덮은 것처럼 보인다.\n *\n * 틈은 8px 이다. 16px 은 떨어져 떠 있는 것처럼 보였고, 0 은 레일에 얹힌 것처럼\n * 보였다. 8px 이 「레일에서 열린 다른 면」으로 읽히는 자리다.\n */\n this._popLeft = this.getBoundingClientRect().right + 8\n /*\n * 누른 항목의 윗선에서 시작하는 것은 **바람**일 뿐이다. 실제 자리는 그린 뒤 높이를\n * 재서 정한다(`fitPopup`) — 여기서 고정하면 항목이 아래쪽일 때 팝업이 화면 밖으로\n * 나가거나 열여섯 줄짜리 목록에 스크롤이 생긴다.\n */\n this._popPrefer = rect.top\n this._popTop = rect.top\n this.popped = this.popped === menu ? undefined : menu\n\n return\n }\n\n /*\n * ── 화살표가 토글이고, 글자가 이동이다 ────────────────────────────\n * 최상위 항목은 두 일을 한다 — 자기 화면으로 가고, 하위를 펼친다. 글자를 누르면 링크가\n * 주소를 바꾸므로 **접기가 살아남을 수 없다** — 주소가 바뀌면 그 주소의 메뉴가 다시\n * 열린다(§`ox-menu-part` 의 `_closedByUser`).\n *\n * 그래서 접는 자리를 화살표로 옮긴다. 화살표는 이미 「펼침」을 그리고 있어서 사람이 그것을\n * 누르려 한다. 누르면 이동하지 않고 접기만 한다.\n */\n const onCaret = !!(e.target as Element)?.closest?.('[submenu-button]')\n\n if (!menu.path || onCaret) {\n /* protect to act move to href. */\n e.stopPropagation()\n e.preventDefault()\n }\n\n this.dispatchEvent(\n new CustomEvent('active-toplevel', {\n bubbles: true,\n detail: this.activeTopLevel === menu ? undefined : menu\n })\n )\n }\n\n /* to respond even if current acting menu is selected */\n let href = (e.target as HTMLAnchorElement)!.href\n href && location.href === href && navigate(href + '#force', true)\n })\n\n /* to hide scrollbar during transition */\n this.renderRoot.addEventListener('transitionstart', e => {\n ;(e.target as Element).removeAttribute('settled')\n })\n this.renderRoot.addEventListener('transitionend', e => {\n ;(e.target as Element).setAttribute('settled', '')\n })\n }\n}\n"]}
@@ -1 +1 @@
1
- {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../src/types.ts","../src/menu-mode.ts","../src/menu-active.ts","../src/menu-privilege.ts","../src/index.ts","../../../node_modules/@lit/reactive-element/development/css-tag.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-controller.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-element.d.ts","../../../node_modules/lit-html/development/directive.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/lit-html/development/lit-html.d.ts","../../../node_modules/lit-element/development/lit-element.d.ts","../../../node_modules/lit-html/development/is-server.d.ts","../../../node_modules/lit/development/index.d.ts","../src/menu-landscape-styles.ts","../src/menu-portrait-styles.ts","../../../node_modules/@material/web/icon/internal/icon.d.ts","../../../node_modules/@material/web/icon/icon.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/base.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/custom-element.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/property.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/state.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/event-options.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-all.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-async.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-nodes.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-elements.d.ts","../../../node_modules/lit/development/decorators.d.ts","../../shell/dist/src/types/domain.d.ts","../../shell/dist/src/types/user.d.ts","../../shell/dist/src/types/role.d.ts","../../shell/dist/src/types/privilege.d.ts","../../shell/dist/src/types/types.d.ts","../../shell/dist/src/types/index.d.ts","../../../node_modules/redux/index.d.ts","../../shell/dist/src/lazy-reducer-enhancer.d.ts","../../shell/dist/src/store.d.ts","../../shell/dist/src/actions/app.d.ts","../../shell/dist/src/actions/route.d.ts","../../shell/dist/src/actions/busy.d.ts","../../shell/dist/src/actions/const.d.ts","../../shell/dist/src/actions/index.d.ts","../../shell/dist/src/app/pages/page-view.d.ts","../../shell/dist/src/object-store.d.ts","../../shell/dist/src/custom-alert.d.ts","../../shell/dist/src/connect-mixin.d.ts","../../shell/dist/src/controllers/app-controller.d.ts","../../shell/dist/src/controllers/context-controller.d.ts","../../shell/dist/src/controllers/font-controller.d.ts","../../shell/dist/src/controllers/layout-controller.d.ts","../../shell/dist/src/controllers/menu-controller.d.ts","../../shell/dist/src/controllers/route-controller.d.ts","../../shell/dist/src/controllers/snackbar-controller.d.ts","../../shell/dist/src/controllers/index.d.ts","../../shell/dist/src/index.d.ts","../../styles/dist/src/headroom-styles.d.ts","../../styles/dist/src/scrollbar-styles.d.ts","../../styles/dist/src/spinner-styles.d.ts","../../styles/dist/src/common-button-styles.d.ts","../../styles/dist/src/form-field-styles.d.ts","../../styles/dist/src/common-grist-styles.d.ts","../../styles/dist/src/button-container-styles.d.ts","../../styles/dist/src/common-header-styles.d.ts","../../styles/dist/src/common-popup-styles.d.ts","../../styles/dist/src/box-padding-editor-styles.d.ts","../../styles/dist/src/gradient-direction-styles.d.ts","../../styles/dist/src/property-grid-styles.d.ts","../../styles/dist/src/table-event-styles.d.ts","../../styles/dist/src/inspector-styles.d.ts","../../styles/dist/src/line-styles.d.ts","../../styles/dist/src/index.d.ts","../src/ox-menu-landscape.ts","../../../node_modules/lit-html/development/directives/if-defined.d.ts","../../../node_modules/lit/development/directives/if-defined.d.ts","../../../node_modules/i18next/typescript/helpers.d.ts","../../../node_modules/i18next/typescript/options.d.ts","../../../node_modules/i18next/typescript/t.d.ts","../../../node_modules/i18next/index.d.ts","../../../node_modules/i18next/index.d.mts","../../i18n/dist/src/config.d.ts","../../i18n/dist/src/localize.d.ts","../../i18n/dist/src/ox-i18n.d.ts","../../i18n/dist/src/ox-i18n-selector.d.ts","../../i18n/dist/src/index.d.ts","../src/ox-menu-portrait.ts","../src/ox-menu-part.ts","../../layout/dist/src/initializer.d.ts","../../popup/dist/src/ox-popup.d.ts","../../popup/dist/src/ox-popup-list.d.ts","../../popup/dist/src/ox-popup-menu.d.ts","../../popup/dist/src/ox-popup-menuitem.d.ts","../../../node_modules/@material/web/elevation/internal/elevation.d.ts","../../../node_modules/@material/web/elevation/elevation.d.ts","../../../node_modules/@material/web/internal/controller/attachable-controller.d.ts","../../../node_modules/@material/web/focus/internal/focus-ring.d.ts","../../../node_modules/@material/web/focus/md-focus-ring.d.ts","../../../node_modules/@material/web/ripple/internal/ripple.d.ts","../../../node_modules/@material/web/ripple/ripple.d.ts","../../../node_modules/@material/web/labs/behaviors/mixin.d.ts","../../../node_modules/@material/web/labs/behaviors/element-internals.d.ts","../../../node_modules/@material/web/labs/behaviors/form-associated.d.ts","../../../node_modules/@material/web/labs/behaviors/form-submitter.d.ts","../../../node_modules/@material/web/button/internal/button.d.ts","../../../node_modules/@material/web/button/internal/filled-button.d.ts","../../../node_modules/@material/web/button/filled-button.d.ts","../../../node_modules/@material/web/button/internal/outlined-button.d.ts","../../../node_modules/@material/web/button/outlined-button.d.ts","../../popup/dist/src/ox-prompt.d.ts","../../popup/dist/src/ox-floating-overlay.d.ts","../../popup/dist/src/open-popup.d.ts","../../popup/dist/src/index.d.ts","../../../node_modules/@material/web/button/internal/text-button.d.ts","../../../node_modules/@material/web/button/text-button.d.ts","../../layout/dist/src/layouts/ox-snack-bar.d.ts","../../layout/dist/src/components/ox-resize-splitter.d.ts","../../layout/dist/src/layouts/ox-header-bar.d.ts","../../layout/dist/src/layouts/ox-nav-bar.d.ts","../../layout/dist/src/layouts/ox-aside-bar.d.ts","../../layout/dist/src/layouts/ox-footer-bar.d.ts","../../layout/dist/src/layouts/ox-page-header-bar.d.ts","../../layout/dist/src/layouts/ox-page-footer-bar.d.ts","../../layout/dist/src/actions/layout.d.ts","../../layout/dist/src/actions/snackbar.d.ts","../../layout/dist/src/components/ox-split-pane.d.ts","../../layout/dist/src/index.d.ts","../src/ox-top-menu-bar.ts","../stories/ox-menu-container.ts","../stories/test-menus.ts","../stories/ox-menu-portrait.stories.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/get-diffable-html.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff-plugin.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/index.d.ts","../../../node_modules/chai-a11y-axe/chai-a11y-axe-plugin.d.ts","../../../node_modules/chai-a11y-axe/src/accessible.d.ts","../../../node_modules/chai-a11y-axe/index.d.ts","../../../node_modules/@types/chai-dom/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/sinon-chai/index.d.ts","../../../node_modules/@open-wc/testing/register-chai-plugins.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/elementupdated.d.ts","../../../node_modules/lit-html/development/static.d.ts","../../../node_modules/lit/development/static-html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/renderable.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/dedupe-mixin/index.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/types.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/html-element.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture-no-side-effect.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixturewrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/helpers.d.ts","../../../node_modules/lit/development/html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/scopedelementswrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/litfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/stringfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/index.d.ts","../../../node_modules/@open-wc/testing/index.d.ts","../test/menu-active.test.ts","../test/menu-mode.test.ts","../test/menu-privilege.test.ts","../test/ox-menu-portrait.test.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/dispatcher1-wrapper.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/ffi.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/iter.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vfs.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/mocha/index.d.ts"],"fileIdsList":[[216,281,289,294,297,299,300,301,314],[69,216,281,289,294,297,299,300,301,314],[58,69,216,281,289,294,297,299,300,301,314],[58,69,77,216,281,289,294,297,299,300,301,314],[71,216,281,289,294,297,299,300,301,314],[56,57,216,281,289,294,297,299,300,301,314],[64,155,216,281,289,294,297,299,300,301,314],[61,64,147,149,150,151,152,153,216,281,289,294,297,299,300,301,314],[61,144,154,216,281,289,294,297,299,300,301,314],[61,154,216,281,289,294,297,299,300,301,314],[154,216,281,289,294,297,299,300,301,314],[64,157,216,281,289,294,297,299,300,301,314],[64,163,216,281,289,294,297,299,300,301,314],[64,143,216,281,289,294,297,299,300,301,314],[61,64,216,281,289,294,297,299,300,301,314],[64,145,216,281,289,294,297,299,300,301,314],[64,146,216,281,289,294,297,299,300,301,314],[64,67,216,281,289,294,297,299,300,301,314],[64,216,281,289,294,297,299,300,301,314],[64,150,216,281,289,294,297,299,300,301,314],[64,150,151,216,281,289,294,297,299,300,301,314],[61,64,145,216,281,289,294,297,299,300,301,314],[64,148,216,281,289,294,297,299,300,301,314],[181,182,216,281,289,294,297,299,300,301,314],[183,216,281,289,294,297,299,300,301,314],[182,184,216,281,289,294,297,299,300,301,314],[198,199,216,281,289,294,297,299,300,301,314],[198,216,281,289,294,297,299,300,301,314],[194,196,202,203,204,207,208,216,281,289,294,297,299,300,301,314],[197,200,216,281,289,294,297,299,300,301,314],[201,216,281,289,294,297,299,300,301,314],[197,201,206,216,281,289,294,297,299,300,301,314],[197,200,205,216,281,289,294,297,299,300,301,314],[181,193,209,216,281,289,294,297,299,300,301,314],[185,188,189,192,216,281,289,294,297,299,300,301,314],[181,216,281,289,294,297,299,300,301,314],[216,278,279,281,289,294,297,299,300,301,314],[216,280,281,289,294,297,299,300,301,314],[281,289,294,297,299,300,301,314],[216,281,289,294,297,299,300,301,314,323],[216,281,282,287,289,292,294,297,299,300,301,303,314,319,332],[216,281,282,283,289,292,294,297,299,300,301,314],[216,281,284,289,294,297,299,300,301,314,333],[216,281,285,286,289,294,297,299,300,301,305,314],[216,281,286,289,294,297,299,300,301,314,319,329],[216,281,287,289,292,294,297,299,300,301,303,314],[216,280,281,288,289,294,297,299,300,301,314],[216,281,289,290,294,297,299,300,301,314],[216,281,289,291,292,294,297,299,300,301,314],[216,280,281,289,292,294,297,299,300,301,314],[216,281,289,292,294,295,297,299,300,301,314,319,332],[216,281,289,292,294,295,297,299,300,301,314,321,323],[216,268,281,289,292,294,296,297,299,300,301,303,314,319,332],[216,281,289,292,294,296,297,299,300,301,303,314,319,329,332],[216,281,289,294,296,297,298,299,300,301,314,319,329,332],[215,216,217,218,219,220,221,222,223,224,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341],[216,281,289,292,294,297,299,300,301,314],[216,281,289,294,297,299,301,314],[216,281,289,294,297,299,300,301,302,314,332],[216,281,289,292,294,297,299,300,301,303,314,319],[216,281,289,294,297,299,300,301,305,314],[216,281,289,294,297,299,300,301,306,314],[216,281,289,292,294,297,299,300,301,309,314],[216,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,337,338,339,340],[216,281,289,294,297,299,300,301,311,314],[216,281,289,294,297,299,300,301,312,314],[216,281,286,289,294,295,297,299,300,301,303,314,321,329],[216,281,289,292,294,297,299,300,301,314,315],[216,281,289,294,297,299,300,301,314,316,333,337],[216,281,289,292,294,297,299,300,301,314,319,321,322,323],[216,281,289,294,297,299,300,301,314,320,323],[216,281,289,292,294,297,299,300,301,314,319,321],[216,281,289,292,294,297,299,300,301,314,319,322,323],[216,281,289,294,297,299,300,301,314,323,333],[216,281,289,294,297,299,300,301,314,324],[216,278,281,289,294,297,299,300,301,314,319,326,332],[216,281,289,294,297,299,300,301,314,319,325],[216,281,289,292,294,297,299,300,301,314,327,328],[216,281,289,294,297,299,300,301,314,327,328],[216,281,286,289,294,297,299,300,301,303,314,319,329],[216,281,289,294,297,299,300,301,314,330],[216,281,289,294,297,299,300,301,303,314,331],[216,281,289,294,296,297,299,300,301,312,314,332],[216,281,289,294,297,299,300,301,314,333,334],[216,281,286,289,294,297,299,300,301,314,334],[216,281,289,294,297,299,300,301,314,319,335],[216,281,289,294,295,297,299,300,301,314],[216,281,289,294,297,299,300,301,302,314,337],[216,281,289,294,297,299,300,301,314,338],[216,281,284,289,294,297,299,300,301,314],[216,281,286,289,294,297,299,300,301,314],[216,281,289,294,297,299,300,301,314,333],[216,268,281,289,294,297,299,300,301,314],[216,281,289,294,297,299,300,301,314,332],[216,281,289,294,297,299,300,301,314,339],[216,281,289,294,297,299,300,301,309,314],[216,281,289,294,297,299,300,301,314,328],[216,268,281,289,292,294,295,297,299,300,301,309,314,319,323,332,335,337,339],[216,281,289,294,297,299,300,301,314,319,340],[216,281,289,294,297,299,300,301,314,321,341],[181,191,216,281,289,294,297,299,300,301,314],[190,216,281,289,294,297,299,300,301,314],[187,216,281,289,294,297,299,300,301,314],[186,216,281,289,294,297,299,300,301,314],[126,127,128,129,216,281,289,294,297,299,300,301,314],[126,127,128,216,281,289,294,297,299,300,301,314],[126,216,281,289,294,297,299,300,301,314],[126,127,216,281,289,294,297,299,300,301,314],[58,61,216,281,289,294,297,299,300,301,314],[61,216,281,289,294,297,299,300,301,314],[59,60,216,281,289,294,297,299,300,301,314],[70,71,72,73,74,75,76,77,78,216,281,289,294,297,299,300,301,314],[124,216,281,289,294,297,299,300,301,314],[58,61,62,63,216,281,289,294,297,299,300,301,314],[195,216,281,289,294,297,299,300,301,314],[49,216,281,289,294,297,299,300,301,314],[216,231,234,237,238,281,289,294,297,299,300,301,314,332],[216,234,281,289,294,297,299,300,301,314,319,332],[216,234,238,281,289,294,297,299,300,301,314,332],[216,281,289,294,297,299,300,301,314,319],[216,228,281,289,294,297,299,300,301,314],[216,232,281,289,294,297,299,300,301,314],[216,230,231,234,281,289,294,297,299,300,301,314,332],[216,281,289,294,297,299,300,301,303,314,329],[216,281,289,294,297,299,300,301,314,342],[216,228,281,289,294,297,299,300,301,314,342],[216,230,234,281,289,294,297,299,300,301,303,314,332],[216,225,226,227,229,233,281,289,292,294,297,299,300,301,314,319,332],[216,234,281,289,294,297,299,300,301,314],[216,234,243,252,281,289,294,297,299,300,301,314],[216,226,232,281,289,294,297,299,300,301,314],[216,234,262,263,281,289,294,297,299,300,301,314],[216,226,229,234,281,289,294,297,299,300,301,314,323,332,342],[216,230,234,281,289,294,297,299,300,301,314,332],[216,225,281,289,294,297,299,300,301,314],[216,228,229,230,232,233,234,235,236,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,263,264,265,266,267,281,289,294,297,299,300,301,314],[216,234,255,258,281,289,294,297,299,300,301,314],[216,234,243,245,246,281,289,294,297,299,300,301,314],[216,232,234,245,247,281,289,294,297,299,300,301,314],[216,233,281,289,294,297,299,300,301,314],[216,226,228,234,281,289,294,297,299,300,301,314],[216,234,238,245,247,281,289,294,297,299,300,301,314],[216,238,281,289,294,297,299,300,301,314],[216,232,234,237,281,289,294,297,299,300,301,314,332],[216,226,230,234,243,281,289,294,297,299,300,301,314],[216,234,255,281,289,294,297,299,300,301,314],[216,247,281,289,294,297,299,300,301,314],[216,226,230,234,238,281,289,294,297,299,300,301,314],[216,228,234,262,281,289,294,297,299,300,301,314,323,339,342],[130,216,281,289,294,297,299,300,301,314],[131,132,133,134,216,281,289,294,297,299,300,301,314],[64,130,216,281,289,294,297,299,300,301,314],[64,162,216,281,289,294,297,299,300,301,314],[86,216,281,289,294,297,299,300,301,314],[138,162,165,167,168,169,170,171,172,173,174,175,216,281,289,294,297,299,300,301,314],[106,216,281,289,294,297,299,300,301,314],[160,166,216,281,289,294,297,299,300,301,314],[68,164,216,281,289,294,297,299,300,301,314],[50,51,52,53,54,216,281,289,294,297,299,300,301,314],[50,51,216,281,289,294,297,299,300,301,314],[50,64,216,281,289,294,297,299,300,301,314],[50,216,281,289,294,297,299,300,301,314],[50,51,64,65,68,79,106,122,216,281,289,294,297,299,300,301,314],[50,51,52,53,64,68,79,106,122,123,136,216,281,289,294,297,299,300,301,314],[50,51,52,64,66,68,79,106,122,125,135,216,281,289,294,297,299,300,301,314],[50,51,64,68,79,106,176,216,281,289,294,297,299,300,301,314],[50,51,64,68,79,122,136,216,281,289,294,297,299,300,301,314],[50,64,136,178,179,216,281,289,294,297,299,300,301,314],[50,51,53,210,216,281,289,294,297,299,300,301,314],[50,52,210,216,281,289,294,297,299,300,301,314],[50,51,54,210,216,281,289,294,297,299,300,301,314],[50,51,64,136,210,216,281,289,294,297,299,300,301,314],[139,140,141,142,159,161,216,281,289,294,297,299,300,301,314],[64,160,216,281,289,294,297,299,300,301,314],[61,64,68,216,281,289,294,297,299,300,301,314],[61,64,68,139,216,281,289,294,297,299,300,301,314],[61,64,139,216,281,289,294,297,299,300,301,314],[61,64,141,216,281,289,294,297,299,300,301,314],[61,64,68,156,158,216,281,289,294,297,299,300,301,314],[89,90,91,92,216,281,289,294,297,299,300,301,314],[98,99,100,101,102,103,104,216,281,289,294,297,299,300,301,314],[85,88,93,94,95,96,97,105,216,281,289,294,297,299,300,301,314],[86,87,216,281,289,294,297,299,300,301,314],[80,81,82,83,84,216,281,289,294,297,299,300,301,314],[81,82,216,281,289,294,297,299,300,301,314],[80,81,83,216,281,289,294,297,299,300,301,314],[107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,216,281,289,294,297,299,300,301,314]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"30db73264f423790415f2f88f22c374cb0ede9c0610fe3386ae20cc17574bcf5","signature":"a4f32f4e2c7c8b874051148ee801dede9c40258b2f79e463fd28235af0ad3bd7"},{"version":"e0fb692d4f184e4389ff15b9a3afb373e614217d11209bbb7991323f9e39ca69","signature":"84b0557232f5482a21b7e925786f210e4ad2a230fe27ea74b68a3736be9baf8b"},{"version":"6ec6e8ac686c5e83784dde22df587e8798b665af08a70c4c733576d537d8306a","signature":"176ad452b559be09c46dd0a87d559ca6a875ae9f5f6dc60b04216987ccee1172"},{"version":"207a185ae4d9a3cc6c2481e19216e02aa3b465e37bdcf2a54c2ad81963574d2b","signature":"8c343f73650fe89ac17ccf2077c92a4efb35742b1b42d211754f1ce5b29e890c"},{"version":"93d215899a1bd18750be7a232c22c14539d440c03f660b86a1db21c3186dc56c","signature":"8cccc9e3831c43812a4afa5e2725761ca82575c74febb41ffe5e0560f38e18f6"},{"version":"74012d464fbc5354ca3a7d5e71bee43b17da01a853c8ff10971bbe3680c76f40","impliedFormat":99},{"version":"5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","impliedFormat":99},{"version":"a0f82d2f9450bd147a8c137798d9501bd49b7c9e118f75b07b76709ff39b6b55","affectsGlobalScope":true,"impliedFormat":99},{"version":"00cb63103f9670f8094c238a4a7e252c8b4c06ba371fea5c44add7e41b7247e4","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"e09db3291e6b440f7debed2227d8357e80c95987a0d0d67ac17521d8f7b11bdb","impliedFormat":99},{"version":"9a318e3a8900672b85cd3c8c3a5acf51b88049557a3ae897ccdcf2b85a8f61f9","impliedFormat":99},{"version":"1bcd560deed90a43c51b08aa18f7f55229f2e30974ab5ed1b7bb5721be379013","impliedFormat":99},{"version":"dc08fe04e50bc24d1baded4f33e942222bbdd5d77d6341a93cfe6e4e4586a3be","impliedFormat":99},{"version":"a1c5ae2fd49803fc6db34e95007b9c75a21aba738acc4a519c839a129e509eca","signature":"3bcaadf31685c068f5c12037763d5f7d16e86c25412946aad78e418193066ba6"},{"version":"38d2f7f828672951be44f8121d463896b0f413834b7d39508a63d2bff7bb8a0a","signature":"b264a25bcb204cc781031cc94856e649951aaf0b3764b167c7de4f81852415ac"},{"version":"b93e2680295ac83b52846bcd76dd6d06507d3da1738ebe564a1e99543993b3b4","impliedFormat":99},{"version":"4ae1ed87c59518f4e0918a21409ec3020e97037a386b57953c6b9fed9cad6949","affectsGlobalScope":true,"impliedFormat":99},{"version":"cdeae34aca6700620ebf3f27cf7d439c3af97595dd6e2729fa4780483add5680","impliedFormat":99},{"version":"3ff87ea3471b51beaf4aa8fd8f4422862b11d343fdbb55bf383e0f8cc195a445","impliedFormat":99},{"version":"99bdf729529cdbf12e2bf76ea751b662011133dcf9e35abcb3def47bb02f7b0a","impliedFormat":99},{"version":"732fb71ecb695d6f36ddcbb72ebfe4ff6b6491d45101a00fa2b75a26b80d640f","impliedFormat":99},{"version":"039cb05125d7621f8143616c495b8e6b54249c4e64d2754b80ff93867f7f4b01","impliedFormat":99},{"version":"1b81f1fa82ad30af01ab1cae91ccaddc10c48f5916bbd6d282155e44a65d858d","impliedFormat":99},{"version":"a0fc7a02a75802678a67000607f20266cf1a49dc0e787967efe514e31b9ed0c3","impliedFormat":99},{"version":"5ebf098a1d81d400b8af82807cf19893700335cf91a7b9dbd83a5d737af34b11","impliedFormat":99},{"version":"101cf83ac3f9c5e1a7355a02e4fbe988877ef83c4ebec0ff0f02b2af022254a3","impliedFormat":99},{"version":"d017e2fcd44b46ca80cd2b592a6314e75f5caab5bda230f0f4a45e964049a43a","impliedFormat":99},{"version":"a8992b852521a66f63e0cedc6e1f054b28f972232b6fa5ca59771db6a1c8bbea","impliedFormat":99},"4d4cf93a6b4c81851ad759e4569b6feb7a701e80b13a6f9d8d9c6012bbb86bd6","2e6035af8f3e43bf95e4983329c8277d66f9b271106af27b99a85d1c1b9daf4a","df32d43311e85715e2a573239a4bbc5b78ebaf29af2af5fa8c85370197997515","3a792bbf677343364a1d9b7197c6e4e512764f17364efd656b1a3598f2a9e820","3d7c0b593a29d717b2b2ba3f03f819c3c48bf9e250d79c4a31860af80f177e8c","e576aa80090f8b6020355ca8d7f4184067c84389f4b92125be29e03b1f6c5194",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true,"impliedFormat":1},"487213b1bcbdaa470cf59a4cea3f8a939b9222e74b455fe0fd2f0dc2346cc3c0",{"version":"8a9e962b8c98aa48377773c40ac7a3e530fb3354cec48fdb59d8e2df3a624a0c","affectsGlobalScope":true},"641089f0b8094ef74b9d4b3364d5dec1592d5e3b8a51c1ba491bc8872049e79a","8e33e65ce7fcd3cb20e29505452daa51543003d5db597f1aca2a51ff9043c8a7","b42033bf1067564808e4d360d79281667c2b3b0792c2d615ab641eb85974d4ba","7af29b0589483f7bb8a99405ddb849f34bc053146184561ed4179e02f5fe4d0f","ad3ee9f7d14ad8b7ae8094d0f1a2276656f7a970827d4030d1dead7c2d765f75","9c7568f9c75cf6a7d35dc9f18c5971cd5b21344c686c7cce56b3558d3305d40f","fc48282c397084016a939e1b3f91dcaf4199b6cba339d91d8b2dc2acade79762","3e62a55b950132d6eeacc607b7a1bff990d5484347b2be5a1f54db51af30ff25","8b86f33b7e06e2f0a3bf4703cf9d8b0baab016e36b83f2a33dac184f061e17ea","88c205bacab539d8e844b80a1ec76fc649fbc731f12dfd7cca160976b5ddfd5a","565d32dce0b8761e7cfafe40c56a8a0fab0bb9e7bb35a31d9712643b3c8dbbc4","4bde12afd6fdd6e52d7316e00adfbccd70becc3ebd9c4f647d07caef53a474ae","a7e588bdba05f1fb78f83e50ee62c93565134d3b996babf2697c2b43fcf17ce0","218a0f93d7091c68718ec4260f41f3a61b5ecb7e786a8c04e296292ff41db8f0","cf45487aeb18b31f1001b99d06793986ac3e6840b0602f9cf3756a2724348bf4","81f0a95843ae6e5a006addc4b5c217b075057ff82c9bc319655de21a13ba9f10","1a68f44e90ac5c261a3157004a7ec18759982b91fd725537d6db919d83601dd1","bb9f78774fda656644386e88b8522ddf5da7b9a2eeaf1df18dc4f5bef7bb8bbb","cf93fb9208a01c80f0fad245c4360356e5de6c2384b7641acf0b9cc2f5c42448","336398b0efaf964124e636a9b29c4edd5870aee79ac64bf87be58a9d66b7c048","571bc65ec37ba124e762bb822e14a2b8502dc684e356be8feaccbd6b9cadd023","7cd455fc4c4818f19263d73b29c59f3fb5fd54b45a6ab83ca3eb3661281db56b","d428a9fbb7cc014b69651793373edf9be9b0bba7c3e7f720d2a294dd1a50d7c5","1c6b9b5501774a2ece6574be8e26092800e3f1f836f8c179b4f9fdd271a620f8","bcd2426fd141157e04e3a8eff914b575403587f398cf0878f07c2f283e0d1afd","bac8ff394e831e4dd3f0961d6abb414b0e2b4ba16fdeb502d087ebf0340ed5f6","98109c2e2055fb6b3a6c6a35ae6da9d99e97ffb3787819040beb87e992891a10","4c559568877f16745410a69bbbf0e2b131a228c819d581048f4d1ba7115b1b36","c89d663edb7c20cfab677286571dc8f4f09878119d7ecd010895133995f12532","9d04b912e18e966fca08158f28e5c41bfb2fa864187d926e04d737aa83a96e17","2ad4fcfa075cde73e5ae78491531cef44cec9fb9a880be8335afd98c444528cf","881cb6bb1e6384a9943b8c6f1cd3a0f215a683b032130f700e0d87bc9a990727","e2d895b9561b0b9a350c970475ff268e4e0fc44436e107a916889a0a93d3389b","a44226d2234e95aa575244a5db63d3d59efb1be57d30df72404e8fc2c0ae074d",{"version":"edce72f988c83157a88933338f4cdcf3bc72118ab04d9ac07cd35abee7c92678","signature":"143f8d604ef3ed044bfdeda068f2b4f33d0cd8df6d9d42b26a2ecce9426cb0bc"},{"version":"74fe889b1d2bba4b2893d518ba94e2b20dabe6d19d0c2f9554d9a5d3755710f4","impliedFormat":99},{"version":"2ae64cd7b6e760496069ee3b496c64700c956a0620740e1ef52b163824859db7","impliedFormat":99},{"version":"e30accdbef6f904f20354b6f598d7f2f7ff29094fc5410c33f63b29b4832172a","impliedFormat":1},{"version":"3786a961459023ec78bb575e5ea74f504d3ffc61ae82a305c959a4d94d7d70eb","impliedFormat":1},{"version":"de83915a380bdd6d7ddf075e3f60fe347db64ad4d06822835724ac601cb61daf","impliedFormat":1},{"version":"4d39c150715cb238da715e5c3fbeac2e2b2d0ef3f23c632996dd59ae35ba1f45","impliedFormat":1},{"version":"e9f80c5934982b97886eadab6684c073344a588d1758b12fba2d0184e6f450a2","impliedFormat":99},"0f81a53d54fd2b4ae2bf60067d616de99884bda21cb5784d942089d52319fb97","86d356e64ab8d56852623677eb1bed0c106703aed9b7788ad8a5a56e647822cb","29dca1b5f0cac95b675f86c7846f9d587ed47cc46609dd00d152bcb37683b069","231d829c892caeb88dd469e0847bf9d14e29c82b8b158b381ec866c868adf9af","886bcc73e8cf74ebec1bd14a5cc5b8dfa28276210df634e6f81c844b1eef767b",{"version":"55f081b2998144af77e8e1c603c47cc2f40f801a4ec1994b1419647a457bc4f4","signature":"cafee696d22a75c0271fb214fc4bb2d703899d1565380bfb582f2d0884258d3e"},{"version":"2228a9e165866636123924e1557fd8e83e42127105e049abddbb9467d2c30577","signature":"1a2c7c8a8a6c53487774f22819087d2068fa7f61502374e2dbfa0966483de46d"},"60997095f458b8c2c94af5759c796d9d17678e740a41a04c3e518c14c47f2ee7",{"version":"75069a2a1e380502ff9a1074b8ee61f5e84f31973e5f81b444e6993e5633c72b","affectsGlobalScope":true},"8aff91f00938aa90ce829f4d577903d6826fa19e8edc583f7bb64ef1a6b4ae3b","986165ecc3a59d4b6a272a92f7ca4fd7a0762c63a674abd2c1efa0bea64da604","3e7b241ec38126d95f9e37c49a631c00cff006a888276e2d02920c6443c8b593",{"version":"6184309fe39e2fe444f4ba94e7cd1abef48fcb48e258457c3b77c65828184241","impliedFormat":99},{"version":"98c511f60c3079d731a35353a47bfa89dd79eeacad48a45d07170d22ef4bfd02","affectsGlobalScope":true,"impliedFormat":99},{"version":"905800cc110167503d0cf58bb0dd6fa4aaac1e9cedc9bd9c48e5d1f8b5b8d4c8","impliedFormat":99},{"version":"d17be577b99e59611df19ca2cf0356df554f55bb06617c21321fc4ec06b820d0","impliedFormat":99},{"version":"5f30145fbc8ca508ae4e0d90a4fe9eaff490783f380a92f6aa262accdf7887b7","affectsGlobalScope":true,"impliedFormat":99},{"version":"cefe49d29d43726072e88671a2c40cdeeb8d49ca8fa6c2d4b06013dc7b9d6206","impliedFormat":99},{"version":"f882b77c5939860d599b4b7bc39f741ebcd56123e18b284500f4b8923acd2e72","affectsGlobalScope":true,"impliedFormat":99},{"version":"0230bc76ed3a464531a43d2434d315b9cc2096aaca28bdaa65b8f9dce9f3bc81","impliedFormat":99},{"version":"559d2d1cd7f37dc2ac59e7adce198ad16a5eb0c7273d67b8e4ff72821b7c853f","impliedFormat":99},{"version":"6161d12fc14a8e0cf492f9d49372a1189b1fe005662cb7fe6630352a6b0bb04e","impliedFormat":99},{"version":"7d3c06d4ad79d86c6f7518b77d335b324bc218a7cd8b3e15579c4b584b7307f9","impliedFormat":99},{"version":"65f5bc7ff74eeabe9925da575924601248471033c27bf0384643ea03cad2b57d","impliedFormat":99},{"version":"d08d474654640266d6ac03f51ee04d72438b78ea377b9dc4678c480ce0477e1a","impliedFormat":99},{"version":"929f21090183949e93fd99327d292bff76f781895d5252eb43319b2c3e014528","affectsGlobalScope":true,"impliedFormat":99},{"version":"f9f3097a031827350b6befd870e9da3ec0953b7269497c1a7c5dc840223d2fb3","impliedFormat":99},{"version":"d56278ed347a6685abc6da6b49277da36db3ddce86bd298c03b48a5f9c6d145c","affectsGlobalScope":true,"impliedFormat":99},"6e498d0ced89509c5e15beb4b8185aff55b0633260179dfa454af0ed3ef6867e","606b8713a01a8b84bc3e7ae27d0e11b7f1fcf7ca54d7cae9f37700faf11dd54f","3ea339efb8893d053812a11e51eee3fb49b66e2b853f167b3167565ac9460553","6a17f676d06d3e695520b275dd483b4fe62d34b84926c0bf6425c08490ee2c41",{"version":"0f28503979e769f6ee6e55350f621dc00e300f15688d52b02edc62d837d29b1d","impliedFormat":99},{"version":"fe869c79d427e84d916011d082def68a793c3c13e157079fec399f250418bd50","affectsGlobalScope":true,"impliedFormat":99},"3c523c4338a858825c62005f03ff49eeaf8290bdda52a8b8554be555bab7a077","5582fb24ca35ef8a72d61a095d62ae2ada8143c33bc56febf626e333d3a5b013","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","81ca54beeb924c5601f429901f0ef2ee616e4291a203ebb42f235d84c6ff0e40","07d5eb23abd7084841b9e51a04fe6b9ffd0b5f5eb04bcee3447fd958aab634b7","86d239790a025b4f1213571ed5d578b9080415e1218b253b499ed73ac436ae63","d2a35e0fac40e510839fdc737b1c16cd476150f7edef48a79553a8585b23f30b",{"version":"de53165df4274f512d63c56ad34b21c451f86e3cfd2d1e2dd866c5250e0924e8","signature":"79deb069b1537b1757965b5b16e5b8e6921017ce3f7088d1d813eee727b4b49e"},{"version":"7676ea7aed13b1887f9d232ea2d5d6f7dbf9cf04adedc9f78985893eb9b4a189","signature":"1004e6124d3c4663544dbb9431bdfb786459e4ca93d02cfe0ffcd8a0994af69d"},{"version":"4eb26a88276bdfea327e95d4ba3918a6cb8053cf19f4bdb3153020ab650ae7af","signature":"acfcfdf417c988d67e5d48f5fcff7b6dd52c88720ecd635137a2929170836244"},{"version":"f69671beaabadb5eb4b29d05eafde2114c1a3950069916a799ea8e2e97696e6b","signature":"52b248e376193dd4349afee293aaa4c7b4899dddae63cfa5a8a05cb980c24e04"},{"version":"eef204f061321360559bd19235ea32a9d55b3ec22a362cc78d14ef50d4db4490","affectsGlobalScope":true,"impliedFormat":1},{"version":"72bee526b949b9932edba50997ff3b9cdede7b314d790d5f0d94f3d2944930ea","impliedFormat":99},{"version":"2d412861573a672bd90fdcb1e48740593324565f3b3aaf6808c0e3e2f0d54ae8","affectsGlobalScope":true,"impliedFormat":99},{"version":"cd711db43a952f15464b571ac11b7a440332cd52342bc92c4bf908c70688f57f","affectsGlobalScope":true,"impliedFormat":99},{"version":"9d8709c916778cb34830708ed47b78e9a46d1fb2eb73a682b14eee990bed4aa6","impliedFormat":99},{"version":"507e2131e89b515ce40c05c0c2fef6cc575ba8947703f92e8cdf36078747a9ff","affectsGlobalScope":true,"impliedFormat":99},{"version":"999a90d30a3183dcee987d0a5a7c586aba5bacbf6ce087ba8635124082ccfeea","impliedFormat":99},{"version":"8a5878edd52f4a720560b4c6e6247e9ddc3df6118ad9cf2f9927903b03d5f440","impliedFormat":99},{"version":"e7be17cfcbe98809c052f384c230ecea9e1cee045edac9db0659e997a988ff9e","affectsGlobalScope":true,"impliedFormat":1},{"version":"baf3507287629018d38c88e2636dd041550c70620bb774127011eb6dc3b361c0","impliedFormat":1},{"version":"4738bc5d39ac01532d861967a4fe52769e3892fb8022d4524802ac1c7aed4934","impliedFormat":1},{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true,"impliedFormat":1},{"version":"65b91a3725399231d3469529b5e27b85bf2aa98013e607f308e5fe260b47eeff","impliedFormat":99},{"version":"04e3793f33c71ceae20a4719698c068b72c98cf925b3c5f8a33096c00ed44258","impliedFormat":99},{"version":"fa8ef3fb228e258f9508386e2056c95c959d1c1168301181313a5c978754ba70","impliedFormat":99},{"version":"15c9478a8a3d630ac5e738aca25fca15d0842aaeb97fb1a9c1e80eddc5a0e14c","impliedFormat":99},{"version":"cc46ce345c0e19e456388446733250527eead4ca557b5e5fdf0c2e30adc3c89f","impliedFormat":99},{"version":"88cda4269c54f0803834fd62b2fac61af8bff7a085693f7ca9df85c1f19dee8a","impliedFormat":99},{"version":"5a2888a80ba9fae27aaa312464ab4b744ce4cfce573c105844ad8e94a39e2d7d","affectsGlobalScope":true,"impliedFormat":99},{"version":"260d1e9ec9c633c7ae90d8c17762e77924eef5d71357b27bfd351da698db4f6d","impliedFormat":99},{"version":"6168f8e0a5b354f8177bf0dee7c1a69c2afb6a155d5534221f3a1a2d86b84367","impliedFormat":99},{"version":"d7840fd94e6dfb5b0d9df5a20fe1e79c8dd72b1efdb74d2ef04c31e3588c6b5b","impliedFormat":99},{"version":"fa6d684e15fe6e99c7208a51b45c04f8e0147f1c8587871aac48fff55b7b1f24","impliedFormat":99},{"version":"d61a4b627c3e2e054616df905a25226f547dc0e821c2a2b6d5f13318b3fd7e78","impliedFormat":99},{"version":"1308479c593c3d337bd9c438ac1d7164006a9286638cec0b26e3331a978f91d4","impliedFormat":99},{"version":"cfad37dbd7cf27cc16758755847ad7c07ac52a01c466486e50f8f84d0f0ea9ce","impliedFormat":99},{"version":"0c4d3009672fd12d4d9a6505e769de9369c180dcfa8188d9fd850ec156245d87","impliedFormat":99},{"version":"793fca6322a14fa8fa6bc6a4fc694fd7bcc88922c4f9abcd48bf6908f8bf939b","impliedFormat":99},{"version":"be3e93b109deb44b925583674cc0706c0b3c2e7316bcf79631285a45c18ed0c8","impliedFormat":99},{"version":"50f63746fc2a779d1f9c5657fd78e292045dc98b540e026799e039ea629f2943","impliedFormat":99},{"version":"8527c0f0749def85b8890d0ea09343d9670b0c45794ff27321de93100de1ac8d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"8c6ea4dfb3dc8853b017c3d32b5daa85c7a8f8d369948fbd549ec92cc5bc9ece","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1e07c908517c06ef99001d074c4068deb989e7410ade42fc54b213e041ee82d2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"b8baad6a3e8de57f9d861bd3b4ba8f9342adbc6d45174edd63f9bc6fab33c579","signature":"8c60144e64b097f4d8d99e882cbce15c62b40377ba544267315c8284e150c921"},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"3ac40516c33b87f751f7507346933081a26cdb8a3e11a6b3aa07d23f803c85db","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"829bc57ee8f287b490ab5bbc5a962fca57e432c1e38ec680ecd3ecaf12800613","impliedFormat":1},{"version":"eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","impliedFormat":1},{"version":"3a3ff14da53d5013f3e6d8c4ad55225e3649c08786c4421ce639c00d8d589b7d","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"d243db6b25788f439e7e2f03c05688e92f46764351673bb0e7b2f3631232e186","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"9ac977503f15bf13ca7c82ad9a32a782f42d43e474824e8b3bffe228fd5f2639","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"7cb4f431a4591b0e23002bed805dc871a874dfed6b9a3994dce68a6df73e6739","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"2e6fca0024dd8a076a886d9ec031a936ea59ad878a25b944820495d92f8381dd","affectsGlobalScope":true,"impliedFormat":1},{"version":"47d917e731d06acf182baa38ac2fbd720c3555fa9160e6a40d47994515f7f0ea","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"4c8a22ece1ef9fb4659ec034e1131310ca188975f39948ab38f7e4485cb46d1f","impliedFormat":1},{"version":"9c90f502816bd0179556bb875e86c944af3f6b995cde63199edbe4e0b1219aba","impliedFormat":1},{"version":"98fc7231d6c846a8ed19bdef026ddffe5e2182cc818be74899287421ad370a87","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"beabd75eab00f72e79feb85f6bbe81b549461a2c870674923c24a8d180d6cf07","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"77c33fa85a1485ccf0d7cd8e0f50677924045cc4086a39af564f608e21a46343","impliedFormat":1},{"version":"22e77cc53de19959fdb4c4876e7bafd2f2a8cf8ead059abf7b299efe85f76251","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"5336674547d832b901f47d5602c61dd4ba91796a4711235aa4aead3386ce05a4","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"b17f272f903d155b9ec21791b5889b638977bc1dee181efb2bc317ce006d8c9b","impliedFormat":1},{"version":"18b03a8395192811131170042d6af50c4292b0d708789dbf5bc805b6dd9f4c14","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"cd2f3cdc3954c55199d688feebdc2aaa68670e86963e30b7fab2f27c0dc94553","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"b8e805bcd8cfb7986d2bcf5e785e34fdfe0cb2f31a89b585e2c9204513efa8cf","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"b4769767f13a1692a66186e01c3aa186ff808d5ff72ed36eda8c37738fb2ac92","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"441a29b18cc64c37fb196172ec1e499f60d5792edc89648e6cb550180c81050f","impliedFormat":1},{"version":"1ec3f3a5f04cc42df33274fbe5c0937d9a9e06f249a7a26288d7d54f0763ffd4","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"76619734a63492651c3467de6fd43d93d7bdd836aff49b86f0e83e2c1e17111a","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"7ec8d7d483f7394f9da611b10d3a0e402f76ff5c991261e6ce43a15f81ca4258","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"db3939c70002734d9e344f35f33d151cf302d326ef08338e9beb8e7f9937d2a2","impliedFormat":1},{"version":"32eccc272f35e34ff1c3d33d2c8d05e6821a6e95f648e118a5f4a0f3512895ac","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"632c45ccb4cdc2c3a80c7a36a63dd7763016e59cac5e07bfb3e37e3548957028","impliedFormat":1},{"version":"c9a2daf6cd1eb854cd5b9e424247c5e306692055738c2effd35f7871d942b76e","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1},{"version":"29f72ec1289ae3aeda78bf14b38086d3d803262ac13904b400422941a26a3636","affectsGlobalScope":true,"impliedFormat":1}],"root":[[51,55],65,66,123,136,137,[177,180],[211,214]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./","rootDir":"..","skipLibCheck":true,"sourceMap":true,"strict":true,"target":5,"useDefineForClassFields":false},"referencedMap":[[56,1],[69,1],[70,2],[73,3],[71,3],[75,3],[78,4],[77,3],[76,3],[74,3],[72,5],[57,1],[58,6],[156,7],[154,8],[155,9],[157,10],[163,11],[158,12],[164,13],[144,14],[143,15],[146,16],[147,17],[68,18],[67,15],[145,19],[151,20],[152,21],[153,21],[150,1],[148,22],[149,23],[183,24],[184,25],[182,1],[185,26],[198,1],[200,27],[199,28],[209,29],[194,1],[201,30],[202,31],[203,1],[204,28],[207,32],[197,19],[206,33],[208,31],[210,34],[193,35],[189,36],[181,1],[343,1],[278,37],[279,37],[280,38],[216,39],[281,40],[282,41],[283,42],[284,43],[285,44],[286,45],[287,46],[288,47],[289,48],[290,48],[291,49],[292,50],[293,1],[294,51],[295,52],[217,1],[215,1],[296,53],[297,54],[298,55],[342,56],[299,57],[300,58],[301,57],[302,59],[303,60],[305,61],[306,62],[307,62],[308,62],[309,63],[310,64],[311,65],[312,66],[313,67],[314,68],[315,68],[316,69],[317,1],[318,1],[319,70],[320,71],[321,72],[322,73],[323,74],[324,75],[325,76],[326,77],[327,78],[328,79],[329,80],[330,81],[331,82],[332,83],[333,84],[334,85],[335,86],[336,87],[337,88],[338,89],[218,57],[219,1],[220,90],[221,91],[222,1],[223,92],[224,1],[269,93],[270,94],[271,95],[272,95],[273,96],[274,1],[275,40],[276,97],[277,94],[339,98],[340,99],[341,100],[192,101],[191,102],[190,1],[60,1],[304,1],[186,36],[188,103],[187,104],[130,105],[129,106],[126,1],[127,107],[128,108],[62,109],[59,110],[124,110],[63,1],[61,111],[195,110],[79,112],[125,113],[205,110],[64,114],[196,115],[86,1],[50,116],[49,1],[47,1],[48,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[19,1],[20,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[46,1],[243,117],[257,118],[240,119],[258,120],[267,121],[231,122],[232,123],[230,124],[266,125],[261,126],[265,127],[234,128],[244,129],[254,130],[233,131],[264,132],[228,133],[229,126],[235,129],[236,1],[242,134],[239,129],[226,135],[268,136],[259,137],[247,138],[246,129],[248,139],[251,140],[245,141],[249,142],[262,125],[237,143],[238,144],[252,145],[227,120],[256,146],[255,129],[241,144],[250,147],[253,148],[260,1],[225,1],[263,149],[131,150],[135,151],[132,152],[134,15],[133,15],[173,153],[174,154],[166,15],[175,15],[176,155],[138,156],[169,157],[170,157],[167,157],[168,157],[172,157],[171,157],[165,158],[55,159],[53,160],[65,161],[52,162],[66,161],[54,160],[123,163],[137,164],[136,165],[177,166],[51,162],[178,167],[180,168],[179,160],[211,169],[212,170],[213,171],[214,172],[162,173],[161,174],[160,175],[140,176],[141,177],[142,178],[139,15],[159,179],[89,1],[91,1],[92,1],[93,180],[90,1],[94,19],[97,154],[98,19],[99,19],[100,19],[105,181],[101,19],[102,19],[103,19],[104,19],[96,1],[106,182],[87,154],[95,1],[88,183],[80,1],[85,184],[83,185],[82,186],[84,1],[81,1],[116,19],[113,19],[110,1],[112,19],[114,19],[115,19],[111,19],[117,19],[107,19],[122,187],[120,19],[121,19],[118,19],[108,19],[109,19],[119,19]],"version":"5.9.3"}
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/tslib/tslib.d.ts","../../../node_modules/tslib/modules/index.d.ts","../src/types.ts","../src/menu-mode.ts","../src/menu-active.ts","../src/menu-privilege.ts","../src/index.ts","../../../node_modules/@lit/reactive-element/development/css-tag.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-controller.d.ts","../../../node_modules/@lit/reactive-element/development/reactive-element.d.ts","../../../node_modules/lit-html/development/directive.d.ts","../../../node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/lit-html/development/lit-html.d.ts","../../../node_modules/lit-element/development/lit-element.d.ts","../../../node_modules/lit-html/development/is-server.d.ts","../../../node_modules/lit/development/index.d.ts","../src/menu-landscape-styles.ts","../src/menu-portrait-styles.ts","../../../node_modules/@material/web/icon/internal/icon.d.ts","../../../node_modules/@material/web/icon/icon.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/base.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/custom-element.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/property.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/state.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/event-options.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-all.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-async.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-nodes.d.ts","../../../node_modules/@lit/reactive-element/development/decorators/query-assigned-elements.d.ts","../../../node_modules/lit/development/decorators.d.ts","../../shell/dist/src/types/domain.d.ts","../../shell/dist/src/types/user.d.ts","../../shell/dist/src/types/role.d.ts","../../shell/dist/src/types/privilege.d.ts","../../shell/dist/src/types/types.d.ts","../../shell/dist/src/types/index.d.ts","../../../node_modules/redux/index.d.ts","../../shell/dist/src/lazy-reducer-enhancer.d.ts","../../shell/dist/src/store.d.ts","../../shell/dist/src/actions/app.d.ts","../../shell/dist/src/actions/route.d.ts","../../shell/dist/src/actions/busy.d.ts","../../shell/dist/src/actions/const.d.ts","../../shell/dist/src/actions/index.d.ts","../../shell/dist/src/app/pages/page-view.d.ts","../../shell/dist/src/object-store.d.ts","../../shell/dist/src/custom-alert.d.ts","../../shell/dist/src/connect-mixin.d.ts","../../shell/dist/src/controllers/app-controller.d.ts","../../shell/dist/src/controllers/context-controller.d.ts","../../shell/dist/src/controllers/font-controller.d.ts","../../shell/dist/src/controllers/layout-controller.d.ts","../../shell/dist/src/controllers/menu-controller.d.ts","../../shell/dist/src/controllers/route-controller.d.ts","../../shell/dist/src/controllers/snackbar-controller.d.ts","../../shell/dist/src/controllers/index.d.ts","../../shell/dist/src/index.d.ts","../../styles/dist/src/headroom-styles.d.ts","../../styles/dist/src/scrollbar-styles.d.ts","../../styles/dist/src/spinner-styles.d.ts","../../styles/dist/src/common-button-styles.d.ts","../../styles/dist/src/form-field-styles.d.ts","../../styles/dist/src/common-grist-styles.d.ts","../../styles/dist/src/button-container-styles.d.ts","../../styles/dist/src/common-header-styles.d.ts","../../styles/dist/src/common-popup-styles.d.ts","../../styles/dist/src/box-padding-editor-styles.d.ts","../../styles/dist/src/gradient-direction-styles.d.ts","../../styles/dist/src/property-grid-styles.d.ts","../../styles/dist/src/table-event-styles.d.ts","../../styles/dist/src/inspector-styles.d.ts","../../styles/dist/src/line-styles.d.ts","../../styles/dist/src/index.d.ts","../src/ox-menu-landscape.ts","../../../node_modules/lit-html/development/async-directive.d.ts","../../../node_modules/lit-html/development/directives/async-replace.d.ts","../../../node_modules/lit/development/directives/async-replace.d.ts","../../../node_modules/lit-html/development/directives/if-defined.d.ts","../../../node_modules/lit/development/directives/if-defined.d.ts","../../../node_modules/i18next/typescript/helpers.d.ts","../../../node_modules/i18next/typescript/options.d.ts","../../../node_modules/i18next/typescript/t.d.ts","../../../node_modules/i18next/index.d.ts","../../../node_modules/i18next/index.d.mts","../../i18n/dist/src/config.d.ts","../../i18n/dist/src/localize.d.ts","../../i18n/dist/src/ox-i18n.d.ts","../../i18n/dist/src/ox-i18n-selector.d.ts","../../i18n/dist/src/index.d.ts","../src/ox-menu-portrait.ts","../src/ox-menu-part.ts","../../layout/dist/src/initializer.d.ts","../../popup/dist/src/ox-popup.d.ts","../../popup/dist/src/ox-popup-list.d.ts","../../popup/dist/src/ox-popup-menu.d.ts","../../popup/dist/src/ox-popup-menuitem.d.ts","../../../node_modules/@material/web/elevation/internal/elevation.d.ts","../../../node_modules/@material/web/elevation/elevation.d.ts","../../../node_modules/@material/web/internal/controller/attachable-controller.d.ts","../../../node_modules/@material/web/focus/internal/focus-ring.d.ts","../../../node_modules/@material/web/focus/md-focus-ring.d.ts","../../../node_modules/@material/web/ripple/internal/ripple.d.ts","../../../node_modules/@material/web/ripple/ripple.d.ts","../../../node_modules/@material/web/labs/behaviors/mixin.d.ts","../../../node_modules/@material/web/labs/behaviors/element-internals.d.ts","../../../node_modules/@material/web/labs/behaviors/form-associated.d.ts","../../../node_modules/@material/web/labs/behaviors/form-submitter.d.ts","../../../node_modules/@material/web/button/internal/button.d.ts","../../../node_modules/@material/web/button/internal/filled-button.d.ts","../../../node_modules/@material/web/button/filled-button.d.ts","../../../node_modules/@material/web/button/internal/outlined-button.d.ts","../../../node_modules/@material/web/button/outlined-button.d.ts","../../popup/dist/src/ox-prompt.d.ts","../../popup/dist/src/ox-floating-overlay.d.ts","../../popup/dist/src/open-popup.d.ts","../../popup/dist/src/index.d.ts","../../../node_modules/@material/web/button/internal/text-button.d.ts","../../../node_modules/@material/web/button/text-button.d.ts","../../layout/dist/src/layouts/ox-snack-bar.d.ts","../../layout/dist/src/components/ox-resize-splitter.d.ts","../../layout/dist/src/layouts/ox-header-bar.d.ts","../../layout/dist/src/layouts/ox-nav-bar.d.ts","../../layout/dist/src/layouts/ox-aside-bar.d.ts","../../layout/dist/src/layouts/ox-footer-bar.d.ts","../../layout/dist/src/layouts/ox-page-header-bar.d.ts","../../layout/dist/src/layouts/ox-page-footer-bar.d.ts","../../layout/dist/src/actions/layout.d.ts","../../layout/dist/src/actions/snackbar.d.ts","../../layout/dist/src/components/ox-split-pane.d.ts","../../layout/dist/src/index.d.ts","../src/ox-top-menu-bar.ts","../stories/ox-menu-container.ts","../stories/test-menus.ts","../stories/ox-menu-portrait.stories.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/get-diffable-html.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff-plugin.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/chai-dom-diff.d.ts","../../../node_modules/@open-wc/semantic-dom-diff/index.d.ts","../../../node_modules/chai-a11y-axe/chai-a11y-axe-plugin.d.ts","../../../node_modules/chai-a11y-axe/src/accessible.d.ts","../../../node_modules/chai-a11y-axe/index.d.ts","../../../node_modules/@types/chai-dom/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/sinon-chai/index.d.ts","../../../node_modules/@open-wc/testing/register-chai-plugins.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/elementupdated.d.ts","../../../node_modules/lit-html/development/static.d.ts","../../../node_modules/lit/development/static-html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/renderable.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/dedupe-mixin/index.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/types.d.ts","../../../node_modules/@open-wc/testing-helpers/node_modules/@open-wc/scoped-elements/dist-types/html-element.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture-no-side-effect.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/fixturewrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/helpers.d.ts","../../../node_modules/lit/development/html.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/scopedelementswrapper.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/litfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/src/stringfixture.d.ts","../../../node_modules/@open-wc/testing-helpers/types/index.d.ts","../../../node_modules/@open-wc/testing/index.d.ts","../test/menu-active.test.ts","../test/menu-mode.test.ts","../test/menu-privilege.test.ts","../test/ox-menu-portrait.test.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/dispatcher1-wrapper.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/ffi.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/iter.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vfs.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/mocha/index.d.ts"],"fileIdsList":[[219,284,292,297,300,302,303,304,317],[69,219,284,292,297,300,302,303,304,317],[58,69,219,284,292,297,300,302,303,304,317],[58,69,77,219,284,292,297,300,302,303,304,317],[71,219,284,292,297,300,302,303,304,317],[56,57,219,284,292,297,300,302,303,304,317],[64,158,219,284,292,297,300,302,303,304,317],[61,64,150,152,153,154,155,156,219,284,292,297,300,302,303,304,317],[61,147,157,219,284,292,297,300,302,303,304,317],[61,157,219,284,292,297,300,302,303,304,317],[157,219,284,292,297,300,302,303,304,317],[64,160,219,284,292,297,300,302,303,304,317],[64,166,219,284,292,297,300,302,303,304,317],[64,146,219,284,292,297,300,302,303,304,317],[61,64,219,284,292,297,300,302,303,304,317],[64,148,219,284,292,297,300,302,303,304,317],[64,149,219,284,292,297,300,302,303,304,317],[64,67,219,284,292,297,300,302,303,304,317],[64,219,284,292,297,300,302,303,304,317],[64,153,219,284,292,297,300,302,303,304,317],[64,153,154,219,284,292,297,300,302,303,304,317],[61,64,148,219,284,292,297,300,302,303,304,317],[64,151,219,284,292,297,300,302,303,304,317],[184,185,219,284,292,297,300,302,303,304,317],[186,219,284,292,297,300,302,303,304,317],[185,187,219,284,292,297,300,302,303,304,317],[201,202,219,284,292,297,300,302,303,304,317],[201,219,284,292,297,300,302,303,304,317],[197,199,205,206,207,210,211,219,284,292,297,300,302,303,304,317],[200,203,219,284,292,297,300,302,303,304,317],[204,219,284,292,297,300,302,303,304,317],[200,204,209,219,284,292,297,300,302,303,304,317],[200,203,208,219,284,292,297,300,302,303,304,317],[184,196,212,219,284,292,297,300,302,303,304,317],[188,191,192,195,219,284,292,297,300,302,303,304,317],[184,219,284,292,297,300,302,303,304,317],[219,281,282,284,292,297,300,302,303,304,317],[219,283,284,292,297,300,302,303,304,317],[284,292,297,300,302,303,304,317],[219,284,292,297,300,302,303,304,317,326],[219,284,285,290,292,295,297,300,302,303,304,306,317,322,335],[219,284,285,286,292,295,297,300,302,303,304,317],[219,284,287,292,297,300,302,303,304,317,336],[219,284,288,289,292,297,300,302,303,304,308,317],[219,284,289,292,297,300,302,303,304,317,322,332],[219,284,290,292,295,297,300,302,303,304,306,317],[219,283,284,291,292,297,300,302,303,304,317],[219,284,292,293,297,300,302,303,304,317],[219,284,292,294,295,297,300,302,303,304,317],[219,283,284,292,295,297,300,302,303,304,317],[219,284,292,295,297,298,300,302,303,304,317,322,335],[219,284,292,295,297,298,300,302,303,304,317,324,326],[219,271,284,292,295,297,299,300,302,303,304,306,317,322,335],[219,284,292,295,297,299,300,302,303,304,306,317,322,332,335],[219,284,292,297,299,300,301,302,303,304,317,322,332,335],[218,219,220,221,222,223,224,225,226,227,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344],[219,284,292,295,297,300,302,303,304,317],[219,284,292,297,300,302,304,317],[219,284,292,297,300,302,303,304,305,317,335],[219,284,292,295,297,300,302,303,304,306,317,322],[219,284,292,297,300,302,303,304,308,317],[219,284,292,297,300,302,303,304,309,317],[219,284,292,295,297,300,302,303,304,312,317],[219,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,340,341,342,343],[219,284,292,297,300,302,303,304,314,317],[219,284,292,297,300,302,303,304,315,317],[219,284,289,292,297,298,300,302,303,304,306,317,324,332],[219,284,292,295,297,300,302,303,304,317,318],[219,284,292,297,300,302,303,304,317,319,336,340],[219,284,292,295,297,300,302,303,304,317,322,324,325,326],[219,284,292,297,300,302,303,304,317,323,326],[219,284,292,295,297,300,302,303,304,317,322,324],[219,284,292,295,297,300,302,303,304,317,322,325,326],[219,284,292,297,300,302,303,304,317,326,336],[219,284,292,297,300,302,303,304,317,327],[219,281,284,292,297,300,302,303,304,317,322,329,335],[219,284,292,297,300,302,303,304,317,322,328],[219,284,292,295,297,300,302,303,304,317,330,331],[219,284,292,297,300,302,303,304,317,330,331],[219,284,289,292,297,300,302,303,304,306,317,322,332],[219,284,292,297,300,302,303,304,317,333],[219,284,292,297,300,302,303,304,306,317,334],[219,284,292,297,299,300,302,303,304,315,317,335],[219,284,292,297,300,302,303,304,317,336,337],[219,284,289,292,297,300,302,303,304,317,337],[219,284,292,297,300,302,303,304,317,322,338],[219,284,292,297,298,300,302,303,304,317],[219,284,292,297,300,302,303,304,305,317,340],[219,284,292,297,300,302,303,304,317,341],[219,284,287,292,297,300,302,303,304,317],[219,284,289,292,297,300,302,303,304,317],[219,284,292,297,300,302,303,304,317,336],[219,271,284,292,297,300,302,303,304,317],[219,284,292,297,300,302,303,304,317,335],[219,284,292,297,300,302,303,304,317,342],[219,284,292,297,300,302,303,304,312,317],[219,284,292,297,300,302,303,304,317,331],[219,271,284,292,295,297,298,300,302,303,304,312,317,322,326,335,338,340,342],[219,284,292,297,300,302,303,304,317,322,343],[219,284,292,297,300,302,303,304,317,324,344],[184,194,219,284,292,297,300,302,303,304,317],[193,219,284,292,297,300,302,303,304,317],[190,219,284,292,297,300,302,303,304,317],[189,219,284,292,297,300,302,303,304,317],[129,130,131,132,219,284,292,297,300,302,303,304,317],[129,130,131,219,284,292,297,300,302,303,304,317],[129,219,284,292,297,300,302,303,304,317],[129,130,219,284,292,297,300,302,303,304,317],[58,61,219,284,292,297,300,302,303,304,317],[59,61,219,284,292,297,300,302,303,304,317],[61,219,284,292,297,300,302,303,304,317],[59,61,124,219,284,292,297,300,302,303,304,317],[59,60,219,284,292,297,300,302,303,304,317],[70,71,72,73,74,75,76,77,78,219,284,292,297,300,302,303,304,317],[125,219,284,292,297,300,302,303,304,317],[127,219,284,292,297,300,302,303,304,317],[58,61,62,63,219,284,292,297,300,302,303,304,317],[198,219,284,292,297,300,302,303,304,317],[49,219,284,292,297,300,302,303,304,317],[219,234,237,240,241,284,292,297,300,302,303,304,317,335],[219,237,284,292,297,300,302,303,304,317,322,335],[219,237,241,284,292,297,300,302,303,304,317,335],[219,284,292,297,300,302,303,304,317,322],[219,231,284,292,297,300,302,303,304,317],[219,235,284,292,297,300,302,303,304,317],[219,233,234,237,284,292,297,300,302,303,304,317,335],[219,284,292,297,300,302,303,304,306,317,332],[219,284,292,297,300,302,303,304,317,345],[219,231,284,292,297,300,302,303,304,317,345],[219,233,237,284,292,297,300,302,303,304,306,317,335],[219,228,229,230,232,236,284,292,295,297,300,302,303,304,317,322,335],[219,237,284,292,297,300,302,303,304,317],[219,237,246,255,284,292,297,300,302,303,304,317],[219,229,235,284,292,297,300,302,303,304,317],[219,237,265,266,284,292,297,300,302,303,304,317],[219,229,232,237,284,292,297,300,302,303,304,317,326,335,345],[219,233,237,284,292,297,300,302,303,304,317,335],[219,228,284,292,297,300,302,303,304,317],[219,231,232,233,235,236,237,238,239,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,269,270,284,292,297,300,302,303,304,317],[219,237,258,261,284,292,297,300,302,303,304,317],[219,237,246,248,249,284,292,297,300,302,303,304,317],[219,235,237,248,250,284,292,297,300,302,303,304,317],[219,236,284,292,297,300,302,303,304,317],[219,229,231,237,284,292,297,300,302,303,304,317],[219,237,241,248,250,284,292,297,300,302,303,304,317],[219,241,284,292,297,300,302,303,304,317],[219,235,237,240,284,292,297,300,302,303,304,317,335],[219,229,233,237,246,284,292,297,300,302,303,304,317],[219,237,258,284,292,297,300,302,303,304,317],[219,250,284,292,297,300,302,303,304,317],[219,229,233,237,241,284,292,297,300,302,303,304,317],[219,231,237,265,284,292,297,300,302,303,304,317,326,342,345],[133,219,284,292,297,300,302,303,304,317],[134,135,136,137,219,284,292,297,300,302,303,304,317],[64,133,219,284,292,297,300,302,303,304,317],[64,165,219,284,292,297,300,302,303,304,317],[86,219,284,292,297,300,302,303,304,317],[141,165,168,170,171,172,173,174,175,176,177,178,219,284,292,297,300,302,303,304,317],[106,219,284,292,297,300,302,303,304,317],[163,169,219,284,292,297,300,302,303,304,317],[68,167,219,284,292,297,300,302,303,304,317],[50,51,52,53,54,219,284,292,297,300,302,303,304,317],[50,51,219,284,292,297,300,302,303,304,317],[50,64,219,284,292,297,300,302,303,304,317],[50,219,284,292,297,300,302,303,304,317],[50,51,64,65,68,79,106,122,219,284,292,297,300,302,303,304,317],[50,51,52,53,64,68,79,106,122,123,139,219,284,292,297,300,302,303,304,317],[50,51,52,64,66,68,79,106,122,126,128,138,219,284,292,297,300,302,303,304,317],[50,51,64,68,79,106,179,219,284,292,297,300,302,303,304,317],[50,51,64,68,79,122,139,219,284,292,297,300,302,303,304,317],[50,64,139,181,182,219,284,292,297,300,302,303,304,317],[50,51,53,213,219,284,292,297,300,302,303,304,317],[50,52,213,219,284,292,297,300,302,303,304,317],[50,51,54,213,219,284,292,297,300,302,303,304,317],[50,51,64,139,213,219,284,292,297,300,302,303,304,317],[142,143,144,145,162,164,219,284,292,297,300,302,303,304,317],[64,163,219,284,292,297,300,302,303,304,317],[61,64,68,219,284,292,297,300,302,303,304,317],[61,64,68,142,219,284,292,297,300,302,303,304,317],[61,64,142,219,284,292,297,300,302,303,304,317],[61,64,144,219,284,292,297,300,302,303,304,317],[61,64,68,159,161,219,284,292,297,300,302,303,304,317],[89,90,91,92,219,284,292,297,300,302,303,304,317],[98,99,100,101,102,103,104,219,284,292,297,300,302,303,304,317],[85,88,93,94,95,96,97,105,219,284,292,297,300,302,303,304,317],[86,87,219,284,292,297,300,302,303,304,317],[80,81,82,83,84,219,284,292,297,300,302,303,304,317],[81,82,219,284,292,297,300,302,303,304,317],[80,81,83,219,284,292,297,300,302,303,304,317],[107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,219,284,292,297,300,302,303,304,317]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6a5253138c5432c68a1510c70fe78a644fe2e632111ba778e1978010d6edfec","impliedFormat":1},{"version":"b8f34dd1757f68e03262b1ca3ddfa668a855b872f8bdd5224d6f993a7b37dc2c","impliedFormat":99},{"version":"30db73264f423790415f2f88f22c374cb0ede9c0610fe3386ae20cc17574bcf5","signature":"a4f32f4e2c7c8b874051148ee801dede9c40258b2f79e463fd28235af0ad3bd7"},{"version":"e0fb692d4f184e4389ff15b9a3afb373e614217d11209bbb7991323f9e39ca69","signature":"84b0557232f5482a21b7e925786f210e4ad2a230fe27ea74b68a3736be9baf8b"},{"version":"6ec6e8ac686c5e83784dde22df587e8798b665af08a70c4c733576d537d8306a","signature":"176ad452b559be09c46dd0a87d559ca6a875ae9f5f6dc60b04216987ccee1172"},{"version":"207a185ae4d9a3cc6c2481e19216e02aa3b465e37bdcf2a54c2ad81963574d2b","signature":"8c343f73650fe89ac17ccf2077c92a4efb35742b1b42d211754f1ce5b29e890c"},{"version":"93d215899a1bd18750be7a232c22c14539d440c03f660b86a1db21c3186dc56c","signature":"8cccc9e3831c43812a4afa5e2725761ca82575c74febb41ffe5e0560f38e18f6"},{"version":"74012d464fbc5354ca3a7d5e71bee43b17da01a853c8ff10971bbe3680c76f40","impliedFormat":99},{"version":"5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","impliedFormat":99},{"version":"a0f82d2f9450bd147a8c137798d9501bd49b7c9e118f75b07b76709ff39b6b55","affectsGlobalScope":true,"impliedFormat":99},{"version":"00cb63103f9670f8094c238a4a7e252c8b4c06ba371fea5c44add7e41b7247e4","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"e09db3291e6b440f7debed2227d8357e80c95987a0d0d67ac17521d8f7b11bdb","impliedFormat":99},{"version":"9a318e3a8900672b85cd3c8c3a5acf51b88049557a3ae897ccdcf2b85a8f61f9","impliedFormat":99},{"version":"1bcd560deed90a43c51b08aa18f7f55229f2e30974ab5ed1b7bb5721be379013","impliedFormat":99},{"version":"dc08fe04e50bc24d1baded4f33e942222bbdd5d77d6341a93cfe6e4e4586a3be","impliedFormat":99},{"version":"a1c5ae2fd49803fc6db34e95007b9c75a21aba738acc4a519c839a129e509eca","signature":"3bcaadf31685c068f5c12037763d5f7d16e86c25412946aad78e418193066ba6"},{"version":"0e43f1e286274c2769174bb426b53360b6b248a1c808f199ff28455853f47f93","signature":"b264a25bcb204cc781031cc94856e649951aaf0b3764b167c7de4f81852415ac"},{"version":"b93e2680295ac83b52846bcd76dd6d06507d3da1738ebe564a1e99543993b3b4","impliedFormat":99},{"version":"4ae1ed87c59518f4e0918a21409ec3020e97037a386b57953c6b9fed9cad6949","affectsGlobalScope":true,"impliedFormat":99},{"version":"cdeae34aca6700620ebf3f27cf7d439c3af97595dd6e2729fa4780483add5680","impliedFormat":99},{"version":"3ff87ea3471b51beaf4aa8fd8f4422862b11d343fdbb55bf383e0f8cc195a445","impliedFormat":99},{"version":"99bdf729529cdbf12e2bf76ea751b662011133dcf9e35abcb3def47bb02f7b0a","impliedFormat":99},{"version":"732fb71ecb695d6f36ddcbb72ebfe4ff6b6491d45101a00fa2b75a26b80d640f","impliedFormat":99},{"version":"039cb05125d7621f8143616c495b8e6b54249c4e64d2754b80ff93867f7f4b01","impliedFormat":99},{"version":"1b81f1fa82ad30af01ab1cae91ccaddc10c48f5916bbd6d282155e44a65d858d","impliedFormat":99},{"version":"a0fc7a02a75802678a67000607f20266cf1a49dc0e787967efe514e31b9ed0c3","impliedFormat":99},{"version":"5ebf098a1d81d400b8af82807cf19893700335cf91a7b9dbd83a5d737af34b11","impliedFormat":99},{"version":"101cf83ac3f9c5e1a7355a02e4fbe988877ef83c4ebec0ff0f02b2af022254a3","impliedFormat":99},{"version":"d017e2fcd44b46ca80cd2b592a6314e75f5caab5bda230f0f4a45e964049a43a","impliedFormat":99},{"version":"a8992b852521a66f63e0cedc6e1f054b28f972232b6fa5ca59771db6a1c8bbea","impliedFormat":99},"4d4cf93a6b4c81851ad759e4569b6feb7a701e80b13a6f9d8d9c6012bbb86bd6","2e6035af8f3e43bf95e4983329c8277d66f9b271106af27b99a85d1c1b9daf4a","df32d43311e85715e2a573239a4bbc5b78ebaf29af2af5fa8c85370197997515","3a792bbf677343364a1d9b7197c6e4e512764f17364efd656b1a3598f2a9e820","3d7c0b593a29d717b2b2ba3f03f819c3c48bf9e250d79c4a31860af80f177e8c","e576aa80090f8b6020355ca8d7f4184067c84389f4b92125be29e03b1f6c5194",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true,"impliedFormat":1},"487213b1bcbdaa470cf59a4cea3f8a939b9222e74b455fe0fd2f0dc2346cc3c0",{"version":"8a9e962b8c98aa48377773c40ac7a3e530fb3354cec48fdb59d8e2df3a624a0c","affectsGlobalScope":true},"641089f0b8094ef74b9d4b3364d5dec1592d5e3b8a51c1ba491bc8872049e79a","8e33e65ce7fcd3cb20e29505452daa51543003d5db597f1aca2a51ff9043c8a7","b42033bf1067564808e4d360d79281667c2b3b0792c2d615ab641eb85974d4ba","7af29b0589483f7bb8a99405ddb849f34bc053146184561ed4179e02f5fe4d0f","ad3ee9f7d14ad8b7ae8094d0f1a2276656f7a970827d4030d1dead7c2d765f75","9c7568f9c75cf6a7d35dc9f18c5971cd5b21344c686c7cce56b3558d3305d40f","fc48282c397084016a939e1b3f91dcaf4199b6cba339d91d8b2dc2acade79762","3e62a55b950132d6eeacc607b7a1bff990d5484347b2be5a1f54db51af30ff25","8b86f33b7e06e2f0a3bf4703cf9d8b0baab016e36b83f2a33dac184f061e17ea","88c205bacab539d8e844b80a1ec76fc649fbc731f12dfd7cca160976b5ddfd5a","565d32dce0b8761e7cfafe40c56a8a0fab0bb9e7bb35a31d9712643b3c8dbbc4","4bde12afd6fdd6e52d7316e00adfbccd70becc3ebd9c4f647d07caef53a474ae","a7e588bdba05f1fb78f83e50ee62c93565134d3b996babf2697c2b43fcf17ce0","218a0f93d7091c68718ec4260f41f3a61b5ecb7e786a8c04e296292ff41db8f0","cf45487aeb18b31f1001b99d06793986ac3e6840b0602f9cf3756a2724348bf4","81f0a95843ae6e5a006addc4b5c217b075057ff82c9bc319655de21a13ba9f10","1a68f44e90ac5c261a3157004a7ec18759982b91fd725537d6db919d83601dd1","bb9f78774fda656644386e88b8522ddf5da7b9a2eeaf1df18dc4f5bef7bb8bbb","cf93fb9208a01c80f0fad245c4360356e5de6c2384b7641acf0b9cc2f5c42448","336398b0efaf964124e636a9b29c4edd5870aee79ac64bf87be58a9d66b7c048","571bc65ec37ba124e762bb822e14a2b8502dc684e356be8feaccbd6b9cadd023","7cd455fc4c4818f19263d73b29c59f3fb5fd54b45a6ab83ca3eb3661281db56b","d428a9fbb7cc014b69651793373edf9be9b0bba7c3e7f720d2a294dd1a50d7c5","1c6b9b5501774a2ece6574be8e26092800e3f1f836f8c179b4f9fdd271a620f8","bcd2426fd141157e04e3a8eff914b575403587f398cf0878f07c2f283e0d1afd","bac8ff394e831e4dd3f0961d6abb414b0e2b4ba16fdeb502d087ebf0340ed5f6","d9f8946a29f08d831605e6a9005785842dfbe5b09e5d38b6bf5073a11453890a","4c559568877f16745410a69bbbf0e2b131a228c819d581048f4d1ba7115b1b36","c89d663edb7c20cfab677286571dc8f4f09878119d7ecd010895133995f12532","9d04b912e18e966fca08158f28e5c41bfb2fa864187d926e04d737aa83a96e17","2ad4fcfa075cde73e5ae78491531cef44cec9fb9a880be8335afd98c444528cf","881cb6bb1e6384a9943b8c6f1cd3a0f215a683b032130f700e0d87bc9a990727","e2d895b9561b0b9a350c970475ff268e4e0fc44436e107a916889a0a93d3389b","a44226d2234e95aa575244a5db63d3d59efb1be57d30df72404e8fc2c0ae074d",{"version":"edce72f988c83157a88933338f4cdcf3bc72118ab04d9ac07cd35abee7c92678","signature":"143f8d604ef3ed044bfdeda068f2b4f33d0cd8df6d9d42b26a2ecce9426cb0bc"},{"version":"c42f9b18f5f559b133cf9b409f678afb30df9c6498865aae9a1abad0f1e727a8","impliedFormat":99},{"version":"feaf207fddc69de2a8826438be06f5f954964cddc8e95bf980c9fe02cb22616a","impliedFormat":99},{"version":"e3d6176dc713a2b6b17054021a6aa839824bf43f358e3ae12192b54c6de1a6b4","impliedFormat":99},{"version":"74fe889b1d2bba4b2893d518ba94e2b20dabe6d19d0c2f9554d9a5d3755710f4","impliedFormat":99},{"version":"2ae64cd7b6e760496069ee3b496c64700c956a0620740e1ef52b163824859db7","impliedFormat":99},{"version":"e30accdbef6f904f20354b6f598d7f2f7ff29094fc5410c33f63b29b4832172a","impliedFormat":1},{"version":"3786a961459023ec78bb575e5ea74f504d3ffc61ae82a305c959a4d94d7d70eb","impliedFormat":1},{"version":"de83915a380bdd6d7ddf075e3f60fe347db64ad4d06822835724ac601cb61daf","impliedFormat":1},{"version":"4d39c150715cb238da715e5c3fbeac2e2b2d0ef3f23c632996dd59ae35ba1f45","impliedFormat":1},{"version":"e9f80c5934982b97886eadab6684c073344a588d1758b12fba2d0184e6f450a2","impliedFormat":99},"0f81a53d54fd2b4ae2bf60067d616de99884bda21cb5784d942089d52319fb97","86d356e64ab8d56852623677eb1bed0c106703aed9b7788ad8a5a56e647822cb","29dca1b5f0cac95b675f86c7846f9d587ed47cc46609dd00d152bcb37683b069","231d829c892caeb88dd469e0847bf9d14e29c82b8b158b381ec866c868adf9af","886bcc73e8cf74ebec1bd14a5cc5b8dfa28276210df634e6f81c844b1eef767b",{"version":"e35e6932b04e07729e5cf34827e010d986a1d5b6e3f9f58ca79a23762071490b","signature":"02fe50a11bf8c03d31c39acadf143dbdf9560c0969c32322959c19ca2cd81e7d"},{"version":"2228a9e165866636123924e1557fd8e83e42127105e049abddbb9467d2c30577","signature":"1a2c7c8a8a6c53487774f22819087d2068fa7f61502374e2dbfa0966483de46d"},"60997095f458b8c2c94af5759c796d9d17678e740a41a04c3e518c14c47f2ee7",{"version":"75069a2a1e380502ff9a1074b8ee61f5e84f31973e5f81b444e6993e5633c72b","affectsGlobalScope":true},"8aff91f00938aa90ce829f4d577903d6826fa19e8edc583f7bb64ef1a6b4ae3b","986165ecc3a59d4b6a272a92f7ca4fd7a0762c63a674abd2c1efa0bea64da604","3e7b241ec38126d95f9e37c49a631c00cff006a888276e2d02920c6443c8b593",{"version":"6184309fe39e2fe444f4ba94e7cd1abef48fcb48e258457c3b77c65828184241","impliedFormat":99},{"version":"98c511f60c3079d731a35353a47bfa89dd79eeacad48a45d07170d22ef4bfd02","affectsGlobalScope":true,"impliedFormat":99},{"version":"905800cc110167503d0cf58bb0dd6fa4aaac1e9cedc9bd9c48e5d1f8b5b8d4c8","impliedFormat":99},{"version":"d17be577b99e59611df19ca2cf0356df554f55bb06617c21321fc4ec06b820d0","impliedFormat":99},{"version":"5f30145fbc8ca508ae4e0d90a4fe9eaff490783f380a92f6aa262accdf7887b7","affectsGlobalScope":true,"impliedFormat":99},{"version":"cefe49d29d43726072e88671a2c40cdeeb8d49ca8fa6c2d4b06013dc7b9d6206","impliedFormat":99},{"version":"f882b77c5939860d599b4b7bc39f741ebcd56123e18b284500f4b8923acd2e72","affectsGlobalScope":true,"impliedFormat":99},{"version":"0230bc76ed3a464531a43d2434d315b9cc2096aaca28bdaa65b8f9dce9f3bc81","impliedFormat":99},{"version":"559d2d1cd7f37dc2ac59e7adce198ad16a5eb0c7273d67b8e4ff72821b7c853f","impliedFormat":99},{"version":"6161d12fc14a8e0cf492f9d49372a1189b1fe005662cb7fe6630352a6b0bb04e","impliedFormat":99},{"version":"7d3c06d4ad79d86c6f7518b77d335b324bc218a7cd8b3e15579c4b584b7307f9","impliedFormat":99},{"version":"65f5bc7ff74eeabe9925da575924601248471033c27bf0384643ea03cad2b57d","impliedFormat":99},{"version":"d08d474654640266d6ac03f51ee04d72438b78ea377b9dc4678c480ce0477e1a","impliedFormat":99},{"version":"929f21090183949e93fd99327d292bff76f781895d5252eb43319b2c3e014528","affectsGlobalScope":true,"impliedFormat":99},{"version":"f9f3097a031827350b6befd870e9da3ec0953b7269497c1a7c5dc840223d2fb3","impliedFormat":99},{"version":"d56278ed347a6685abc6da6b49277da36db3ddce86bd298c03b48a5f9c6d145c","affectsGlobalScope":true,"impliedFormat":99},"6e498d0ced89509c5e15beb4b8185aff55b0633260179dfa454af0ed3ef6867e","5a7a29ea5ad47f5e753a3526a63810b311478e91929ac5ba9d9a973b72c2b6b0","f81b1c4ddc1052571bb585db60ca173e79e6d2fbb273916b883fd56ddd7d4f80","6a17f676d06d3e695520b275dd483b4fe62d34b84926c0bf6425c08490ee2c41",{"version":"0f28503979e769f6ee6e55350f621dc00e300f15688d52b02edc62d837d29b1d","impliedFormat":99},{"version":"fe869c79d427e84d916011d082def68a793c3c13e157079fec399f250418bd50","affectsGlobalScope":true,"impliedFormat":99},"3c523c4338a858825c62005f03ff49eeaf8290bdda52a8b8554be555bab7a077","5582fb24ca35ef8a72d61a095d62ae2ada8143c33bc56febf626e333d3a5b013","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","9d89de778f5c38f0fa4cbd27236724c9fa24d796032062a929772c8cd3baffa5","81ca54beeb924c5601f429901f0ef2ee616e4291a203ebb42f235d84c6ff0e40","07d5eb23abd7084841b9e51a04fe6b9ffd0b5f5eb04bcee3447fd958aab634b7","86d239790a025b4f1213571ed5d578b9080415e1218b253b499ed73ac436ae63","d2a35e0fac40e510839fdc737b1c16cd476150f7edef48a79553a8585b23f30b",{"version":"de53165df4274f512d63c56ad34b21c451f86e3cfd2d1e2dd866c5250e0924e8","signature":"79deb069b1537b1757965b5b16e5b8e6921017ce3f7088d1d813eee727b4b49e"},{"version":"7676ea7aed13b1887f9d232ea2d5d6f7dbf9cf04adedc9f78985893eb9b4a189","signature":"1004e6124d3c4663544dbb9431bdfb786459e4ca93d02cfe0ffcd8a0994af69d"},{"version":"4eb26a88276bdfea327e95d4ba3918a6cb8053cf19f4bdb3153020ab650ae7af","signature":"acfcfdf417c988d67e5d48f5fcff7b6dd52c88720ecd635137a2929170836244"},{"version":"f69671beaabadb5eb4b29d05eafde2114c1a3950069916a799ea8e2e97696e6b","signature":"52b248e376193dd4349afee293aaa4c7b4899dddae63cfa5a8a05cb980c24e04"},{"version":"eef204f061321360559bd19235ea32a9d55b3ec22a362cc78d14ef50d4db4490","affectsGlobalScope":true,"impliedFormat":1},{"version":"72bee526b949b9932edba50997ff3b9cdede7b314d790d5f0d94f3d2944930ea","impliedFormat":99},{"version":"2d412861573a672bd90fdcb1e48740593324565f3b3aaf6808c0e3e2f0d54ae8","affectsGlobalScope":true,"impliedFormat":99},{"version":"cd711db43a952f15464b571ac11b7a440332cd52342bc92c4bf908c70688f57f","affectsGlobalScope":true,"impliedFormat":99},{"version":"9d8709c916778cb34830708ed47b78e9a46d1fb2eb73a682b14eee990bed4aa6","impliedFormat":99},{"version":"507e2131e89b515ce40c05c0c2fef6cc575ba8947703f92e8cdf36078747a9ff","affectsGlobalScope":true,"impliedFormat":99},{"version":"999a90d30a3183dcee987d0a5a7c586aba5bacbf6ce087ba8635124082ccfeea","impliedFormat":99},{"version":"8a5878edd52f4a720560b4c6e6247e9ddc3df6118ad9cf2f9927903b03d5f440","impliedFormat":99},{"version":"e7be17cfcbe98809c052f384c230ecea9e1cee045edac9db0659e997a988ff9e","affectsGlobalScope":true,"impliedFormat":1},{"version":"baf3507287629018d38c88e2636dd041550c70620bb774127011eb6dc3b361c0","impliedFormat":1},{"version":"4738bc5d39ac01532d861967a4fe52769e3892fb8022d4524802ac1c7aed4934","impliedFormat":1},{"version":"525b52b38b44420fb1758c0917e7b67cf379f7f9477d2ba7343f3d5f50a44258","affectsGlobalScope":true,"impliedFormat":1},{"version":"65b91a3725399231d3469529b5e27b85bf2aa98013e607f308e5fe260b47eeff","impliedFormat":99},{"version":"04e3793f33c71ceae20a4719698c068b72c98cf925b3c5f8a33096c00ed44258","impliedFormat":99},{"version":"fa8ef3fb228e258f9508386e2056c95c959d1c1168301181313a5c978754ba70","impliedFormat":99},{"version":"15c9478a8a3d630ac5e738aca25fca15d0842aaeb97fb1a9c1e80eddc5a0e14c","impliedFormat":99},{"version":"cc46ce345c0e19e456388446733250527eead4ca557b5e5fdf0c2e30adc3c89f","impliedFormat":99},{"version":"88cda4269c54f0803834fd62b2fac61af8bff7a085693f7ca9df85c1f19dee8a","impliedFormat":99},{"version":"5a2888a80ba9fae27aaa312464ab4b744ce4cfce573c105844ad8e94a39e2d7d","affectsGlobalScope":true,"impliedFormat":99},{"version":"260d1e9ec9c633c7ae90d8c17762e77924eef5d71357b27bfd351da698db4f6d","impliedFormat":99},{"version":"6168f8e0a5b354f8177bf0dee7c1a69c2afb6a155d5534221f3a1a2d86b84367","impliedFormat":99},{"version":"d7840fd94e6dfb5b0d9df5a20fe1e79c8dd72b1efdb74d2ef04c31e3588c6b5b","impliedFormat":99},{"version":"fa6d684e15fe6e99c7208a51b45c04f8e0147f1c8587871aac48fff55b7b1f24","impliedFormat":99},{"version":"d61a4b627c3e2e054616df905a25226f547dc0e821c2a2b6d5f13318b3fd7e78","impliedFormat":99},{"version":"1308479c593c3d337bd9c438ac1d7164006a9286638cec0b26e3331a978f91d4","impliedFormat":99},{"version":"cfad37dbd7cf27cc16758755847ad7c07ac52a01c466486e50f8f84d0f0ea9ce","impliedFormat":99},{"version":"0c4d3009672fd12d4d9a6505e769de9369c180dcfa8188d9fd850ec156245d87","impliedFormat":99},{"version":"793fca6322a14fa8fa6bc6a4fc694fd7bcc88922c4f9abcd48bf6908f8bf939b","impliedFormat":99},{"version":"be3e93b109deb44b925583674cc0706c0b3c2e7316bcf79631285a45c18ed0c8","impliedFormat":99},{"version":"50f63746fc2a779d1f9c5657fd78e292045dc98b540e026799e039ea629f2943","impliedFormat":99},{"version":"8527c0f0749def85b8890d0ea09343d9670b0c45794ff27321de93100de1ac8d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"8c6ea4dfb3dc8853b017c3d32b5daa85c7a8f8d369948fbd549ec92cc5bc9ece","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1e07c908517c06ef99001d074c4068deb989e7410ade42fc54b213e041ee82d2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"b8baad6a3e8de57f9d861bd3b4ba8f9342adbc6d45174edd63f9bc6fab33c579","signature":"8c60144e64b097f4d8d99e882cbce15c62b40377ba544267315c8284e150c921"},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9b68a1c3f8f45b4c199fa5b3ac09497230cb8f2f0cdcfebe5817b30b836a64a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f53a7652392cf26ebbe4e29fd0672aa87c93bd6d0241289c13fab87b9ac35c8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"b00a630557d1622ad312633bdbfbdb9c6b7220d948dca9f899db30679f160074","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"88809d6c1b9c78d04a133646a6feb926def05a8774c308c7c93bc32ee163d271","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"3ac40516c33b87f751f7507346933081a26cdb8a3e11a6b3aa07d23f803c85db","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"829bc57ee8f287b490ab5bbc5a962fca57e432c1e38ec680ecd3ecaf12800613","impliedFormat":1},{"version":"eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","impliedFormat":1},{"version":"3a3ff14da53d5013f3e6d8c4ad55225e3649c08786c4421ce639c00d8d589b7d","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"38004e6801340cb890afb8cb5a9fc8972297e7f88ab94026e4b0b3c61fb32f8a","impliedFormat":1},{"version":"d243db6b25788f439e7e2f03c05688e92f46764351673bb0e7b2f3631232e186","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"149f9a9e7f04e67afa0e2a49fc0ff421035c01d6b793cfcae7d2e9f6819431e2","impliedFormat":1},{"version":"e8a9dfa4c75ef6d25df8b40eaa9c31e0a69452aaf2ced4a3f4215dbdbaa876f4","impliedFormat":1},{"version":"a70af845a2eb9dd6e2723e319e14ea7fb28b129ec1361c21509b49305448c323","impliedFormat":1},{"version":"b53dc572d4f187904207ae1166652de47aab8eeb00c254d009cb226863076b56","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"f501234c5aeeeb5d7659412335227466aaacf30b952372d60afeb21c02c96348","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"9ac977503f15bf13ca7c82ad9a32a782f42d43e474824e8b3bffe228fd5f2639","impliedFormat":1},{"version":"8b91ff5bb912be3ea213cbcf0075aace1f5d4ff249a0d227ed673868cb7bfabc","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"7cb4f431a4591b0e23002bed805dc871a874dfed6b9a3994dce68a6df73e6739","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"e99963ae1e3a48ca7a7958c02f3e88bb963eb7978c28b68ae6b8c9f03309d83c","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"594ae90cacd813fa392ff80d2e0a8eff4e41f4a136329a940e321399dd8895b4","impliedFormat":1},{"version":"d1f333ade8ff35a409b4984e1f11956fe11c61855b0c7e9b59f0313e48b40c4a","impliedFormat":1},{"version":"0224aa4b3464895d69c413a640a19ac2166778a74eb5eb3b36b021c72d42b274","impliedFormat":1},{"version":"2e6fca0024dd8a076a886d9ec031a936ea59ad878a25b944820495d92f8381dd","affectsGlobalScope":true,"impliedFormat":1},{"version":"47d917e731d06acf182baa38ac2fbd720c3555fa9160e6a40d47994515f7f0ea","impliedFormat":1},{"version":"2fbf504c4791f9d32cd766cfe6b605bcda63289b925401953a7900db9af85348","impliedFormat":1},{"version":"ed0fb633cae35948d9e144004299a4bdf1ab912667c787b7fbffcd6d8c7b92a2","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"4c8a22ece1ef9fb4659ec034e1131310ca188975f39948ab38f7e4485cb46d1f","impliedFormat":1},{"version":"9c90f502816bd0179556bb875e86c944af3f6b995cde63199edbe4e0b1219aba","impliedFormat":1},{"version":"98fc7231d6c846a8ed19bdef026ddffe5e2182cc818be74899287421ad370a87","impliedFormat":1},{"version":"e494b286c8e27c52f8c7f945aa80ff223f2a3cd4f7a2619fa8991f1459e26f07","impliedFormat":1},{"version":"f54f5f9e10bbceba7515dfad0ffc89dffdb8d749d0604594c57a725cf6d79c20","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"8c7e618c2a91ea7f6b5cca272a295864e92c16413be8fc56a943e8c7d5320011","affectsGlobalScope":true,"impliedFormat":1},{"version":"beabd75eab00f72e79feb85f6bbe81b549461a2c870674923c24a8d180d6cf07","impliedFormat":1},{"version":"9d37b8a9678efbcdf38238b59ce8e6f7db70aba1a516f3a4a671a301dbacfb3d","impliedFormat":1},{"version":"a47a792b8cff71443be8dfb199f2b77e102a7bf9d4f90c18059f05d9af2d7413","impliedFormat":1},{"version":"77c33fa85a1485ccf0d7cd8e0f50677924045cc4086a39af564f608e21a46343","impliedFormat":1},{"version":"22e77cc53de19959fdb4c4876e7bafd2f2a8cf8ead059abf7b299efe85f76251","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"ba389fd3d7fba6670e97bc82eb12469dcb371d22f24e63859c1df5a083c823ed","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"97234c5303866576f913d0ccae7d58d6322d9e803c7bf1228a3fda46ab8087b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"5336674547d832b901f47d5602c61dd4ba91796a4711235aa4aead3386ce05a4","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"73eeb740dacc45adc607a4f59f90fa9dbe2717d93d82f115f45f34e18f8d644a","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"b17f272f903d155b9ec21791b5889b638977bc1dee181efb2bc317ce006d8c9b","impliedFormat":1},{"version":"18b03a8395192811131170042d6af50c4292b0d708789dbf5bc805b6dd9f4c14","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"cd2f3cdc3954c55199d688feebdc2aaa68670e86963e30b7fab2f27c0dc94553","impliedFormat":1},{"version":"441b9bb09013654aa3d050e68b06464d8959b473e85868249d9d18f692acd35b","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"55246f15e33ff1e2e9e679b25fa9790a48db55dc63d567fe25fac8b6a0efe911","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"925734f303b7f0cc111d42aeb21781d38a79e6d5ac05b2b1400cd1861a75d27b","impliedFormat":1},{"version":"5b26c4dd672d88336bb929787c9bfb55119e80ba89ec6dc923da1c063892843e","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"b8e805bcd8cfb7986d2bcf5e785e34fdfe0cb2f31a89b585e2c9204513efa8cf","impliedFormat":1},{"version":"f12624a4a8d042b68914eac1b0a16571fc1c523173fcdf2517c65d191bd5a86c","impliedFormat":1},{"version":"b4769767f13a1692a66186e01c3aa186ff808d5ff72ed36eda8c37738fb2ac92","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"441a29b18cc64c37fb196172ec1e499f60d5792edc89648e6cb550180c81050f","impliedFormat":1},{"version":"1ec3f3a5f04cc42df33274fbe5c0937d9a9e06f249a7a26288d7d54f0763ffd4","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"76619734a63492651c3467de6fd43d93d7bdd836aff49b86f0e83e2c1e17111a","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"aed8f3e5c7e53462565eedf34a9bcb700393cb2c1ab0c768602b929c3ed3145d","impliedFormat":1},{"version":"8e2577e7262051fd3c5bd6ca2b2056d358ff8853565720f92455860824c25188","impliedFormat":1},{"version":"7ec8d7d483f7394f9da611b10d3a0e402f76ff5c991261e6ce43a15f81ca4258","impliedFormat":1},{"version":"bb9dbb4b2ad81e3e71ec5ba4314973718555b9d04ba2a17dfbf875efecb8e2c0","impliedFormat":1},{"version":"9021dc5be8f3a87af5cede29221188a6497e2092b6889e0be212ef6b6b7153e9","impliedFormat":1},{"version":"db3939c70002734d9e344f35f33d151cf302d326ef08338e9beb8e7f9937d2a2","impliedFormat":1},{"version":"32eccc272f35e34ff1c3d33d2c8d05e6821a6e95f648e118a5f4a0f3512895ac","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"632c45ccb4cdc2c3a80c7a36a63dd7763016e59cac5e07bfb3e37e3548957028","impliedFormat":1},{"version":"c9a2daf6cd1eb854cd5b9e424247c5e306692055738c2effd35f7871d942b76e","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"c46f111af647c4134ae869653130610d62da321f90ebf19e186a3ea4bed79350","impliedFormat":1},{"version":"29f72ec1289ae3aeda78bf14b38086d3d803262ac13904b400422941a26a3636","affectsGlobalScope":true,"impliedFormat":1}],"root":[[51,55],65,66,123,139,140,[180,183],[214,217]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./","rootDir":"..","skipLibCheck":true,"sourceMap":true,"strict":true,"target":5,"useDefineForClassFields":false},"referencedMap":[[56,1],[69,1],[70,2],[73,3],[71,3],[75,3],[78,4],[77,3],[76,3],[74,3],[72,5],[57,1],[58,6],[159,7],[157,8],[158,9],[160,10],[166,11],[161,12],[167,13],[147,14],[146,15],[149,16],[150,17],[68,18],[67,15],[148,19],[154,20],[155,21],[156,21],[153,1],[151,22],[152,23],[186,24],[187,25],[185,1],[188,26],[201,1],[203,27],[202,28],[212,29],[197,1],[204,30],[205,31],[206,1],[207,28],[210,32],[200,19],[209,33],[211,31],[213,34],[196,35],[192,36],[184,1],[346,1],[281,37],[282,37],[283,38],[219,39],[284,40],[285,41],[286,42],[287,43],[288,44],[289,45],[290,46],[291,47],[292,48],[293,48],[294,49],[295,50],[296,1],[297,51],[298,52],[220,1],[218,1],[299,53],[300,54],[301,55],[345,56],[302,57],[303,58],[304,57],[305,59],[306,60],[308,61],[309,62],[310,62],[311,62],[312,63],[313,64],[314,65],[315,66],[316,67],[317,68],[318,68],[319,69],[320,1],[321,1],[322,70],[323,71],[324,72],[325,73],[326,74],[327,75],[328,76],[329,77],[330,78],[331,79],[332,80],[333,81],[334,82],[335,83],[336,84],[337,85],[338,86],[339,87],[340,88],[341,89],[221,57],[222,1],[223,90],[224,91],[225,1],[226,92],[227,1],[272,93],[273,94],[274,95],[275,95],[276,96],[277,1],[278,40],[279,97],[280,94],[342,98],[343,99],[344,100],[195,101],[194,102],[193,1],[60,1],[307,1],[189,36],[191,103],[190,104],[133,105],[132,106],[129,1],[130,107],[131,108],[62,109],[124,110],[59,111],[125,112],[127,111],[63,1],[61,113],[198,111],[79,114],[126,115],[128,116],[208,111],[64,117],[199,118],[86,1],[50,119],[49,1],[47,1],[48,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[19,1],[20,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[46,1],[246,120],[260,121],[243,122],[261,123],[270,124],[234,125],[235,126],[233,127],[269,128],[264,129],[268,130],[237,131],[247,132],[257,133],[236,134],[267,135],[231,136],[232,129],[238,132],[239,1],[245,137],[242,132],[229,138],[271,139],[262,140],[250,141],[249,132],[251,142],[254,143],[248,144],[252,145],[265,128],[240,146],[241,147],[255,148],[230,123],[259,149],[258,132],[244,147],[253,150],[256,151],[263,1],[228,1],[266,152],[134,153],[138,154],[135,155],[137,15],[136,15],[176,156],[177,157],[169,15],[178,15],[179,158],[141,159],[172,160],[173,160],[170,160],[171,160],[175,160],[174,160],[168,161],[55,162],[53,163],[65,164],[52,165],[66,164],[54,163],[123,166],[140,167],[139,168],[180,169],[51,165],[181,170],[183,171],[182,163],[214,172],[215,173],[216,174],[217,175],[165,176],[164,177],[163,178],[143,179],[144,180],[145,181],[142,15],[162,182],[89,1],[91,1],[92,1],[93,183],[90,1],[94,19],[97,157],[98,19],[99,19],[100,19],[105,184],[101,19],[102,19],[103,19],[104,19],[96,1],[106,185],[87,157],[95,1],[88,186],[80,1],[85,187],[83,188],[82,189],[84,1],[81,1],[116,19],[113,19],[110,1],[112,19],[114,19],[115,19],[111,19],[117,19],[107,19],[122,190],[120,19],[121,19],[118,19],[108,19],[109,19],[119,19]],"version":"5.9.3"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@operato/menu",
3
3
  "description": "Webcomponent menu following open-wc recommendations",
4
4
  "author": "heartyoh",
5
- "version": "10.9.0",
5
+ "version": "10.10.1",
6
6
  "type": "module",
7
7
  "main": "dist/src/index.js",
8
8
  "module": "dist/src/index.js",
@@ -55,14 +55,14 @@
55
55
  },
56
56
  "dependencies": {
57
57
  "@material/web": "^2.0.0",
58
- "@operato/data-grist": "^10.9.0",
58
+ "@operato/data-grist": "^10.10.1",
59
59
  "@operato/graphql": "^10.7.0",
60
60
  "@operato/i18n": "^10.0.0",
61
- "@operato/input": "^10.9.0",
62
- "@operato/layout": "^10.9.0",
63
- "@operato/popup": "^10.9.0",
64
- "@operato/shell": "^10.9.0",
65
- "@operato/styles": "^10.9.0",
61
+ "@operato/input": "^10.10.1",
62
+ "@operato/layout": "^10.10.0",
63
+ "@operato/popup": "^10.10.0",
64
+ "@operato/shell": "^10.10.0",
65
+ "@operato/styles": "^10.10.0",
66
66
  "@operato/utils": "^10.7.0",
67
67
  "lit": "^3.1.2"
68
68
  },
@@ -98,5 +98,5 @@
98
98
  "prettier --write"
99
99
  ]
100
100
  },
101
- "gitHead": "5282356a0fbf7601a1bd023cf65ba5dc60986337"
101
+ "gitHead": "b40e170b9e6a24e28935300dd2c77d8b8e5ce8a2"
102
102
  }